Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

21 réponses
Avatar
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

10 réponses

1 2 3
Avatar
isabelle
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






Avatar
garnote
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








Avatar
isabelle
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














Avatar
Modeste
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
Avatar
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
Avatar
garnote
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
















Avatar
garnote
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" a écrit dans le message de news: er%
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
Avatar
isabelle
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





















Avatar
garnote
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























Avatar
isabelle
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



























1 2 3