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
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
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
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
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
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
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
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" <i@v> a écrit dans le message de news: Ov3oFKWlJHA.4252@TK2MSFTNGP02.phx.gbl...
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
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
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.
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.
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.
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
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" <i@v> a écrit dans le message de news: Ov3oFKWlJHA.4252@TK2MSFTNGP02.phx.gbl...
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
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
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
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" <i@v> a écrit dans le message de news: %23ne42UXlJHA.4252@TK2MSFTNGP02.phx.gbl...
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" <i@v> a écrit dans le message de news: Ov3oFKWlJHA.4252@TK2MSFTNGP02.phx.gbl...
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
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
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
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" <i@v> a écrit dans le message de news: %23ne42UXlJHA.4252@TK2MSFTNGP02.phx.gbl...
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" <i@v> a écrit dans le message de news: Ov3oFKWlJHA.4252@TK2MSFTNGP02.phx.gbl...
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
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
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
Merci Isabelle,
o?¾ÌÍyźyɾ˿¾¼ÍÂÈÇyÆCƾyz
clé: 89
A--
Serge
"isabelle" <i@v> a écrit dans le message de news: OPBlUbclJHA.1168@TK2MSFTNGP05.phx.gbl...
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" <i@v> a écrit dans le message de news: %23ne42UXlJHA.4252@TK2MSFTNGP02.phx.gbl...
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" <i@v> a écrit dans le message de news: Ov3oFKWlJHA.4252@TK2MSFTNGP02.phx.gbl...
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
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