|
Choix d'une méthode
Sans macro
Supprimer les doublons en colonne à l'aide d'une fonction
Supprimer les doublons sur plusieurs colonnes
Avec macro
Supprimer les doublons en colonne
Supprimer les doublons en ligne
|
Supprimer les doublons sur une colonne
Edgard B. : Je dispose d'un fichier sous Excel et je
souhaiterais supprimer tous les doublons. Comment faire ?
Voici une macro qui devrait résoudre le problème.
Cette macro compare, ligne après ligne, le contenu d'une
colonne donnée (par exemple, une colonne D comportant des
adresses emails).
Si la ligne suivante contient la même valeur, la ligne est
supprimée. Sinon la macro récupère son contenu
et teste ce dernier avec celui de la ligne suivante et ainsi de
suite.
Elle affiche, pour commencer, une petite boîte de dialogue
: saisissez l'adresse de la première cellule sur laquelle
vous souhaitez opérer la comparaison (ex : D2) et validez
!
Nb : par mesure de précaution, sauvegardez au préalable
votre document original.
Ouvrez l'éditeur VBA (Alt F11), repérez le nom
du classeur à examiner et copiez les instructions suivantes
dans ThisWorkBook.
|
Macro
|
Commentaire
|
|
Sub supprimeDoublons()
|
|
|
MaCellule=inputbox("Veuillez saisir l'adresse de la
1ere cellule à comparer")
|
Récupère l'adresse de la cellule dans une
variable MaCellule
|
|
Range(MaCellule).Select
|
Sélectionne la cellule indiquée
|
|
Activecell.currentregion.Sort Key1:=Range(MaCellule), Order1:=xlAscending,
Header:=xlYes
|
Trie le tableau sur cette celule
|
|
donnee1 = ActiveCell
|
mémorise le contenu de la cellule en cours et l'affecte
à donnee1
|
|
ActiveCell.Offset(1, 0).Select
|
descend d'une ligne
|
|
While ActiveCell <> ""
|
tant que la cellule n'est pas vide
|
|
If ActiveCell = donnee1 Then
|
vérifie si le contenu de la cellule en cours est
égal à donnee1
|
|
ActiveCell.EntireRow.Delete
|
si oui, supprime la ligne entière
|
|
ActiveCell.Offset(-1, 0).Select
|
remonte d'une ligne
|
|
donnee1 = ActiveCell
|
mémorise à nouveau le contenu de la cellule
|
|
ActiveCell.Offset(1, 0).Select
|
descend d'une ligne
|
|
Else
|
sinon
|
|
donnee1 = ActiveCell
|
mémorise le contenu de la cellule en cours de la
ligne suivante et l'affecte à donnee1
|
|
ActiveCell.Offset(1, 0).Select
|
descend d'une ligne
|
|
End If
|
fin de la vérification
|
|
Wend
|
fin de la boucle (on répète les instructions
sur fond rose tant que la cellule en cours d'examen contient
quelque chose). Sinon, le programme s'arrête
|
|
End Sub
|
|
|
Niveau
|