Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Rebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1
----------------------------------------------------
Problème : je ne sais pas comment répéter l'opération jusqu'au bout (dans
cet exemple, jusq'au groupement des lignes 6 à 8).
Quelqu'un aurait-il la solution s'il vous plaît ?
Merci beaucoup d'avance !!!
Salutations,
Jiffey
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
JiffeyRebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
Jiffey
Rebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
JiffeyRebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
JiffeyRebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
Jiffey
Rebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!
Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
Jiffey
Rebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!
C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
Jiffey
Salut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!
Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Oh c'est excellent FFO !!! Merci encore !!!!
La conversion a bien résolu le pb.
Sinon, tu as vu j'avais presque trouvé la formule ;-D (je m'étais juste
trompé dans la dernière ligne : "ActiveCell.Offset(0, 3).Select" au lieu de
"ActiveCell.Offset(-2, 3).Select" )
Merci en tous cas pour toutes tes explications détaillées étape par étape.
C'est génial !!
Je bosse un peu tout seul sur le groupement par DO2 (j'espère trouver cette
fois-ci...).
Une question par curiosité toutefois : comment peut-on convertir toutes les
colonnes sans les faire une par une :
j'ai ca comme macro :
Columns("B:B").Select
Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("C:C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
etc.
Ne peut-on pas là aussi écrire la formule pour une variable et la faire
répéter jusqu'à la colonne souhaitée ?
ex : for i= B to G
Columns("i:i").Select
Selection.TextToColumns Destination:=Range("i1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Qqch comme ça ?
Merci encore
Slts
JiffeyRebonjour à toi
Rassures toi tu n'abuses pas trop content de pouvoir t'aider
Pour t'expliquer un peu la démarche de mon code
Si je prends le dernier que je t'ai transmis :
1° je positionne la cellule active (la derniére du tableau "Total général")
Range("B65535").End(xlUp).Select
Range colonne B à partir de la cellule ligne 65535 et remonté j'usquà la
première cellule de cette même colonne Pleine par la commande End(xlup)
2° Instauration d'une boucle qui s'opèrera tant qu'une condition est remplie
Do While ActiveCell.Row > Range("C5").Row
Ligne de la cellule active > à la la ligne de cellule C5
3° Les instructions de la boucle :
3-A Sélection de la plage
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
De la cellule active positionnée précédemment mais décalée de 1 ligne vers
le haut et de 1 colonne vers la droite (Activecell.Offset(-1,1)) jusqu'à
cellule Active même ligne mais décalée d'une colonne vers la droite et
remontée vers la première cellule pleine et décalée d'une ligne vers le bas
même colonne (ActiveCell.Offset(0, 1).End(xlUp).Offset(1, 0)) avec les lignes
entières (EntireRow)
3-B Le regroupement des lignes
Selection.Rows.Group
3-C Nouvelle position de la cellule active
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Sachant que lors d'une sélection d'une plage la cellule active est toujours
la première cellule de la plage (ici une cellule de la colonne A en fonction
de la dernière plage sélectionnée)
Analyse de la colonne B (présence ou non d'une Agence qui suit la dernière
sélection)
If ActiveCell.Offset(-2, 1) = "" Then
Si la cellule active déplacée de 2 lignes vers le haut et d'une colonne vers
la droite = "" alors
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
la cellule active est déplacée même ligne 2 colonnes sur la droite et
première cellule pleine vers le haut (Nouvel AC) et décalée d'1 colonne vers
la gauche (en colonne B point de départ de la boucle)
Sinon
ActiveCell.Offset(0, 1).End(xlUp).Select
La cellule active est décalée d'une colonne vers la droite (Nouvelle Agence
en colonne B point de départ de la boucle)
et la boucle recommence
Fort de ces explications tu dois comprendre aisémment que ce code qui
convenait à ton tableau précédent ne peut compte tenu de sa présentation
différente convenir à celui là
Je te propose pour ce nouveau en lieu et place celui-ci :
Range("B65535").End(xlUp).Offset(0, 2).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(-2, 3).Select
Loop
Qui conviendra pour ce nouveau cas mais pas pour les cas précédents
Attention ce nouveau tableau porte des données non compréhensible par excel
(ils viennent d'une autre source)
Colonne par colonne avant d'utiliser ce nouveau code fait ceci :
Sélectionnes chacune d'elles puis Données/Convertir puis 3 fois Suivant et
terminer
Exécutes ensuite ce nouveau code
Pour ta compréhension dans la fenêtre de ton script installes différents
points d'arret en regard des lignes d'instruction (à gauche d'une ligne un
click de souris sur le bandeau gris) et éxécute le code
A chaque point il s'arrètera
Regardes dans ton document l'état d'avencement du processe et tu comprendras
mieux le cheminement puis appuis sur F5 pour poursuivre l'éxécution
Tu pourras à loisir si tu as tout bien compris adapter le code à d'autre
tableau
Pour supprimer les points d'arret il suffit de recliquer sur le bandeau gris
aux mêmes endroits
Espérant ne pas t'avoir noyer dans toutes ces explications
Et surtout de t'avoir aidé
Dis moi !!!!Re, FFO,
Je me permets de te re-solliciter (en espérant ne pas abuser...) :
j'ai un autre tableau (ex : http://cjoint.com/?hgngTvnbUq ) avec lequel je
souhaiterais faire la même chose.
Pb, c'est un tableau qui est le résultat d'une macro (avec des recherchev,
etc.) et je crains qu'il ne soit rempli de "scories" (j'avais entendu ce
terme sur ce forum par JB). En tous cas, comme tu peux le vérifier, cela ne
marche pas (essai avec la colonne D)
Sais-tu comment "nettoyer le fichier" et faire en sorte que la formule
fonctionne ?
Merci d'avance.
Slts
JiffeyRebonjour à toi
Effectivement un peu plus hard !!!!
Mais ma tenacité aidant :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("C5").Row
Range(ActiveCell.Offset(-1, 1), ActiveCell.Offset(0, 1).End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
If ActiveCell.Offset(-2, 1) = "" Then
ActiveCell.Offset(0, 2).End(xlUp).Offset(0, -1).Select
Else
ActiveCell.Offset(0, 1).End(xlUp).Select
End If
Loop
Attention comme pour mon premier code le point de repère de départ est
"Total général en bas de colonne B
Ce repère doit obligatoirement être présent pour un bon fonctionnement
Je pense que tu devrais être satisfait
Dis moi !!!C'est mortel !! Merci beaucoup FFO !!!! Par contre, j'essaie de grouper en
plus les AC (colonne C) et là ca se corse .....
J'essaie de trouver, mais j'ai peur de devoir redemander de l'aide...
Merci encore !!!!
JiffeySalut jiffey
Je te propose ce code en partant du principe que l'identification des
agences sont en colonne B et commence à partir de la ligne 5 :
Range("B65535").End(xlUp).Select
Do While ActiveCell.Row > Range("B5").Row
Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp).Offset(1,
0)).EntireRow.Select
Selection.Rows.Group
ActiveCell.Offset(0, 1).End(xlUp).Select
Loop
Celà devrait convenir
Dis moi !!!Bonjour à tous,
J'ai un pb que n'arrive vraiment pas à résoudre le pb :
J'ai une macro qui me donne un tableau de type http://cjoint.com/?hfs4Z8JSww
Je souhaiterais grouper les lignes limitées par les agences comme me le
donne (en partie) la macro du fichier enregistrée Ctrl + l :
---------------------------------------------------------
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Selection.Rows.Group
Cells(10000, 4).End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
ActiveCell.End(xlUp).Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.End(xlUp).Offset(1, 0)).EntireRow.Select
Tu as de trés bonnes idées qui pêchent quelque peu d'imperfections
La solution est de mettre ceci :
For i = Range("A1").Column To Range("D1").Column
Puis donc il faut sélectionner la colonne à traiter en fonction du chiffre
représenté par la variable i
Columns("i:i").Select
mais cette syntaxe pour cette instruction nécessite des lettres représentant
la colonne comme pour la colonne A ainsi :
Il y aurait la solution d'utiliser l'instruction Cells qui elle marche avec
uniquement la ligne et la colonne en chiffre
Mais cette dernière n'arrive pas à cohabiter avec le reste des instructions
(Bug)
donc je me suis rabattu sur le fait qu'imperturbablement lors d'une
sélection d'une plage ici la colonne la cellule Active se trouve toujours sur
la première cellule de la plage
Ce qui donne en résumé ce code globale :
For i = Range("A1").Column To Range("D1").Column
Columns(i).Select
Selection.TextToColumns Destination:¬tiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Next
J'espère que tu as tout compris pret à voler de tes propres ailes dans les
méandres du VBA d'Excel
Tu as de trés bonnes idées qui pêchent quelque peu d'imperfections
La solution est de mettre ceci :
For i = Range("A1").Column To Range("D1").Column
Puis donc il faut sélectionner la colonne à traiter en fonction du chiffre
représenté par la variable i
Columns("i:i").Select
mais cette syntaxe pour cette instruction nécessite des lettres représentant
la colonne comme pour la colonne A ainsi :
Il y aurait la solution d'utiliser l'instruction Cells qui elle marche avec
uniquement la ligne et la colonne en chiffre
Mais cette dernière n'arrive pas à cohabiter avec le reste des instructions
(Bug)
donc je me suis rabattu sur le fait qu'imperturbablement lors d'une
sélection d'une plage ici la colonne la cellule Active se trouve toujours sur
la première cellule de la plage
Ce qui donne en résumé ce code globale :
For i = Range("A1").Column To Range("D1").Column
Columns(i).Select
Selection.TextToColumns Destination:¬tiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Next
J'espère que tu as tout compris pret à voler de tes propres ailes dans les
méandres du VBA d'Excel
Tu as de trés bonnes idées qui pêchent quelque peu d'imperfections
La solution est de mettre ceci :
For i = Range("A1").Column To Range("D1").Column
Puis donc il faut sélectionner la colonne à traiter en fonction du chiffre
représenté par la variable i
Columns("i:i").Select
mais cette syntaxe pour cette instruction nécessite des lettres représentant
la colonne comme pour la colonne A ainsi :
Il y aurait la solution d'utiliser l'instruction Cells qui elle marche avec
uniquement la ligne et la colonne en chiffre
Mais cette dernière n'arrive pas à cohabiter avec le reste des instructions
(Bug)
donc je me suis rabattu sur le fait qu'imperturbablement lors d'une
sélection d'une plage ici la colonne la cellule Active se trouve toujours sur
la première cellule de la plage
Ce qui donne en résumé ce code globale :
For i = Range("A1").Column To Range("D1").Column
Columns(i).Select
Selection.TextToColumns Destination:¬tiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Next
J'espère que tu as tout compris pret à voler de tes propres ailes dans les
méandres du VBA d'Excel