[VBA] suppression doublons avec condition sur colonnes

swan

XLDnaute Junior
Bonjour,

j'ai cherché dans les archives, mais je n'arrive pas à faire fonctionner les macros que j'ai
trouvé pour mon cas.

En fait, je voudrais supprimer les lignes en double pour lesquelles le nom, le prénom et le code sont identiques.
Par exemple:

nom prénom code
AAAA bbbb 11111
CCCC dddd 22222
AAAA bbbb 11111
EEEE bbbb 11111

donne:

nom prénom code
AAAA bbbb 11111
CCCC dddd 22222
EEEE bbbb 11111

... et ce quel que soit le nombre de lignes.

Attention, la position de nom, prénom, code ne sont pas toujours dans les mêmes colonnes. Je jongle avec plusieurs fichiers et la présentation n'est pas toujours la même.
Par exemple, je peux avoir:

numéro nom prénom code nombre

ou

nom prénom numéro nombre code

ou

code nombre nom prénom numéro

etc...


Existe-t-il une macro qui prend en compte ces conditions?
Une idée serait qu'elle détecte les mot-clés: "nom", "prénom" et "code", puis navigue dans chacune de ces colonnes
et supprime les doublons en conséquence.

Le fichier joint comporte 2 feuilles où les données sont les mêmes mais les colonnes sont interchangeables.
 

Pièces jointes

  • testdoublonscolonnes.xls
    17 KB · Affichages: 164

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : [VBA] suppression doublons avec condition sur colonnes

Bonjour,


Code:
Sub supDoublonsTradi()
   Application.ScreenUpdating = False
   col1 = 2
   col2 = 3
   col3 = 4
   Application.Calculation = xlCalculationManual
   Cells(3, col1).Sort Key1:=Cells(3, col1), Order1:=xlAscending, _
     Key2:=Cells(3, col2), Order2:=xlAscending, _
       Key3:=Cells(3, col3), Order3:=xlAscending, Header:=xlGuess
   For i = Cells(65000, col1).End(xlUp).Row To 4 Step -1
     If Trim(Cells(i, col1)) = Trim(Cells(i - 1, col1)) _
       And Trim(Cells(i, col2)) = Trim(Cells(i - 1, col2)) _
        And Trim(Cells(i, col3)) = Trim(Cells(i - 1, col3)) Then Rows(i).Delete
   Next i
   Application.Calculation = xlCalculationAutomatic
End Sub

JB
 

Pièces jointes

  • doublonscolonnes14.xls
    30 KB · Affichages: 300
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : [VBA] suppression doublons avec condition sur colonnes

>LEROUX ALAIN C12 est affiché plusieurs fois

J'ai modifié le code:

Code:
Sub supDoublonsTradi()
   Application.ScreenUpdating = False
   col1 = 2
   col2 = 3
   col3 = 4
   Application.Calculation = xlCalculationManual
   Cells(3, col1).Sort Key1:=Cells(3, col1), Order1:=xlAscending, _
     Key2:=Cells(3, col2), Order2:=xlAscending, _
       Key3:=Cells(3, col3), Order3:=xlAscending, Header:=xlGuess
   For i = Cells(65000, col1).End(xlUp).Row To 4 Step -1
     If Trim(Cells(i, col1)) = Trim(Cells(i - 1, col1)) _
       And Trim(Cells(i, col2)) = Trim(Cells(i - 1, col2)) _
        And Trim(Cells(i, col3)) = Trim(Cells(i - 1, col3)) Then Rows(i).Delete
   Next i
   Application.Calculation = xlCalculationAutomatic
End Sub



JB
 

swan

XLDnaute Junior
Re : [VBA] suppression doublons avec condition sur colonnes

Merci Boisgontier ça fonctionne! Même si ça répond pas totalement à ma question sur l'interchangeabilité des colonnes, c'est déjà l'essentiel. Je m'en contenterais.

Au fait, à quoi sert la fonction trim exactement dans ce cas?

mDF, j'ai Excel 2003 mais bizarrement ton fichier n'affiche rien...
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] suppression doublons avec condition sur colonnes

Re

Pour explications:
1) La colonne ne servait que pour le filtre élaboré (avec Extraction sans doublons)
2) Le filtre élaboré peut-être utilisé en VBA


Mais comme les autres solutions te conviennent, j'arrête là les explications.
 

swan

XLDnaute Junior
Re : [VBA] suppression doublons avec condition sur colonnes

Ta solution n'est pas inutile. même si je ne sais pas comment faire (j'ai plus l'habitude d'utiliser des macros), au moins je sais qu'on peut le faire de cette manière et peut être plus tard, j'utiliserais cette méthode.

Merci ++
 

Discussions similaires

Statistiques des forums

Discussions
312 024
Messages
2 084 729
Membres
102 642
dernier inscrit
isa_mat