Voilà une exposition de mon problème concernant le FOR sous VBA...
J'ai bidouillé ce bout de code, afin de consulter sur chaque ligne d'un tableau, le nom du client, et rechercher dans un classeur autre (qui contient le devis du client en question), le montant du devis et ainsi le reporter dans mon tableau de "base de donnée".
Aucun soucis d'ouverture fichier etc (j'ai tenté avec des fonctions pour consulter le classeur même fermé, mais trop "compliqué" à mon niveau, et sans comprendre, je n'aime pas appliquer...
Cependant, la procédure "FOR" s'effectue bien pour ma première ligne, me retranscrit bien le montant dans la BD, mais la procédure n'enchaîne pas sur la deuxième, troisième, quatrième...lignes. L'instruction ne s'execute que sur ma première ligne.
Je me demande alors si le "FOR" est la bonne fonction à executer (je pense par exemple à WHILE)...
Si vous avez des idées, des conseils, je suis ouvert, et à l'écoute !
Merci à tous
(Par ailleur, la variable Lg pourrait indiquer la dernière ligne sur laquelle effectuer l'instruction. Mais je n'arrive pas à l'insérer à mon "code")...
Code:
Dim ligne As Integer
Dim numdevis As String, nomclient As String, Chemin As String, Fichier As String, Lg As String
Dim Adresse As String
Lg = Sheets("BDdevis").Cells(65536, 2).End(xlUp).Row + 1
For ligne = 3 To 20 Step 1
nomclient = Range("A" & ligne).Value
numdevis = Range("D" & ligne).Value
Adresse = nomclient & " " & numdevis
Do
Chemin = "C:\Users\Cosimo\Desktop\Devis\Particuliers\"
Fichier = Adresse & ".xls"
Workbooks.Open (Chemin & Fichier)
Range("F40").Copy
Workbooks("BD - Copie").Activate
Sheets("BDdevis").Activate
Range("H" & ligne).PasteSpecial xlPasteValuesAndNumberFormats
Workbooks(Dir(Chemin & Fichier)).Close savechanges:=False
Loop
Next
Si j'ai bien tout compris à ta demande, le "Do...Loop", n'est pas nécessaire. Voici donc le code modifié, à tester :
VB:
Dim ligne As Integer
Dim numdevis As String, nomclient As String, Chemin As String, Fichier As String, Lg As String
Dim Adresse As String
Lg = Sheets("BDdevis").Cells(65536, 2).End(xlUp).Row + 1
Chemin = "C:\Users\Cosimo\Desktop\Devis\Particuliers\"
For ligne = 3 To 20 Step 1
nomclient = Range("A" & ligne).Value
numdevis = Range("D" & ligne).Value
Adresse = nomclient & " " & numdevis
Fichier = Adresse & ".xls"
Workbooks.Open (Chemin & Fichier)
Range("F40").Copy
Workbooks("BD - Copie").Activate
Sheets("BDdevis").Activate
Range("H" & ligne).PasteSpecial xlPasteValuesAndNumberFormats
Workbooks(Dir(Chemin & Fichier)).Close savechanges:=False
Next