VBA
Résolu/Fermé
Bilux
-
9 juil. 2008 à 09:28
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 - 9 juil. 2008 à 10:22
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 - 9 juil. 2008 à 10:22
7 réponses
Steefif
Messages postés
485
Date d'inscription
lundi 7 juillet 2008
Statut
Membre
Dernière intervention
15 février 2013
19
9 juil. 2008 à 09:31
9 juil. 2008 à 09:31
j'ai deja vu une solution proposée je ne sais plus ou.
cherche sur le net avec "supprimer des doublons avec excel"
tu devrais trouver.
*
edit
voilà ici
http://www.top-assistante.com/macros/doublons.php
une macro qui te fait ca
ell eest commentée
cherche sur le net avec "supprimer des doublons avec excel"
tu devrais trouver.
*
edit
voilà ici
http://www.top-assistante.com/macros/doublons.php
une macro qui te fait ca
ell eest commentée
je peux utiliser le filtre élaboré, mas le problémes c'est :
- que premierement je n'ai pas confiance en ce filtre, je préfére faire une macro moi même
- deuxiemement, le filtre change les numéro de ligne !!!!!!!!!!!!!
- que premierement je n'ai pas confiance en ce filtre, je préfére faire une macro moi même
- deuxiemement, le filtre change les numéro de ligne !!!!!!!!!!!!!
Steefif
Messages postés
485
Date d'inscription
lundi 7 juillet 2008
Statut
Membre
Dernière intervention
15 février 2013
19
9 juil. 2008 à 09:55
9 juil. 2008 à 09:55
dans le lien que j'ai passé, c'ets d'une macro qu'il s'agit.
Merci, c'est pas trés différent de la macro que j'ai poster au début.
finalement j'ai fait ceci :
' Trier la colonne A
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'supprimer les doublons
Dim Cel As Range
Set Cel = Sheets(2).Range("A1")
i = 0
Do While Cel.Offset(i) <> ""
If Cel.Offset(i) = Cel.Offset(i + 1) Then 'supprimer les lignes double
Cel.Offset(i + 1).EntireRow.Select
Selection.Delete Shift:=xlUp
Else
i = i + 1
End If
Loop
je suppriume les ligns directement, sa m'évite de retrier une nouvelle fois
Merci en tout cas
finalement j'ai fait ceci :
' Trier la colonne A
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'supprimer les doublons
Dim Cel As Range
Set Cel = Sheets(2).Range("A1")
i = 0
Do While Cel.Offset(i) <> ""
If Cel.Offset(i) = Cel.Offset(i + 1) Then 'supprimer les lignes double
Cel.Offset(i + 1).EntireRow.Select
Selection.Delete Shift:=xlUp
Else
i = i + 1
End If
Loop
je suppriume les ligns directement, sa m'évite de retrier une nouvelle fois
Merci en tout cas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Steefif
Messages postés
485
Date d'inscription
lundi 7 juillet 2008
Statut
Membre
Dernière intervention
15 février 2013
19
9 juil. 2008 à 10:10
9 juil. 2008 à 10:10
méfie toi, avec cette formule tu peux en rater
il faut pour ce faire que tu partes de la denriere cellule
en effet si tu supprime la ligne 2 et que la 3eme etait un doublons, elle va passer cellule 2, mais sans etre traiter
typiquement il faut faire ceci :
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
...
il faut pour ce faire que tu partes de la denriere cellule
en effet si tu supprime la ligne 2 et que la 3eme etait un doublons, elle va passer cellule 2, mais sans etre traiter
typiquement il faut faire ceci :
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
...
je ne pense pas, je ne passe a la ligne suivante que si elle est différente de la ligne actuel
If Cel.Offset(i) = Cel.Offset(i + 1) Then
Cel.Offset(i + 1).EntireRow.Select 'je supprime la ligne suivante sans bouger de ma place
Selection.Delete Shift:=xlUp
Else
i = i + 1 'je passe a la ligne suivante
End If
If Cel.Offset(i) = Cel.Offset(i + 1) Then
Cel.Offset(i + 1).EntireRow.Select 'je supprime la ligne suivante sans bouger de ma place
Selection.Delete Shift:=xlUp
Else
i = i + 1 'je passe a la ligne suivante
End If
Steefif
Messages postés
485
Date d'inscription
lundi 7 juillet 2008
Statut
Membre
Dernière intervention
15 février 2013
19
9 juil. 2008 à 10:22
9 juil. 2008 à 10:22
oui bien vu en effet.
c'ets meme une methode pas mal du tout a vrai dire j'y avait pas pensé!
c'ets meme une methode pas mal du tout a vrai dire j'y avait pas pensé!