Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher

PagePlus (PAO)

Windows/système
PhotoImpact
Conception web : les bases
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Astuces
Orthographe
Rédaction
Organisation
Produits/services malins
Outils
Ouvrages
Modèles
Macros
Liens
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
Offres d'emploi

Evénements métier
Echos de presse, comptes-rendus

Echanger

Forums
Chater en direct

© Nadège Guilbert
Le contenu de ce site
est régulièrement déposé auprès de la SGDL
Reproduction interdite
sans le consentement
écrit de l'auteur



Imprimer la page

Macros / VBA > Excel

26-Mar-2005

 

 

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