Bonjour,
j'ai une base Excel dont le nombre d'enregistrement qui varie chaque
jours (venant d'un AS400). cette base contient en colonne H, un le
chiffre 1 ou 2. un nombre indetermin=E9 de 1 est suivi par un nombre
ind=E9termin=E9 de 2. voir exemple ci-dessous.
j'aimerai que tout les 2 soit regroup=E9s par petit groupe (lignes
cach=E9s)
quand on ouvre la base, on voit que les lignes o=F9 il y a le chifrre 1.
(les lignes avec 2 sont cach=E9es, mais avec le petit + sur la gauche.
et que l'on puisse faire apparaitre chaque petit groupe de 2
ind=E9pendement des autres groupes de 2.
en faite, un petit groupe de 2 appartient au 1 supp=E9rieur.
meci pour votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
Bonjour, j'ai une base Excel dont le nombre d'enregistrement qui varie chaque jours (venant d'un AS400). cette base contient en colonne H, un le chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre indéterminé de 2. voir exemple ci-dessous. j'aimerai que tout les 2 soit regroupés par petit groupe (lignes cachés) quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. et que l'on puisse faire apparaitre chaque petit groupe de 2 indépendement des autres groupes de 2. en faite, un petit groupe de 2 appartient au 1 suppérieur. meci pour votre aide.
colonne H 1 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 2
je voudrai: colonne H 1 + 1 + 1 1 1 1 1 + 1
Bonjour.
Le problème est que dans une suite :
1
2
2
2
1
2
2
si tu fais un premier groupement avec :
1
2
2
2
tu obtiens :
+1
1
2
2
Ce qui est ce que tu souhaites, mais si tu procèdes au secong
groupement,
tu obtiens un seul regroupement :
+1
Il faut au moins deux 1 pour obtenir des groupes séparés.
Cordialement.
Daniel
Bonjour,
j'ai une base Excel dont le nombre d'enregistrement qui varie chaque
jours (venant d'un AS400). cette base contient en colonne H, un le
chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre
indéterminé de 2. voir exemple ci-dessous.
j'aimerai que tout les 2 soit regroupés par petit groupe (lignes
cachés)
quand on ouvre la base, on voit que les lignes où il y a le chifrre 1.
(les lignes avec 2 sont cachées, mais avec le petit + sur la gauche.
et que l'on puisse faire apparaitre chaque petit groupe de 2
indépendement des autres groupes de 2.
en faite, un petit groupe de 2 appartient au 1 suppérieur.
meci pour votre aide.
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
Bonjour, j'ai une base Excel dont le nombre d'enregistrement qui varie chaque jours (venant d'un AS400). cette base contient en colonne H, un le chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre indéterminé de 2. voir exemple ci-dessous. j'aimerai que tout les 2 soit regroupés par petit groupe (lignes cachés) quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. et que l'on puisse faire apparaitre chaque petit groupe de 2 indépendement des autres groupes de 2. en faite, un petit groupe de 2 appartient au 1 suppérieur. meci pour votre aide.
colonne H 1 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 2
je voudrai: colonne H 1 + 1 + 1 1 1 1 1 + 1
Daniel.C
A ceci près,, tu peux utiliser :
Sub test() Dim c As Range, Res As Range For Each c In Range([H1], [H65000].End(xlUp)) var = c.Address If c = 1 And c.Offset(1) = 2 Then Set Res = c ElseIf c = 2 And (c.Offset(1) = 1 Or _ c.Offset = "") Then Range(Res, c).Rows.Group Range(Res.Offset(1), c).EntireRow.Hidden = True End If Next c End Sub
Cordialement. Daniel
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
Bonjour, j'ai une base Excel dont le nombre d'enregistrement qui varie chaque jours (venant d'un AS400). cette base contient en colonne H, un le chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre indéterminé de 2. voir exemple ci-dessous. j'aimerai que tout les 2 soit regroupés par petit groupe (lignes cachés) quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. et que l'on puisse faire apparaitre chaque petit groupe de 2 indépendement des autres groupes de 2. en faite, un petit groupe de 2 appartient au 1 suppérieur. meci pour votre aide.
colonne H 1 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 2
je voudrai: colonne H 1 + 1 + 1 1 1 1 1 + 1
A ceci près,, tu peux utiliser :
Sub test()
Dim c As Range, Res As Range
For Each c In Range([H1], [H65000].End(xlUp))
var = c.Address
If c = 1 And c.Offset(1) = 2 Then
Set Res = c
ElseIf c = 2 And (c.Offset(1) = 1 Or _
c.Offset = "") Then
Range(Res, c).Rows.Group
Range(Res.Offset(1), c).EntireRow.Hidden = True
End If
Next c
End Sub
Cordialement.
Daniel
Bonjour.
Le problème est que dans une suite :
1
2
2
2
1
2
2
si tu fais un premier groupement avec :
1
2
2
2
tu obtiens :
+1
1
2
2
Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement,
tu obtiens un seul regroupement :
+1
Il faut au moins deux 1 pour obtenir des groupes séparés.
Cordialement.
Daniel
Bonjour,
j'ai une base Excel dont le nombre d'enregistrement qui varie chaque
jours (venant d'un AS400). cette base contient en colonne H, un le
chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre
indéterminé de 2. voir exemple ci-dessous.
j'aimerai que tout les 2 soit regroupés par petit groupe (lignes
cachés)
quand on ouvre la base, on voit que les lignes où il y a le chifrre 1.
(les lignes avec 2 sont cachées, mais avec le petit + sur la gauche.
et que l'on puisse faire apparaitre chaque petit groupe de 2
indépendement des autres groupes de 2.
en faite, un petit groupe de 2 appartient au 1 suppérieur.
meci pour votre aide.
Sub test() Dim c As Range, Res As Range For Each c In Range([H1], [H65000].End(xlUp)) var = c.Address If c = 1 And c.Offset(1) = 2 Then Set Res = c ElseIf c = 2 And (c.Offset(1) = 1 Or _ c.Offset = "") Then Range(Res, c).Rows.Group Range(Res.Offset(1), c).EntireRow.Hidden = True End If Next c End Sub
Cordialement. Daniel
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
Bonjour, j'ai une base Excel dont le nombre d'enregistrement qui varie chaque jours (venant d'un AS400). cette base contient en colonne H, un le chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre indéterminé de 2. voir exemple ci-dessous. j'aimerai que tout les 2 soit regroupés par petit groupe (lignes cachés) quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. et que l'on puisse faire apparaitre chaque petit groupe de 2 indépendement des autres groupes de 2. en faite, un petit groupe de 2 appartient au 1 suppérieur. meci pour votre aide.
colonne H 1 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 2
je voudrai: colonne H 1 + 1 + 1 1 1 1 1 + 1
Transocéan
bonjour, Comme dit daniel il y a un décalage mais en sautant les lignes contenant 1 de référence qui devient visible c'est possible -- Faut-il travailler pour manger ? ou manger pour travailler ?
"Daniel.C" wrote:
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
> Bonjour, > j'ai une base Excel dont le nombre d'enregistrement qui varie chaque > jours (venant d'un AS400). cette base contient en colonne H, un le > chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre > indéterminé de 2. voir exemple ci-dessous. > j'aimerai que tout les 2 soit regroupés par petit groupe (lignes > cachés) > quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. > (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. > et que l'on puisse faire apparaitre chaque petit groupe de 2 > indépendement des autres groupes de 2. > en faite, un petit groupe de 2 appartient au 1 suppérieur. > meci pour votre aide. > > colonne H > 1 > 1 > 2 > 2 > 2 > 1 > 2 > 2 > 2 > 2 > 1 > 1 > 1 > 1 > 1 > 2 > 2 > > je voudrai: > colonne H > 1 > + 1 > + 1 > 1 > 1 > 1 > 1 > + 1
bonjour,
Comme dit daniel il y a un décalage mais en sautant les lignes contenant 1
de référence qui devient visible c'est possible
--
Faut-il travailler pour manger ? ou manger pour travailler ?
"Daniel.C" wrote:
Bonjour.
Le problème est que dans une suite :
1
2
2
2
1
2
2
si tu fais un premier groupement avec :
1
2
2
2
tu obtiens :
+1
1
2
2
Ce qui est ce que tu souhaites, mais si tu procèdes au secong
groupement,
tu obtiens un seul regroupement :
+1
Il faut au moins deux 1 pour obtenir des groupes séparés.
Cordialement.
Daniel
> Bonjour,
> j'ai une base Excel dont le nombre d'enregistrement qui varie chaque
> jours (venant d'un AS400). cette base contient en colonne H, un le
> chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre
> indéterminé de 2. voir exemple ci-dessous.
> j'aimerai que tout les 2 soit regroupés par petit groupe (lignes
> cachés)
> quand on ouvre la base, on voit que les lignes où il y a le chifrre 1.
> (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche.
> et que l'on puisse faire apparaitre chaque petit groupe de 2
> indépendement des autres groupes de 2.
> en faite, un petit groupe de 2 appartient au 1 suppérieur.
> meci pour votre aide.
>
> colonne H
> 1
> 1
> 2
> 2
> 2
> 1
> 2
> 2
> 2
> 2
> 1
> 1
> 1
> 1
> 1
> 2
> 2
>
> je voudrai:
> colonne H
> 1
> + 1
> + 1
> 1
> 1
> 1
> 1
> + 1
bonjour, Comme dit daniel il y a un décalage mais en sautant les lignes contenant 1 de référence qui devient visible c'est possible -- Faut-il travailler pour manger ? ou manger pour travailler ?
"Daniel.C" wrote:
Bonjour. Le problème est que dans une suite : 1 2 2 2 1 2 2 si tu fais un premier groupement avec : 1 2 2 2 tu obtiens : +1 1 2 2 Ce qui est ce que tu souhaites, mais si tu procèdes au secong groupement, tu obtiens un seul regroupement : +1 Il faut au moins deux 1 pour obtenir des groupes séparés. Cordialement. Daniel
> Bonjour, > j'ai une base Excel dont le nombre d'enregistrement qui varie chaque > jours (venant d'un AS400). cette base contient en colonne H, un le > chiffre 1 ou 2. un nombre indeterminé de 1 est suivi par un nombre > indéterminé de 2. voir exemple ci-dessous. > j'aimerai que tout les 2 soit regroupés par petit groupe (lignes > cachés) > quand on ouvre la base, on voit que les lignes où il y a le chifrre 1. > (les lignes avec 2 sont cachées, mais avec le petit + sur la gauche. > et que l'on puisse faire apparaitre chaque petit groupe de 2 > indépendement des autres groupes de 2. > en faite, un petit groupe de 2 appartient au 1 suppérieur. > meci pour votre aide. > > colonne H > 1 > 1 > 2 > 2 > 2 > 1 > 2 > 2 > 2 > 2 > 1 > 1 > 1 > 1 > 1 > 2 > 2 > > je voudrai: > colonne H > 1 > + 1 > + 1 > 1 > 1 > 1 > 1 > + 1
FdeCourt
Salut,
Voilà une macro qui peux faire le boulot (7 secondes pour 65535 lignes, et en considérant que toutes les lignes sont renseignées, sans erreur....) :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H65536] With Feuil1 .Cells.ClearOutline For x = 1 To UBound(monRange) - 1 Application.StatusBar = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If Next End With End Sub
Cordialement,
F.
Salut,
Voilà une macro qui peux faire le boulot (7 secondes pour 65535
lignes, et en considérant que toutes les lignes sont renseignées, sans
erreur....) :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H65536]
With Feuil1
.Cells.ClearOutline
For x = 1 To UBound(monRange) - 1
Application.StatusBar = x
If monRange(x, 1) = 2 And plage = "" Then
plage = x
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then
plage = plage & ":" & x
.Rows(plage).Group
plage = ""
End If
Next
End With
End Sub
Voilà une macro qui peux faire le boulot (7 secondes pour 65535 lignes, et en considérant que toutes les lignes sont renseignées, sans erreur....) :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H65536] With Feuil1 .Cells.ClearOutline For x = 1 To UBound(monRange) - 1 Application.StatusBar = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If Next End With End Sub
Cordialement,
F.
marchepied
On 5 fév, 14:43, FdeCourt wrote:
Salut,
Voilà une macro qui peux faire le boulot (7 secondes pour 65535 lignes, et en considérant que toutes les lignes sont renseignées, san s erreur....) :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H65536] With Feuil1 .Cells.ClearOutline For x = 1 To UBound(monRange) - 1 Application.StatusBar = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If Next End With End Sub
Cordialement,
F.
merci pour vos réponses. la solution de FdeCourt fonctionne, sauf dans un cas, quand il faut faire un groupe de une seule ligne 2. Comme Daniel C. l'a remarqué, sa solution fonctionne sauf quand il y a une seule ligne 1. bon, tant pis, si c'est trop dure, je mettrais un filtre classique. merci
On 5 fév, 14:43, FdeCourt <fdeco...@gmail.com> wrote:
Salut,
Voilà une macro qui peux faire le boulot (7 secondes pour 65535
lignes, et en considérant que toutes les lignes sont renseignées, san s
erreur....) :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H65536]
With Feuil1
.Cells.ClearOutline
For x = 1 To UBound(monRange) - 1
Application.StatusBar = x
If monRange(x, 1) = 2 And plage = "" Then
plage = x
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then
plage = plage & ":" & x
.Rows(plage).Group
plage = ""
End If
Next
End With
End Sub
Cordialement,
F.
merci pour vos réponses.
la solution de FdeCourt fonctionne, sauf dans un cas, quand il faut
faire un groupe de une seule ligne 2.
Comme Daniel C. l'a remarqué, sa solution fonctionne sauf quand il y a
une seule ligne 1.
bon, tant pis, si c'est trop dure, je mettrais un filtre classique.
merci
Voilà une macro qui peux faire le boulot (7 secondes pour 65535 lignes, et en considérant que toutes les lignes sont renseignées, san s erreur....) :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H65536] With Feuil1 .Cells.ClearOutline For x = 1 To UBound(monRange) - 1 Application.StatusBar = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If Next End With End Sub
Cordialement,
F.
merci pour vos réponses. la solution de FdeCourt fonctionne, sauf dans un cas, quand il faut faire un groupe de une seule ligne 2. Comme Daniel C. l'a remarqué, sa solution fonctionne sauf quand il y a une seule ligne 1. bon, tant pis, si c'est trop dure, je mettrais un filtre classique. merci
FdeCourt
Hello,
Il ne faut pas désespérer ;)
Avec celle là :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then plage = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If End If Next End With End Sub
Cordialement,
F.
Hello,
Il ne faut pas désespérer ;)
Avec celle là :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H36]
With Feuil1
.Cells.ClearOutline
For x = 2 To UBound(monRange) - 1
If monRange(x, 1) <> "" Then
If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then
plage = x
If monRange(x, 1) = 2 And plage = "" Then
plage = x
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then
plage = plage & ":" & x
.Rows(plage).Group
plage = ""
End If
End If
Next
End With
End Sub
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then plage = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If End If Next End With End Sub
Cordialement,
F.
marchepied
On 5 fév, 17:59, FdeCourt wrote:
Hello,
Il ne faut pas désespérer ;)
Avec celle là :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then plage = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If End If Next End With End Sub
Cordialement,
F.
Bonsoir FdeCourt, la nouvelle macro fonctionne bien, mais seulement dans le cas où il y a une seule ligne 2. je suppose que je dois combiner tes 2 macros ? Marchepied
On 5 fév, 17:59, FdeCourt <fdeco...@gmail.com> wrote:
Hello,
Il ne faut pas désespérer ;)
Avec celle là :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H36]
With Feuil1
.Cells.ClearOutline
For x = 2 To UBound(monRange) - 1
If monRange(x, 1) <> "" Then
If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then
plage = x
If monRange(x, 1) = 2 And plage = "" Then
plage = x
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then
plage = plage & ":" & x
.Rows(plage).Group
plage = ""
End If
End If
Next
End With
End Sub
Cordialement,
F.
Bonsoir FdeCourt,
la nouvelle macro fonctionne bien, mais seulement dans le cas où il y
a une seule ligne 2.
je suppose que je dois combiner tes 2 macros ?
Marchepied
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then plage = x If monRange(x, 1) = 2 And plage = "" Then plage = x ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Then plage = plage & ":" & x .Rows(plage).Group plage = "" End If End If Next End With End Sub
Cordialement,
F.
Bonsoir FdeCourt, la nouvelle macro fonctionne bien, mais seulement dans le cas où il y a une seule ligne 2. je suppose que je dois combiner tes 2 macros ? Marchepied
FdeCourt
Alors encore quelques modifications :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If x = 35 Then Debug.Print "er" End If If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then plage = x
If monRange(x, 1) = 2 And plage = "" Then plage = x If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x = UBound(monRange) - 1 Then plage = plage & ":" & x + 1 ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Or x = UBound(monRange) - 1 Then plage = plage & ":" & x End If If plage <> "" Then .Rows(plage).Group: plage = "" End If Next End With End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à remettre en ligne bien sur !): 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2,1 ,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,1,2, 2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1,2,2,2,1 ,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2, 2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Cordialement,
F.
Alors encore quelques modifications :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H36]
With Feuil1
.Cells.ClearOutline
For x = 2 To UBound(monRange) - 1
If monRange(x, 1) <> "" Then
If x = 35 Then
Debug.Print "er"
End If
If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then
plage = x
If monRange(x, 1) = 2 And plage = "" Then plage = x
If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x =
UBound(monRange) - 1 Then
plage = plage & ":" & x + 1
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Or x
= UBound(monRange) - 1 Then
plage = plage & ":" & x
End If
If plage <> "" Then .Rows(plage).Group: plage = ""
End If
Next
End With
End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à
remettre en ligne bien sur !):
1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2,1 ,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,1,2, 2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1,2,2,2,1 ,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2, 2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If x = 35 Then Debug.Print "er" End If If monRange(x, 1) = 2 And monRange(x - 1, 1) <= 1 Then plage = x
If monRange(x, 1) = 2 And plage = "" Then plage = x If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x = UBound(monRange) - 1 Then plage = plage & ":" & x + 1 ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1) <= 1 Or x = UBound(monRange) - 1 Then plage = plage & ":" & x End If If plage <> "" Then .Rows(plage).Group: plage = "" End If Next End With End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à remettre en ligne bien sur !): 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2,1 ,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1,1,2, 2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1,2,2,2,1 ,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2, 2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Cordialement,
F.
marchepied
On 5 fév, 19:42, FdeCourt wrote:
Alors encore quelques modifications :
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If x = 35 Then Debug.Print "er" End If If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then plage = x
If monRange(x, 1) = 2 And plage = "" Then pla ge = x If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x = UBound(monRange) - 1 Then plage = plage & ":" & x + 1 ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Or x = UBound(monRange) - 1 Then plage = plage & ":" & x End If If plage <> "" Then .Rows(plage).Group: plage = "" End If Next End With End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à remettre en ligne bien sur !): 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2 ,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1 ,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1 ,2,2,2,1,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2 ,1,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Cordialement,
F.
Bonjour, merci beaucoup FdeCourt. la dernière macro est beaucoup mieux. mais il y a un cas où cas ne fonctionne pas. dans le cas où il y a une suite de plusieurs 2 (ex: 5, 10 etc...) la macro groupe seulement le premier 2. si c'est pas trop demandé merci de votre aide. marchepied
On 5 fév, 19:42, FdeCourt <fdeco...@gmail.com> wrote:
Alors encore quelques modifications :
Sub Grouper_II()
Dim plage As String
Dim monRange
monRange = [Feuil1!H1:H36]
With Feuil1
.Cells.ClearOutline
For x = 2 To UBound(monRange) - 1
If monRange(x, 1) <> "" Then
If x = 35 Then
Debug.Print "er"
End If
If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then
plage = x
If monRange(x, 1) = 2 And plage = "" Then pla ge = x
If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x =
UBound(monRange) - 1 Then
plage = plage & ":" & x + 1
ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Or x
= UBound(monRange) - 1 Then
plage = plage & ":" & x
End If
If plage <> "" Then .Rows(plage).Group: plage = ""
End If
Next
End With
End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à
remettre en ligne bien sur !):
1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2 ,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1 ,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1 ,2,2,2,1,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2 ,1,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Cordialement,
F.
Bonjour,
merci beaucoup FdeCourt. la dernière macro est beaucoup mieux. mais
il y a un cas où cas ne fonctionne pas. dans le cas où il y a une
suite de plusieurs 2 (ex: 5, 10 etc...) la macro groupe seulement le
premier 2.
si c'est pas trop demandé merci de votre aide.
marchepied
Sub Grouper_II() Dim plage As String Dim monRange monRange = [Feuil1!H1:H36] With Feuil1 .Cells.ClearOutline For x = 2 To UBound(monRange) - 1 If monRange(x, 1) <> "" Then If x = 35 Then Debug.Print "er" End If If monRange(x, 1) = 2 And monRange(x - 1, 1) < = 1 Then plage = x
If monRange(x, 1) = 2 And plage = "" Then pla ge = x If monRange(x, 1) = 2 And monRange(x + 1, 1) = 2 And x = UBound(monRange) - 1 Then plage = plage & ":" & x + 1 ElseIf monRange(x, 1) = 2 And monRange(x + 1, 1 ) <= 1 Or x = UBound(monRange) - 1 Then plage = plage & ":" & x End If If plage <> "" Then .Rows(plage).Group: plage = "" End If Next End With End Sub
Je l'ai testé sur la séquence suivante, et tout était correct (à remettre en ligne bien sur !): 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,2,1,2,2,1,2,2,1,1,2,1,1,2,1,1,2,1,1,2 ,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,1,1,1,2,1,1,2,2,1,1,2,2,1,1,2,2,1,1 ,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,2,2,1,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1 ,2,2,2,1,1,1,1,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,2,2,2,2,1,1,2,2,2,2 ,1,1,2,2,2,2,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1,2,2,2,2,1,1,1,2,2,2,2
Cordialement,
F.
Bonjour, merci beaucoup FdeCourt. la dernière macro est beaucoup mieux. mais il y a un cas où cas ne fonctionne pas. dans le cas où il y a une suite de plusieurs 2 (ex: 5, 10 etc...) la macro groupe seulement le premier 2. si c'est pas trop demandé merci de votre aide. marchepied