idieordeco
Messages postés28Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention20 février 2011
-
26 nov. 2007 à 20:09
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
27 nov. 2007 à 23:49
Bonjour,
J'ai un code pour supprimer les doublons mais dans une seule colonne.
Je voudrai faire pareil mais pour supprimer les doublons selon 3 colonnes :
S'il trouve 2 lignes avec les mêmes valeurs sur les cellules de ses 3 colonnes, il supprimer
Le code que j'ai est le suivant et marche parfaitement pour une colonne :
'--Suppression des doublons sur le premier onglet
Range("A1").Select '-- Là, si je met ("A:A,F:F,H:H") ; ça merde
ActiveCell.CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, '-- Là, si je met ("A:A,F:F,H:H") ; ça merde aussi
Header:=xlYes
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
While ActiveCell <> ""
If ActiveCell = donnee1 Then
ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1, 0).Select
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
Else
donnee1 = ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Wend
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 nov. 2007 à 02:23
Tu dois commencer par trier ta grille, je pense que tu as compris...
Cells.Sort ....
Tu as la possibilité de trier sur 2 colonnes (Key1 et Key2) avec des tris selon les besoins (Order1 et Order2 ... Ascendant ou Descendant)
Si tu as besoin de trier sur plus de colonnes, utilise la concaténation des cellules nécessaires que tu mets dans une colonne inutilisée (=A1 & F1 & H1).
Une fois le tri effectué, il faut que tu démarres par la fin et que tu remontes pour effacer efficacement les lignes
DerniereLigne = Cells(Rows.Count, "A").End(xlUp).row
For i = DerniereLigne to 2 Step - 1
If Range("A" & i) = Range("A" & i - 1) And _
Range("F" & i) = Range("F" & i - 1) And _
Range("H" & i) = Range("H" & i - 1) Then
Rows(i - 1).Delete
End if
Next
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 nov. 2007 à 23:49
Donc, pour mettre un plus au clair ...
Si tu utilises la concaténation en colonne Z et le tri sur cette colonne
DerniereLigne = Cells(Rows.Count, "A").End(xlUp).row
For i = DerniereLigne to 2 Step - 1
If Range("Z" & i) = Range("Z" & i - 1) Then
Rows(i - 1).Delete
End if
Next
Si tu utilises un tri à 2 colonnes, maximum qu'Excel permet ...
DerniereLigne = Cells(Rows.Count, "A").End(xlUp).row
For i = DerniereLigne to 2 Step - 1
If Range("A" & i) = Range("A" & i - 1) And _
Range("F" & i) = Range("F" & i - 1) Then
Rows(i - 1).Delete
End if
Next
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 27 nov. 2007 à 23:43
Salut JMF,
c'était pour le cas où il n'utilisait pas la concaténation... Un peu tard pour te dire "Bon réveil", j'imagine
Et je n'étais pas tout à fait réveillé non plus quand j'ai répondu ce matin ...
Je me relis et c'est un peu pêle-mêle tout ça ...