Suppression de doublons sur une sélection et ...

Le
garnote
Bonjour,

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.

Serge
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #18737901
salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :
Bonjour,

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.

Serge






garnote
Le #18737931
Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:
salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :
Bonjour,

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.

Serge








isabelle
Le #18737981
salut Serge,

voilà,

Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending,
Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

isabelle

garnote a écrit :
Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:

salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :

Bonjour,

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.

Serge














Modeste
Le #18741021
Bonsour® Serge
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.



Sub Serge()
Set plage = Selection

For Each C In plage
If Application.CountIf(plage, C) > 1 Then plage.Replace What:=C, lookat:=xlWhole, Replacement:="££"
Next C

While Application.CountIf(plage, "££") > 0
For Each C In plage
If C = "££" Then C.Delete Shift:=xlToLeft
Next C
Wend
End Sub
Modeste
Le #18741631
Bonsour® Serge

Oupssss!!!!
il ne doit rien y avoir à droite de la plage sélectionnée !!!!
sinon il faut travailler sur une copie de cette plage dans une feuille vierge
puis remettre le résultat dans la feuille d'origine
garnote
Le #18742321
Bonjour,

J'ai modifié un tipeu la macro d'Isabelle et j'obtiens ce que je veux
à partir d'une sélection simple située n'importe où sur la feuille :

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c.Offset(NL + 1, 0) = c
End If
Next c
ici.Offset(NL + 1, 0).Select
Set ici = Selection
For i = 1 To ici.Rows.Count
ici.Rows(i).Sort key1:=ici(i, 1), order1:=xlAscending
Next i
Application.ScreenUpdating = True
End Sub

Les données de chaque ligne de la nouvelle plage sont
triées en ordre croissant et c'est bien ainsi.
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

A--
Serge


Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending,
Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

Isabelle

.






























"isabelle" a écrit dans le message de news: %
salut Serge,

voilà,

Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending, Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

isabelle

garnote a écrit :
Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:

salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :

Bonjour,

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.

Serge
















garnote
Le #18742501
Ave Modeste,

Tu réponds en partie à ma nouvelle question ( 09:20 )
avant même que je l'aie posée, hot ;-)
Je dis en partie car :
1) Je veux garder la plage de départ intacte.
2) Je veux que tous les nombres de chaque
ligne soient au début de la ligne.

À suire !
Serge



"Modeste" Bonsour® Serge

Oupssss!!!!
il ne doit rien y avoir à droite de la plage sélectionnée !!!!
sinon il faut travailler sur une copie de cette plage dans une feuille vierge
puis remettre le résultat dans la feuille d'origine
isabelle
Le #18742661
salut Serge,

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c1 = ici.Item(1).Column
c2 = ici.Item(ici.Count).Column
x = Application.CountA(Range(Cells(c.Row + NL + 1, c1), Cells(c.Row
+ NL + 1, c2)))
Cells(c.Row + NL + 1, c1 + x) = c
End If
Next c
Application.ScreenUpdating = False
End Sub

isabelle

garnote a écrit :
Bonjour,

J'ai modifié un tipeu la macro d'Isabelle et j'obtiens ce que je veux
à partir d'une sélection simple située n'importe où sur la feuille :

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c.Offset(NL + 1, 0) = c
End If
Next c
ici.Offset(NL + 1, 0).Select
Set ici = Selection
For i = 1 To ici.Rows.Count
ici.Rows(i).Sort key1:=ici(i, 1), order1:=xlAscending
Next i
Application.ScreenUpdating = True
End Sub

Les données de chaque ligne de la nouvelle plage sont
triées en ordre croissant et c'est bien ainsi.
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

A--
Serge


Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending,
Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

Isabelle

.






























"isabelle" a écrit dans le message de news: %

salut Serge,

voilà,

Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending, Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

isabelle

garnote a écrit :

Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:


salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :


Bonjour,

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.

Serge





















garnote
Le #18743351
Merci Isabelle,

o?¾ÌÍyźyɾ˿¾¼ÍÂÈÇyÆCƾyz

clé: 89

A--

Serge




"isabelle" a écrit dans le message de news:
salut Serge,

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c1 = ici.Item(1).Column
c2 = ici.Item(ici.Count).Column
x = Application.CountA(Range(Cells(c.Row + NL + 1, c1), Cells(c.Row + NL + 1, c2)))
Cells(c.Row + NL + 1, c1 + x) = c
End If
Next c
Application.ScreenUpdating = False
End Sub

