Excel VBA range(cells(i,1),cells(i,100)).find
Résolu
bibiman23
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
bibiman23 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
bibiman23 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Cells i
- I showkeyplus - Télécharger - Utilitaires
- I love pdf avis ✓ - Forum PDF
- O ou i pour allumer - Forum Facebook
- I sans point - Forum Windows
- Ou i ou a a ✓ - Forum Musique / Radio / Clip
4 réponses
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.
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.
Tu devrais commencer chaque module par :
Option Explicit
Cela éviterais les très nombreuses erreurs que tu fais sur tes variables !!!
Patrice
Option Explicit
Cela éviterais les très nombreuses erreurs que tu fais sur tes variables !!!
Patrice
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.
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.
je récupère la date à laquelle la saisie a été faite, donc la donnée de la deuxième ligne de la colonne où je trouve la donnée saisie que je met dans la colonne saisie du fichier cible.
Pareil pour l'exécution et la livraison qui sont la même chose: donc à mettre dans la colonne exécution du fichier cible (la date).
J'espère qu'avec le jeux de test c'est plus claire!
NB J'ai mis mon code dans le fichier source!
Donc je lis dans le fichier source la colonne toto à chaque ligne (i), lue je vais chercher la chaine de caractères Saisie, la fonction find me renvoie le n° de colonne (j) de la cellule contenant Saisie.
Je récupère la date (qui est la donnée de la seconde ligne du fichier à la j ème colonne.
cette date est mise dans le fichier cible dans la colonne des saisies et à la ligne de la même transaction (toto) que celle du fichier source.
Pour joindre un fichier, tu crées un lien à l'aide de https://www.cjoint.com/
et tu recopies le lien dans ton prochain message.
Mytå