Médiaforma

VBA Excel – Recherche de doublons dans une colonne

Print Friendly, PDF & Email

Cette section va vous présenter un code utile qui pourra certainement vous servir un jour ou l’autre. Le but du jeu est de trouver les cellules qui apparaissent en double (ou plus) dans la colonne où se trouve la cellule active. Il n’y a rien de bien compliqué : il suffit de comparer tour à tour toutes les cellules de la colonne à la première, puis à la deuxième, puis à la troisième, ainsi de suite jusqu’à l’avant-dernière cellule de la colonne. Ici, la couleur d’arrière-plan de la cellule qui apparait en double sera modifiée. Mais rien ne vous empêche de modifier le code pour faire tout autre chose si vous le souhaitez. Voici le code utilisé :

Sub RechercherDoublons()

  Dim col, nbCells, i, j

  col = ActiveCell.Column

  nbCells = Application.WorksheetFunction.CountA(Range(Columns(col), Columns(col)))

  For i = 1 To nbCells - 1

    For j = i + 1 To nbCells

      If Cells(i, col) = Cells(j, col) Then

        Cells(j, col).Interior.Color = RGB(255, 0, 0)

      End If

    Next j

  Next i

End Sub

Examinons ce code.

La première ligne définit les variables qui seront utilisées dans le code :

Dim col, nbCells, i, j

La deuxième ligne stocke dans la variable col la colonne dans laquelle se trouve la cellule active. C’est dans cette colonne que les doublons seront recherchés :

col = ActiveCell.Column

La troisième ligne compte le nombre de cellules non vides de la colonne col. Le résultat est stocké dans la variable nbCells :

nbCells = Application.WorksheetFunction.CountA(Range(Columns(col), Columns(col)))

Le bloc de code suivant utilise deux boucles For Next imbriquées. La première parcourt les cellules de la première (1) à l’avant-dernière (nbCells-1) :

For i = 1 To nbCells - 1

La seconde parcourt les cellules d’indices compris entre i+1 et nbCells :

For j = i + 1 To nbCells

Si les cellules d’indice i, col et j, col sont identiques, un doublon a été trouvé :

If Cells(i, col) = Cells(j, col) Then

Dans ce cas, la cellule d’indice j, col est colorée en rouge :

Cells(j, col).Interior.Color = RGB(255, 0, 0)
Vous avez aimé cet article ? Partagez-le avec vos réseaux...