Bonjour,
J'ai changé ActiveCell par Target dans mon explication
Il est curieux ce code, il parcourt toutes les cellules de la colonne 5 de cette feuille alors que peut-être son maximum de lignes remplies est de 1000 (cela signifie que si tu as Excel 2010, tu vas vérifier plus d'un million de cellules) et en 2003, 65536 lignes.
En plus, à ta place, j'ajouterais un Exit For à la ligne 8
Target.Offset(0, -1).ClearContents: Exit For
Parce-qu'après avoir effacé la cellule que tu compares, il y a peu de chance de rencontrer encore une cellule qui réponde aux conditions.
J'ajouterais encore mais c'est peut-être voulu que tu transformes en majuscule la cellule de la colonne 5 de la ligne où a eu lieu la sélection et que tu compares donc cette cellule avec les autres cellules de la colonne 5 donc d'après ton test
If rng.Value = Target.Offset(0, -1).Value And rng.Row <> Target.Row And Target.Offset(0, -1).Value <> "" Then
si une cellule est identique mais de casse différente elle ne sera pas prise en compte comme étant identique.
[EDIT]
Pour éviter un message d'erreur en cas de sélection de plusieurs cellules, j'ajouterais en début de procédure la ligne suivante
If Target.Count > 1 Then Exit Sub
Partager