VBA ! Grouper des lignes

Hello,

Je cherche à grouper des lignes.

Je veux grouper la partie blanche dans mon fichier exemple et ne garder que les parties en couleur.

Sachant que les parties blanches peuvent varier ... Dans l'exemple c'est 2 pour PLUTON et 2 pour VENUS mais cela peut être 3 PLUTON et 2 VENUS par exemple....

De même que je n'ai pas que 2 planètes ...

Merci pour votre précieuse aide

18test-group.xlsx (8.44 Ko)

Bonjour,

A2:A3 et identiques sont réellement toujours vides, et sans formule ?

Dans l'exemple c'est 2 pour PLUTON et 2 pour VENUS mais cela peut être 3 PLUTON et 2 VENUS par exemple....

2 quoi ? Pour les deux tu as 2 groupes de 2 lignes sans le nom groupées...

eric

Hello Eric,

A2:A3 est toujours vide et toujours sans formule, je te confirme.

2 bloc blancs. Mais je peux avoir 1 bloc de couleur et 3 bloc blanc pour PLUTON et 1 bloc de couleur et 2 bloc blanc pour VENUS.

La colonne C ne change pas.

Merci à toi.

Bonjour Rag02700, eriiic,

je te retourne ton fichier modifié :

13test-group.xlsm (14.04 Ko)
tu a écrit :

ne garder que les parties en couleur

Ctrl etoutes les lignes blanches ont été supprimées : il reste que les lignes en couleur


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Re,

je propose ce 2ème fichier (autre version) :

14test-group.xlsm (14.87 Ko)
tu a écrit :

grouper la partie blanche

Ctrl etoutes les lignes blanches ont été groupées en bas de liste, puis masquées (cachées)

pour voir les lignes 7 à 18 : sélectionne les lignes 6 et 19 ; clic droit sur la sélection ; item Afficher


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Hello dhany,

Il est bien ton algo

La nuance, est qu'il n'y a pas de lignes blanches dans mon vrai fichier, elles sont toutes jaunes pour PLUTON et bleu pour VENUS.

Je viens de mettre des titres à mes colonnes pour être plus clair dans ma demande :

Dans mon fichier, j'ai la PLANETE et les INDICATEUR (c'est un total) en premier (PLUTON dans le fichier).

Ensuite j'ai un détail avec en LA PLANETE + LA NATURE + INDICATEUR

Ce detail je peux en avoir x, dans l'exemple PLUTON j'ai ROCHER et TERRE.

Et moi je veux juste grouper par cette fonction =>

    Rows("5:10").Select
    Selection.Rows.Group
    ActiveSheet.Outline.ShowLevels RowLevels:=1
    Rows("14:19").Select
    Selection.Rows.Group
    ActiveSheet.Outline.ShowLevels RowLevels:=1

Comme ça en cliquant sur le petit 1 du groupe ça réduit tout, petit 2 ça ouvre tout et si je veux je peux aussi utiliser le + ou le - des groupes

Merci à toi

13test-group.xlsm (14.40 Ko)

Re,

Voici mon code qu'en pensez-vous ?

(Je ne suis pas développeur de métier )

Sub group()
Dim derl As Byte
Dim ligne As Byte
Dim F_lig As Byte
Dim L_lig As Byte

ligne = 2
derl = Application.WorksheetFunction.CountA(Columns(3))

Range("A" & ligne).Select

     For i = 2 To derl
         If ActiveCell.Value <> "" Then
                While ActiveCell.Offset(0, 1).Value <> ""

                    If ActiveCell.Offset(-3, 1).Value = "" Then
                          F_lig = ligne

                     ElseIf ActiveCell.Offset(3, 1).Value = "" Then
                        L_lig = (ligne + 3) - 1
                        Range("A" & F_lig & ":C" & L_lig).Rows.group

                        ActiveSheet.Outline.ShowLevels RowLevels:=1
                     End If

                        ligne = ligne + 3
                        Range("A" & ligne).Activate
                Wend

                ligne = ligne + 3

                Range("A" & ligne).Select

            Else: Exit Sub

          End If

     Next i

End Sub
13test-group.xlsm (17.42 Ko)
tu a écrit :

il n'y a pas de lignes blanches dans mon vrai fichier, elles sont toutes jaunes pour PLUTON et bleu pour VENUS.

t'as fait une erreur : c'est bleu pour les garçons nommés "PLUTON" et rose pour les filles nommées "VENUS" !


