Je sélectionne une plage simple contenant (exemple ) :
1 2 3 _ _
8 7 9 1 _
4 5 6 7 8
Les _ représentant des cellules vides.
Par macro, je veux éliminer tous les doublons
et obtenir comme nouvelle plage :
2 3 _ _ _
9 _ _ _ _
4 5 6 _ _
Doit pouvoir se généraliser pour une plage quelconque
dont chaque ligne commence par une série de nombres
suivi de cellules vides.La dernière ligne ne contient
jamais de cellules vides.
Maintenant, je voudrais obtenir la même disposition avec les données dans le même ordre que la plage de départ. Et là je bloque lamentablement ;-( Vous avez des idées ? Voici un exemple : http://www.cijoint.fr/cjlink.php?file=cj200902/cijPFVG3m0.xls
Sub Serge() Set plage = Selection Set Feuil_origine = ActiveSheet Selection.Name = "Origine" Selection.Copy '------ on utilise une feuille temporaire (*)qu'il suffit de nommer pour la supprimer à la fin) Sheets.Add 'activesheet.name="Tampon" ActiveSheet.Paste Set tempo = [A1].CurrentRegion '----on marque tout les doublons For Each C In tempo If Application.CountIf(tempo, C) > 1 Then tempo.Replace What:=C, lookat:=xlWhole, Replacement:="££" Next C '-----on tasse a gauche en éliminant les doublons While Application.CountIf(tempo, "££") > 0 For Each C In tempo If C = "££" Then C.Delete Shift:=xlToLeft Next C Wend '------ on recopie le résultat à la place d'origine Application.CutCopyMode = False tempo.Copy Application.Goto Reference:="Origine" ActiveSheet.Paste '---- (*)on pourrait prévoir ici de supprimer la feuille temporaire ' Sheets("tampon").delete
End Sub
Bonsour® Serge
Maintenant, je voudrais obtenir la même disposition avec
les données dans le même ordre que la plage de départ.
Et là je bloque lamentablement ;-(
Vous avez des idées ?
Voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cijPFVG3m0.xls
Sub Serge()
Set plage = Selection
Set Feuil_origine = ActiveSheet
Selection.Name = "Origine"
Selection.Copy
'------ on utilise une feuille temporaire (*)qu'il suffit de nommer pour la supprimer à la fin)
Sheets.Add
'activesheet.name="Tampon"
ActiveSheet.Paste
Set tempo = [A1].CurrentRegion
'----on marque tout les doublons
For Each C In tempo
If Application.CountIf(tempo, C) > 1 Then tempo.Replace What:=C, lookat:=xlWhole, Replacement:="££"
Next C
'-----on tasse a gauche en éliminant les doublons
While Application.CountIf(tempo, "££") > 0
For Each C In tempo
If C = "££" Then C.Delete Shift:=xlToLeft
Next C
Wend
'------ on recopie le résultat à la place d'origine
Application.CutCopyMode = False
tempo.Copy
Application.Goto Reference:="Origine"
ActiveSheet.Paste
'---- (*)on pourrait prévoir ici de supprimer la feuille temporaire
' Sheets("tampon").delete
Maintenant, je voudrais obtenir la même disposition avec les données dans le même ordre que la plage de départ. Et là je bloque lamentablement ;-( Vous avez des idées ? Voici un exemple : http://www.cijoint.fr/cjlink.php?file=cj200902/cijPFVG3m0.xls
Sub Serge() Set plage = Selection Set Feuil_origine = ActiveSheet Selection.Name = "Origine" Selection.Copy '------ on utilise une feuille temporaire (*)qu'il suffit de nommer pour la supprimer à la fin) Sheets.Add 'activesheet.name="Tampon" ActiveSheet.Paste Set tempo = [A1].CurrentRegion '----on marque tout les doublons For Each C In tempo If Application.CountIf(tempo, C) > 1 Then tempo.Replace What:=C, lookat:=xlWhole, Replacement:="££" Next C '-----on tasse a gauche en éliminant les doublons While Application.CountIf(tempo, "££") > 0 For Each C In tempo If C = "££" Then C.Delete Shift:=xlToLeft Next C Wend '------ on recopie le résultat à la place d'origine Application.CutCopyMode = False tempo.Copy Application.Goto Reference:="Origine" ActiveSheet.Paste '---- (*)on pourrait prévoir ici de supprimer la feuille temporaire ' Sheets("tampon").delete