@ BrunoInspecteur Columbo, il s'agit sans doute d'une erreur.
C'est aussi peut être ce que recherche à voir Luno.
Je mets le fichier (à voir si ok)
Bruno
Effectivement inspecteur,et pour s'assurer que la macro fonctionne bien, on peut s'amuser à modifier dans l'onglet BASE, une ou deux références qu'on pourrait nommer BRUNO & COLUMBO sur deux lignes, que la macro ne devrait pas trouver dans la feuille REFERENCEBonjour Luno&Bruno,
J'ai compris qu'on devait mettre en couleur les lignes de l'onglet Base lorsqu'il ne trouve pas la combinaison Segment+Référence.
Je rejoins Luno, lorsqu'on lance la macro, elle devrait retourner aucun résultat coloré pour cet exemple car toutes les combinaisons de l'onglet Base sont présentes dans l'onglet Référence.
Sub test()
Set dico = CreateObject("Scripting.Dictionary")
With Feuil2
bas = .[B65000].End(3).Row
For k = 2 To bas
tx = .Cells(k, 1) & .Cells(k, 2)
dico.Item(tx) = dico.Item(tx)
Next
End With
For k = 2 To [B65000].End(3).Row
tx = Cells(k, 2) & Cells(k, 4)
If Not dico.Exists(tx) Then Range("A" & k & ":E" & k).Interior.Color = 49407
Next
Range("A1:E" & bas).AutoFilter Field:=3, Criteria1:=RGB(255, _
192, 0), Operator:=xlFilterCellColor
End Sub
Bonjour Bruno, Bonjour Columbo,Re, bonjour les amis,
Hier soir j'ai écris la macro dans la précipitation sans trop réfléchir.
Je remets le fichier avec une macro performante.
J'utilise le dictionnaire de vba.
Je laisse le soin à Columbo de décortiquer le code.
Bruno
ici le code modifié
VB:Sub test() Set dico = CreateObject("Scripting.Dictionary") With Feuil2 bas = .[B65000].End(3).Row For k = 2 To bas tx = .Cells(k, 1) & .Cells(k, 2) dico.Item(tx) = dico.Item(tx) Next End With For k = 2 To [B65000].End(3).Row tx = Cells(k, 2) & Cells(k, 4) If Not dico.Exists(tx) Then Range("A" & k & ":E" & k).Interior.Color = 49407 Next Range("A1:E" & bas).AutoFilter Field:=3, Criteria1:=RGB(255, _ 192, 0), Operator:=xlFilterCellColor End Sub