De rien,
Mais comme cela, cela permet de pourvoir visionner et comprendre le VBA d’après une formule.
Mais sache quand même que ta solution est la meilleure est plus rapide dans ce cas là.
Une formule est plus rapide que le VBA
A moins de le coder d’une autre façon en utilisant soit le “dictionnaire” ou les “tableaux”
Je vais regarder si je trouve le temps de faire le même montage avec les deux versions, juste pour info
Une version avec l’ancienne macro,
et avec une version Dictionnaire
MACRO DICTIONNAIRE:
Sub DoublonsDictionnaire()
Dim i%, Dl%
Dim clé$
Dim Ws As Worksheet
Dim c As Variant
Dim MonDico
'**************************************************
'* MODIFIER LE NOM DE LA FEUILLE DANS LE SET Ws *
'**************************************************
Set Ws = Worksheets("131017_ABPREST_1-15") 'Initialisation feuille travail
Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne non vide
Ws.Range("J2:J" & Dl).Value = "" 'Efface les données colonne H
Ws.Range("A2:J" & Dl).Interior.Color = xlNone 'Remise en mode normal des couleurs,fonts et type police
Ws.Range("A2:J" & Dl).Font.Color = vbBlack
Ws.Range("A2:J" & Dl).Font.Bold = False
Set MonDico = CreateObject("Scripting.Dictionary") 'Création dictionnaire
For Each c In Range("a2:a" & Dl) 'boucle sur les lignes
If c.Offset(, 4).Value <> "" Then 'Si la cellule NOM n'est pas vide
clé = c.Offset(, 4).Value & c.Offset(, 5) & c.Offset(, 6) 'la clé est = à la cellule des colonnes 5,6,7
MonDico.Item(clé) = MonDico.Item(clé) + 1 'place la clé en mémoire
End If
Next c
For Each c In Range("a2", [a65000].End(xlUp)) 'à la fin de la recherche, boucle sur les clé
clé = c.Offset(, 4).Value & c.Offset(, 5) & c.Offset(, 6)
If MonDico.Item(clé) > 1 Then 'si la clé est Sup à 1 (donc doublons)
c.Offset(, 9).Value = "Doublon" 'il inscrit doublons en colonne 8
c.Resize(, 10).Interior.Color = vbYellow 'colore la ligne en jaune
c.Resize(, 10).Font.Color = vbRed 'Couleur police Rouge
c.Resize(, 10).Font.Bold = True 'police en gras
End If
Next c
End Sub
Aucune différence
Dés fois quand tu montes un code et que lance, le CLEARCONTENTS bug
alors en plus il n’y a que deux parenthèses à mettre ( donc des bytes en moins sur le poids, mais c’est minime)