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)
Bonjour, Ce code serait parfait pour ce que je veux en faire, mais à la place de colorier les doublons en rouge, je voudrais que la macro mette sur le même ligne, dans la colonne ‘BO’, l’information ‘Doublon’ mais je n’y arrive pas, auriez-vous une suggestion (j’ai besoin de garder les anciennes lignes pour des stats mais ne souhaite conserver que la ligne ‘active’. Merci :) Christophe