Re,
Si j'ai bien compris, ça devrait donner ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim CR As Byte 'déclare la variable CR (Colonne de référence)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TS As Variant 'déclare la variable TS (Tableau Source)
Dim TR As Variant 'déclare la variable TR (Tableau de Recherche)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)
Dim PL As Range 'déclare la variable PL (PLage)
Set O = Worksheets("BDD_CB") 'définit l'onglet O
Set PL = O.Range("A1") 'initialise la plage PL
CR = 5 'définit la colonne de référence (colonne E)
DL = O.Cells(Application.Rows.Count, CR).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne de référence CR
TS = O.Range(O.Cells(1, CR), O.Cells(DL, CR)) 'définit le tableau source TS (données en colonne E)
CR = 2 'définit la colonne de référence (colonne B)
DL = O.Cells(Application.Rows.Count, CR).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne de référence CR
TR = O.Range(O.Cells(1, CR), O.Cells(DL, CR)) 'définit le tableau de recherche TR (données en colonne B)
For I = 1 To UBound(TS, 1) 'boucle 1 : sur toutes les lignes I du tableau source TS
For J = 1 To UBound(TR, 1) 'boucle 2 : sur toutes les lignes J du tableau de recherche TR
If TR(J, 1) = TS(I, 1) Then 'condition : si la donnée en ligne J colonne 1 du tableau de recherche TR est égale à la donnée en ligne I colonne 1 du tableau source TS
Set PL = IIf(PL.Address(0, 0) = "A1", O.Cells(J, "B"), Application.Union(PL, O.Cells(J, "B"))) 'redéfinit la plage PL
Exit For 'sort de la boucle 2
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
PL.Delete 'supprime la plage PL
CR = 3 'définit la colonne de référence (colonne C)
DL = O.Cells(Application.Rows.Count, CR).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne de référence CR
TS = O.Range(O.Cells(1, CR), O.Cells(DL, CR)) 'définit le tableau source TS (données en colonne C)
CR = 2 'définit la colonne de référence (colonne B)
DL = O.Cells(Application.Rows.Count, CR).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne de référence CR
TR = O.Range(O.Cells(2, CR), O.Cells(DL, CR)) 'définit le tableau source TS (données en colonne C)
For I = 1 To UBound(TS, 1) 'boucle 1 : sur toutes les lignes I du tableau source TS
For J = 1 To UBound(TR, 1) 'boucle 2 : sur toutes les lignes J du tableau de recherche TR
If TR(J, 1) = TS(I, 1) Then 'condition : si la donnée en ligne J colonne 1 du tableau de recherche TR est égale à la donnée en ligne I colonne 1 du tableau source TS
O.Cells(J, "B").Value = O.Cells(I, "E").Value 'remplace la donnée ligne J colonne B par la donnée ligne J colonne E
Exit For 'sort de la boucle 2
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
MsgBox "Données traitées !" 'message
End Sub