Bonsoir Chris,
Mes hommages Celeda,
Peut-être une autre solution possible par VBA...
Soit un classeur nommé 'Source.xls' et un autre classeur nommé 'Donnees.xls', les 2 étant ouverts.
Lancez la procédure ci-dessous :
Sub Traduction()
Dim WbkSource As Workbook, WbkDonnees As Workbook
Dim TabSource As Variant, TabDonnees As Variant
Dim L As Long, L2 As Long
Application.ScreenUpdating = False
Set WbkSource = Workbooks('Source.xls')
Set WbkDonnees = Workbooks('Donnees.xls')
'Charge le tableau Donnees dans un tableau variant temporaire TabDonnees
With WbkDonnees.Sheets(1)
L = .Range('A65536').End(xlUp).Row
TabDonnees = .Range(.Cells(1, 1), .Cells(L, 2)).Value
End With
'Charge le tableau source dans un tableau variant temporaire TabSource
With WbkSource.Sheets(1)
L = .Range('A65536').End(xlUp).Row
TabSource = .Range(.Cells(1, 1), .Cells(L, 2)).Value
End With
'Traitement des correspondances
'Pour chaque ligne du tableau Source
For L = 1 To UBound(TabSource, 1)
TabSource(L, 2) = '(Non trouvé)'
'Pour chaque ligne du tableau Donnees
For L2 = 1 To UBound(TabDonnees, 1)
'Si correspondance
If TabSource(L, 1) = TabDonnees(L2, 1) Then
TabSource(L, 2) = TabDonnees(L2, 2)
Exit For
End If
Next L2
Next L
'Mise à jour du classeur Source
With WbkSource.Sheets(1)
.Range(.Cells(1, 1), .Cells(UBound(TabSource, 1), 2)).Value = TabSource
End With
Set WbkSource = Nothing
Set WbkDonnees = Nothing
Application.ScreenUpdating = True
End Sub
Cordialement.
Message édité par: myDearFriend!, à: 06/03/2005 21:56