Posez votre question Signaler

Excel VBA range(cells(i,1),cells(i,100)).find [Résolu]

bibiman23 27Messages postés 8 juillet 2009Date d'inscription 21 novembre 2011Dernière intervention - Dernière réponse le 21 nov. 2011 à 07:50
Bonjour,
J'ai un petit souci: le numéro de la ligne, sur laquelle je fais une recherche avec find(), est la variable i.
Je cherche donc une donnée, dans cette ligne (il y a une boucle for avant). Mais Excel pas vouloir erreurs 93, 91, 424,138..
Je dois signaler que je manipule deux fichiers Excel
J'ai essayé ceci mais rien..
Dim ligne_source_transaction As Range
Set ligne_source_transaction = ActiveSheet.UsedRange.Rows(i & ":" & i)
col_source_saisie = ligne_source_transaction.Find(What:=Saisie, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Row
Au départ j'avais ceci:
Dim ws201 As Worksheet
col_source_Transaction = 3
For i = 2 To 2000
code_transaction = ws201.Cells(i, col_source_Transaction).Value 'celui-là, il marche!
'Récupération du code de transaction dans le fichier cible (dans la première colonne)
On Error Resume Next
ligne_transaction_cible = [H2:H5000].Find(What:=code_transaction, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Row 'celui-ci aussi, il marche!
On Error Resume Next
col_source_saisie = ws201.Range(Cells(i, 11), Cells(i, 100)).Find(What:=Saisie, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Row 'et là ça ne marche plus!
Merci d'avance pour votre aide.
<config>Windows XP
Lire la suite 

Excel VBA range(cells(i,1),cells(i,100)).find »

11 réponses
Réponse
+0
moins plus
Bonjour michel,

Merci pour ta réponse rapide!
Je te cite:

Bonjour

merci de mettre tes codes entre les balises <<> (onglet à droite du message ) pour le rendre un minimum lisible...

col_source_saisie = ws201.Range(Cells(i, 11), Cells(i, 100)).Find(What:=Saisie, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Row 


Range(Cells(i, 11), Cells(i, 100))=
 tu cherches sur une ligne (la ligne i) et tu demande la ligne .... (.row) 


d'autre part, si "saisie" se trouve en colonne 11, tu n'auras pas de résultat: il faut que tu utilises le parametre "after".... ici peut-^tre cells(i,10)

Tu es sur une ligne et tu demandes un ordre par colonne?



--
Michel

Tu as raison c'est bien find().column qu'il faut que je mette.
Alors pour faire simple le numéro de la ligne est i.
Je cherche à récupérer le n° de la colonne de la chainede caractère Saisie (qui est une variable).
As tu une astuce?
Merci encore pour tes remarques.
bibiman23- 20 nov. 2011 à 22:12
http://cjoint.com/?AKuwmJffDrd
bibiman23- 20 nov. 2011 à 22:13
comment ça se fait, que je vois que les commentaires que je met et pas celles des autres utilisateurs, qui ont la gentillessse de me répondre?
bibiman23- 20 nov. 2011 à 22:39
j'ai pu avancer un peu, il fallait que j'active la worksheet du fichier source.
Parce que dans mon code j'ouvre le fichier cible, et j'ai beau lui demander de selectionner une Range dans l'autre fichier, VBA pas vouloir.
Donc il fallait réactiver le fichier source.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour bibiman23,
Juste au passage, ou en êtes-vous, est-ce que le problème est résolu ?
Ajouter un commentaire
Réponse
+0
moins plus
Tu devrais commencer chaque module par :
Option Explicit

Cela éviterais les très nombreuses erreurs que tu fais sur tes variables !!!
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir Le Pingou,

Je demande l'ouverture du fichier cible, dans lequel je màj les données.
Le fait de réactiver la feuille du fichier source, fait que la sélection de range est possible, donc problème résolu.

Merci à tous pour votre aide.

Je ne la connais pas l'option explicite, mais je vais creuser le sujet, merci Patrice.
Ajouter un commentaire
Ce document intitulé « Excel VBA range(cells(i,1),cells(i,100)).find » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?