tu a écrit :

Et moi je veux juste grouper

ben alors c'est encore plus simple ! c'est fait dans ce nouveau fichier :

25test-group.xlsm (15.50 Ko)

Ctrl e ➯ travail effectué !

merci de me donner ton avis.

dhany

@Rag02700

tu a écrit :

Je ne suis pas développeur de métier

ah ben oui, ça se voit ! nan, allez, je blague : j'suis pas non plus développeur de métier, et ton code est pas trop mal !

mais il a plutôt tendance à faire des petits, dès la 1ère utilisation :

screen

si tu essayes mon dernier fichier, tu verras qu'il n'a pas cet inconvénient ; de plus, l'algorithme est plus général :

sinon, tu pourras jamais tester le beau code VBA qu'j'ai fait pour toi !

dhany

@Rag02700

lis d'abord mon post précédent, puis celui-ci.


mauvaise nouvelle : tu peux pas faire autant d'miracles que JC : ta multiplication des niveaux est limitée à 8 !

oui, car juste après, si tu exécutes une nouvelle fois ta macro group() : boum ! erreur d'exécution :

screen

car un plan n'peut pas avoir plus d'8 niveaux ! ton code VBA finit dans les choux !

code VBA de Rag02700 en transit, et en attente d'être débogué :

dhany

Merci pour ton code il marche très bien

A très bientôt pour un algo + complexe

merci pour ton retour, et pour avoir passé le sujet en résolu !

bonne continuation !

dhany

Re

Je te donne mon vrai fichier il y a une subtilité ensuite ... et du coup je n'arrive pas à adapter ton code

Je t'ai mis le regroupement que je souhaite à la mano, est-il possible pour toi d'adapter ton code stp ?

Merci à toi.

5group-test-v2.xlsm (32.46 Ko)
Rag02700 a écrit :

Je te donne mon vrai fichier il y a une subtilité ensuite ... et du coup je n'arrive pas à adapter ton code

en fait, y'a 4 grosses subtilités :

* c'est plus dans l'astronomie ! elles sont passées où, mes jolies planètes ? alors c'est fini ? tu vas plus

pouvoir prédire la date de la fin du monde ? moi qui croyais qu't'étais plus infaillible que l'calendrier aztèque, c'est loupé !

* c'est en références L1C1 ! alors, on n'aime plus les références A1 ? tu veux retourner à Lotus 1-2-3 ?

* ça commence en colonne 2 et ligne 5 ! qu'est-ce que c'est dur, hein, d'fournir un fichier exemple qui commence pareil, en B5 !

mais non, fallait qu'sur l'fichier exemple, la 1ère donnée soit en A2 au lieu de B5 ! faut croire qu'c'était « Mission impossible ! »

* y'a plein d'cellules fusionnées ! ah ben là, ça change pas mal de choses, hein ? et après on s'étonne qu'la macro

veut pas faire l'même boulot qu'sur l'fichier exemple, qui lui contenait aucune cellule fusionnée !

j'vais travailler d'ssus, mais ça va m'prendre un bon moment !


mais qu'est-ce qu'ils ont donc tous, ces demandeurs,

non représentatif du fichier réel ?


et après, ça s'demande pourquoi le code VBA fourni veut pas marcher !

qui croyait pouvoir le faire lui-même a pas réussi ? c'est bibi !

dhany

Oui je sais dsl

Ton code fonctionne j'ai changé les numéros de lignes, le problème c'est au niveau de TEM OPM c'est a partir de là... Mais c'est normal c'est de ma faute ...

Merci M'sieur

ça y'est, ton jouet est réparé, et il est comme neuf !

11group-test-v2.xlsm (34.71 Ko)

c'est marrant, des fois, j'ai l'impression d'être le Père Noël !

dhany

Merci dhany,

Je vais être embêtant dsl

quand j’exécute ton code il y a des prénoms en colonne 2 qui apparaissent... et mon but c'est que tous les groupes de lignes avec en colonne 2 les prénoms soient groupées...

dsl dhany

Bonjour Rag02700,

nouvelle version :

28group-test-v3.xlsm (35.15 Ko)

Ctrl e ➯ travail effectué


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Hello dhany,

Merci pour le boulot effectué

C'est top ! T'es le meilleur

A+

merci pour ton retour ! bonne continuation !

n'oublie pas tes achats d'Noël pour très bientôt !

dhany

Rechercher des sujets similaires à "vba grouper lignes"