VB et Excel, supprimer les doublons

Fermé
Berty59 - 12 avril 2009 à 19:20
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 13 avril 2009 à 13:49
Bonjour,
Malgré de nombreux posts déjà effectués a ce sujet, aucun ne m'a été utile (il faut dire aussi que moi et VB sommes pa tro copain). Je dispose d'un fichier excel dans le lequel se trouve toute une liste de gens, seulement voilà, il y a des gens qui s'y retrouvent plusieurs fois ce qui engendre donc des lignes inutiles et a supprimer.
Je dois utiliser VB6 et je recherche donc le code qui permettrait de comparer leurs identifiant (un numéro) et, si ces identifiants sont égaux alors il faudrait comparer l'adresse de ces deux personnes et cette fois encore si ces deux adresses sont égales alors seulement garder une seule de ces lignes (supprimer les autres lignes semblables). Mon fichier excel est sous cette forme :

A1 B1 C1
JEAN 1255 45 rue X
AXEL 1587 34 rue Y
YVES 2588 2 rue Y
YVES 2588 2 rue Y
YVES 2588 2 rue Y
PASCAL 2812 9 rue H
PASCAL 5998 8, rue M
PASCAL 5998 8, rue M
XAVIER 1234 7, rue J

Vous l'avez compris je cherche donc à supprimer les doublons tout en conservant, bien sûr au moins une ligne de celles qui sont pareilles !
J'espère (mais je n'en doute pas) que quelqu'un sera en mesure de m'aider. Merci.
A voir également:

2 réponses

Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
12 avril 2009 à 22:31
Salut,

Colles ce code dans un module et associes le à un bouton, supprime les doublons en fonction de deux critères le n° identique colonne B et l'adresse colonne C

Sub Suprime_Doublons()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
[A1].Sort Key1:=Range("B1"), Order1:=xlAscending, _
Key2:=Range("C1"), Order2:=xlDescending, Header:=xlGuess
For i = [A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 3) = Cells(i - 1, 3) Then Rows(i).Delete
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

A+
0
Merci Mike, mais j'ai testé ton code et il ne fonctionnait pas... en tout cas ça a créé des problèmes avec mon fichier Excel (ou, plus probable, je m'en suis mal servi) mais bon, tout refonctionne correctement, rien de grave. J'ai trouvé une ligne de code en utilisant les macros associées a Excel qui a (presque) résolu mon problème de doublons.
J'utilise cette ligne de code :

Private Sub Supprimdoublons_Click()

Range("A1:C10").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

End Sud


Et de toutes mes lignes identiques il n'en a conserver qu'un seul exemplaire. Par contre je viens de tomber sur une nouvelle contrainte dont voici un exemple :

A1 B1 C1 D1
PASCAL 2588 25 rue Y PARIS
JEAN 5896 29 rue J BORDEAUX
KARL 5522 29 rue J BORDEAUX
GORDON 7885 44 rue K NANTES
YVAN 5558 25 rue Y LILLE

Avec dans la colonne A : le nom
dans la colonne B : le n°
dans la colonne C : l'adresse
dans le colonne D : la ville

alors voilà, le problème c'est que mon application est faite dans le cadre de livraisons. Donc on ne veut pa livrer 2 exemplaires à une même adresse comme c'est ici le cas pour l'adresse 29 rue J ou JEAN et KARL sont abonnés, je recherche donc le code qui permettrait dans les cas où la même adresse est présente dans la même ville de ne garder qu'une seule ligne de cette adresse.
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
13 avril 2009 à 13:49
Salut,

Récupères le fichier exemple avec le lien ci-dessous pour tester la suppression des doublons, feuille 1 pour ta première demande et feuille2 Livraison pour la deuxième

: https://www.cjoint.com/?epdBs3CR6x

A+
0