isabelle

garnote a écrit :
Bonjour,

J'ai modifié un tipeu la macro d'Isabelle et j'obtiens ce que je veux
à partir d'une sélection simple située n'importe où sur la feuille :

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c.Offset(NL + 1, 0) = c
End If
Next c
ici.Offset(NL + 1, 0).Select
Set ici = Selection
For i = 1 To ici.Rows.Count
ici.Rows(i).Sort key1:=ici(i, 1), order1:=xlAscending
Next i
Application.ScreenUpdating = True
End Sub

Les données de chaque ligne de la nouvelle plage sont
triées en ordre croissant et c'est bien ainsi.
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

A--
Serge


Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending,
Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

Isabelle

.






























"isabelle" a écrit dans le message de news: %

salut Serge,

voilà,

Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending, Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

isabelle

garnote a écrit :

Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:


salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :


Bonjour,

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.

Serge























isabelle
Le #18743691
tu l'as codée avec =coder(Texte, Clé) ou bien celle de Thierry William
ou autre ?
isabelle

garnote a écrit :
Merci Isabelle,

o?¾ÌÍyźyɾ˿¾¼ÍÂÈÇyÆCƾyz

clé: 89

A--

Serge




"isabelle" a écrit dans le message de news:

salut Serge,

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c1 = ici.Item(1).Column
c2 = ici.Item(ici.Count).Column
x = Application.CountA(Range(Cells(c.Row + NL + 1, c1), Cells(c.Row + NL + 1, c2)))
Cells(c.Row + NL + 1, c1 + x) = c
End If
Next c
Application.ScreenUpdating = False
End Sub

isabelle

garnote a écrit :

Bonjour,

J'ai modifié un tipeu la macro d'Isabelle et j'obtiens ce que je veux
à partir d'une sélection simple située n'importe où sur la feuille :

Sub Isa1()
Application.ScreenUpdating = False
Set ici = Selection
NL = ici.Rows.Count
For Each c In ici
If Application.CountIf(ici, c) > 1 Then
c.Offset(NL + 1, 0) = ""
Else
c.Offset(NL + 1, 0) = c
End If
Next c
ici.Offset(NL + 1, 0).Select
Set ici = Selection
For i = 1 To ici.Rows.Count
ici.Rows(i).Sort key1:=ici(i, 1), order1:=xlAscending
Next i
Application.ScreenUpdating = True
End Sub

Les données de chaque ligne de la nouvelle plage sont
triées en ordre croissant et c'est bien ainsi.
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

A--
Serge


Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c,
Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending,
Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

Isabelle

.






























"isabelle" a écrit dans le message de news: %


salut Serge,

voilà,

Sub Macro1()
Set plage = Selection
Plgn = plage.Item(1).Row
Nlgn = plage.Rows.Count
Dlgn = Plgn + Nlgn - 1

For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next c

For i = Plgn To Dlgn
If Application.CountA(Rows(i)) >= 1 Then
Rows(i).Sort Key1:=Range("A" & i), Order1:=xlAscending, Header:=xlNoGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
End If
Next i
End Sub

isabelle

garnote a écrit :


Bonsoir et merci Isabelle,

Mais ça ne fonctionne pas ;-(
Et moi aussi j'avais tâté du CountIf !
Par mise en forme conditionnelle, je peux
jaunir les doublons, mais je voudrais plus.
Voici un autre exemple :
http://www.cijoint.fr/cjlink.php?file=cj200902/cij7l1rE88.xls

Bonsoir, Bonne nuit,
Serge


"isabelle" a écrit dans le message de news:



salut Serge,

Sub Macro1()
Set plage = Selection
lgn = plage.Rows.Count
For Each c In plage
If Application.CountIf(plage, c) > 1 Then plage.Replace What:=c, Replacement:=""
Next
For i = 1 To lgn
If Application.CountA(plage.Rows(i)) >= 1 Then
plg = plage.Rows(i).SpecialCells(xlCellTypeConstants, 1).Address
Range(plg).Cut
Range("A" & i).Select
ActiveSheet.Paste
End If
Next
End Sub

isabelle

garnote a écrit :



Bonjour,

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.

Serge



























Publicité
Poster une réponse
Anonyme