Comment mettre en évidence les valeurs en double avec VBA ?

Lorsque vous travaillez avec des données volumineuses, les valeurs en double sont toujours un problème. La plupart du temps, j’utilise l’option de suppression des doublons pour supprimer toutes ces valeurs. Et, je suis sûr que vous faites la même chose.

Mais supprimer ces valeurs en double ou simplement les compter ne règle jamais le problème. L’important est d’examiner toutes les valeurs en double avant de les supprimer.

Oui c’est vrai. Une fois que vous avez mis en surbrillance toutes ces valeurs, vous pouvez vérifier, puis vous pouvez les supprimer. Aujourd’hui, dans cet article, j’aimerais partager avec vous 4 codes VBA différents pour mettre en évidence les valeurs en double.

Et le fait est que ces codes peuvent mettre en évidence des cellules de différentes manières. Vous pouvez simplement les copier-coller dans votre éditeur VBA et les utiliser.

1. Dans chaque ligne

Ce code VBA vérifie toutes les cellules d’une ligne et met en évidence toutes les cellules qui sont dupliquées dans une ligne. En termes simples, si une ligne a la valeur « 522 » deux fois, elle sera considérée comme un doublon. Mais si l’autre 522 est dans une autre rangée, il sera considéré comme unique.

mettre en surbrillance les valeurs en double de chaque ligne à l'aide du code VBA
Sub DuplicateValuesFromRow()

'Declare All Variables.
Dim myCell As Range
Dim myRow As Integer
Dim myRange As Range
Dim myCol As Integer
Dim i As Integer

'Count Number of Rows and Columns
myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count

'Loop Each Row To Check Duplicate Values and Highlight cells.
For i = 2 To myRow
Set myRange = Range(Cells(i, 2), Cells(i, myCol))
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 3
End If
Next
Next

End Sub

Si vous parcourez cette macro, vous constaterez que nous avons utilisé une boucle pour vérifier chaque ligne pour les valeurs en double et les mettre en évidence avec une couleur.

Les points importants

  1. Vos données ne doivent pas contenir de ligne ou de colonne vide, sinon elles ignorent cette cellule.
  2. La cellule de départ de vos données doit être la cellule « A1 ». Et si vous voulez ajuster le point de départ, vous devez ajuster le code.
  3. La première ligne et la première colonne de votre feuille de données doivent être en-tête.

2. Dans chaque colonne

Ce code VBA vérifie toutes les cellules d’une colonne et met en évidence toutes les cellules qui sont dupliquées dans chaque colonne. En termes simples, si une colonne a la valeur « 231 » deux fois, elle sera considérée comme un doublon. Mais si un autre « 231 » se trouve dans une autre colonne, il sera considéré comme unique.

mettre en surbrillance les valeurs en double de chaque colonne à l'aide du code VBA
Sub DuplicateValuesFromColumns()

'Declare All Variables
Dim myCell As Range
Dim myRow As Integer
Dim myRange As Range
Dim myCol As Integer
Dim i As Integer

'Count number of rows & column
myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count

'Loop each column to check duplicate values & highlight them.
For i = 2 To myRow
Set myRange = Range(Cells(2, i), Cells(myRow, i))
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 3
End If
Next
Next

End Sub

3. Dans la sélection

Supposons que vous souhaitiez simplement mettre en surbrillance les cellules avec des valeurs en double de la sélection, ce code peut vous aider. Pour utiliser ce code, il vous suffit de sélectionner une plage de cellules et d’exécuter ce code. Il vérifie chaque cellule avec la sélection et la met en surbrillance en rouge si une cellule a une valeur en double.

mettre en surbrillance les valeurs en double de la sélection à l'aide du code VBA
Sub DuplicateValuesFromSelection()
Dim myRange As Range
Dim i As Integer
Dim j As Integer
Dim myCell As Range

Set myRange = Selection
For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 3
End If
Next
End Sub

4. Données entières

Si vous disposez d’un grand ensemble de données, vous pouvez utiliser ce code de macro pour vérifier l’intégralité des données et mettre en évidence les valeurs en double. Ce code parcourt chaque cellule une par une et applique la couleur rouge à toutes les cellules qui sont des doublons.

Sub DuplicateValuesFromTable()

Dim myRange As Range
Dim i As Integer
Dim j As Integer
Dim myCell As Range

Set myRange = Range(“Table1”)

For Each myCell In myRange
If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then
myCell.Interior.ColorIndex = 3
End If
Next

End Sub

Remarque importante : dans le code ci-dessus, nous avons utilisé le nom de table « Table1 », vous pouvez modifier ce nom à partir du code. Ou, si vous avez une plage, vous pouvez simplement utiliser le nom de la plage.

[Astuce bonus] Compter les valeurs en double

Ce code vous aide à compter le nombre de valeurs en double à partir de la sélection. Lorsque vous exécutez ce code, il renvoie une boîte de message indiquant le nombre.

Sub CountDuplicates()

Dim i As Integer
Dim j As Integer
Dim myCell As Range
Dim myRange As Integer

myRange = Range("Table1").Count

j = 0

For Each myCell In Range("Table1")
If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then
j = j + 1
End If
Next

MsgBox j

End Sub

Encore une fois dans le code ci-dessus, nous avons utilisé un nom de table et vous le modifiez ou le remplacez par une plage.

Exemple de fichier

Téléchargez cet exemple de fichier ici pour en savoir plus.

Conclusion

Dans différentes situations, nous devons vérifier les valeurs en double de différentes manières. Et, tous les codes ci-dessus peuvent vous être utiles à cet égard. Si vous le souhaitez, vous pouvez modifier la couleur de surbrillance à partir des codes à l’aide du numéro d’index de couleur.

Maintenant, aidez-moi avec une chose.

Où pouvons-nous améliorer ces codes ?

S’il vous plaît partagez vos opinions avec moi dans la section des commentaires, j’aimerais avoir de vos nouvelles. Et n’oubliez pas de partager cette astuce avec vos amis.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *