Sub Correspondances()
Set dico = CreateObject("Scripting.dictionary")
Dim TabSource() As Variant
Dim TabFinal() As Variant
Dim WbSource As Workbook
Dim WbDest As Workbook
Dim WsSource As Worksheet
Dim WsDest As Worksheet
'on défini le classeur actif
Set WbDest = ActiveWorkbook
Set WsDest = ActiveSheet
fin = WsDest.Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la colonne A
TabFinal = WsDest.Range("A1:B" & fin).Value 'on met 2 colonnes dans un tableau vba
'ouvrir classeur source
nomClass = Application.GetOpenFilename()
Workbooks.Open Filename:=nomClass
Set WbSource = ActiveWorkbook
Set WsSource = ActiveSheet
'récuperer les données dans un tableau
TabSource = WsSource.UsedRange.Value
For i = LBound(TabSource, 1) To UBound(TabSource, 1) 'pour chaque ligne
If Not dico.exists(TabSource(i, 1)) Then 'on créé une entrée dictionnaire avec l'auteur comme valeur
dico.Add TabSource(i, 1), TabSource(i, 2)
End If
Next i
WbSource.Close savechanges:=False 'on peut fermer le fichier source sans sauvegarde
For i = LBound(TabFinal, 1) To UBound(TabFinal, 1) 'pour chaque ligne
TabFinal(i, 2) = dico(TabFinal(i, 1)) 'on affecte l'auteur
Next i
WsDest.Range("A1").Resize(UBound(TabFinal, 1), 2) = TabFinal 'on colle le résultat
End Sub