Oui tu peux utiliser la fonction find dans une boucle
Ex:
Dim fichier1annee, fichier2annee, fichierresultat as Workbook
Set fichierresultat = ActiveWorkbook
Set fichier1annee = 'fonction d'ouverture du classeur 1ere annee
Set fichier2annee = 'fonction d'ouverture du classeur 2eme annee
With fichierresultat.Sheets(1)
For i = 2 to .Cells(.Rows.Count,3).End(xlUp).Row
Set recherche = fichier1annee.Sheets(1).Columns(1).Find(what:=.Cells(i,3).Value, lookat:=xlWhole)
If not c is nothing then
For j = 3 to 9
.Cells(i,j).Value = recherche.Offset(0,j-2).Value
Next j
End If
Set recherche = fichier2annee.Sheets(1).Columns(1).Find(what:=.Cells(i,3).Value, lookat:=xlWhole)
If not c is nothing then
For j = 3 to 9
.Cells(i,j).Value = recherche.Offset(0,j-2).Value
Next j
End If
Next i
End With
Ca implique quand meme que les colonnes de matière soient les memes et dans le meme ordre dans les fichiers source et arrivée sinon c'est toujours possible mais ça complexifie beaucoup