Re,
Dim lg As Integer (lg abréviation de quoi ?) pourquoi integer puisqu'il s'agit de chiffres et de lettres Z013685 ?
Non "lg" est une variable qui contient le numéro de ligne dans la colonne A du fichier B. Cette ligne est trouvée dans la fonction Worksheetfunction. Il s'agit donc de chiffre.
Integer permet d'aller jusque lg = 32867
Ensuite dans la routine, je ne comprends pas la sélection .Range("B" & lg + 2)
Dans la ligne worksheetfunction, on se sert de la plage A3 à Ax. Si le numéro ID est trouvé en A3 (soit la première ligne de la plage), "lg" vaudra 1. Si l'on ne met pas "lg+2", les données seront pêchées donc sur la ligne 1 du fichier B au lieu de la ligne 3.
ni comment "il" sait que c'est dans le fichierA qu'il faut coller l'information
La ligne --> With ThisWorkbook.Sheets("Feuil1") identifie le fichier A et feuille 1 (Si tout le code est bien placé dans le fichier A, bien sûr !)
L'instruction Range("D" & ID.Row) dispose d'un point juste avant qui identifie qu'il s'agit du fichier A.
Pour comprendre :
With ThisWorkbook.Sheets("Feuil1")
FichierB.Sheets("Feuil1").Range("B" & lg + 2).Copy .Range("D" & ID.Row)
end with
donne le même résultat que ceci :
FichierB.Sheets("Feuil1").Range("B" & lg + 2).Copy ThisWorkbook.Sheets("Feuil1").Range("D" & ID
On aurait donc pu écrire le code de cette manière mais c'est plus compliqué. Donc comme pour les maths on met en évidence ce qui est commun.
Amicalement