IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

grouper lignes selon contenu d'1 cellule de la ligne ? [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    métreur (MŒ bât.)
    Inscrit en
    Juillet 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : métreur (MŒ bât.)
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2011
    Messages : 41
    Par défaut grouper lignes selon contenu d'1 cellule de la ligne ?
    Bonjour,
    Je travaille sur Office Pro + 2016,

    Je cherche à grouper des lignes selon le contenu d'une cellule dans cette même ligne.
    exemple : dans ma feuille les cellules B1, B2 et B5 contiennent le texte "-" (le code que je veux indiquer pour grouper ces lignes),
    puis en cliquant sur un bouton macro (ou lien), les lignes 1, 2 et 5 sont groupées afin que je puissent les cacher et afficher quand je veux.


    Mais si par la suite je veux modifier les lignes à grouper, je veux que seuls les lignes dont le code "-" est présent dans la ligne ce groupent et donc annule ceux qui ont été supprimé.
    exemple : je supprime "-" de B5 et ajoute dans B8. En recliquant sur ce même bouton, seules les lignes 1, 2 et 8 sont groupées.

    Merci.

    PS :
    Ça fait longtemps que j'ai pas touché au VBA, je suis un peu pommé en code.
    Si vous me donnez un code, expliquez-le moi SVP.

  2. #2
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Qu'entends tu par grouper ???
    Ca veut dire qu'a chaque fois que tu clique sur le bouton elles se cachent ou apparaissent suivant le contexte ?

    Dans ce cas la je peux te proposer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub hh()
     
    Dim tabl As Variant: Dim tabl2() As String
    Dim x As Range: Dim flag As Range
     
    Range("A1:A65536").EntireRow.Hidden = False 'fait apparaitre toute les lignes
     
    Set flag = Range("A2:A100").Find("-", , , xlWhole) 'prends la première case avec ton code, ici "-"
    tabl = flag.Address: Set x = Range("A2:A100").FindNext(flag) 'enregistre la 1re occurence et cherche la prochaine
    Do Until x.Address = flag.Address 'si l'adrresse de la 1re occurence correspond avec celle de la 2e on passe à la suite
    tabl = x.Address & "/" & tabl 'si c'est pas le cas on enregistre la 2e occurence
    Set x = Range("A2:A100").FindNext(x) 'on cherche la prochaine occurence
    Loop 'on revient sur le Do
     
    tabl2 = Split(tabl, "/") 'on mets dans un tableau toute les adresses des occurences
    For Each i In tabl2 'pour chacune des adresses trouvées
    Range(i).EntireRow.Hidden = True 'on cache la ligne
    Next 'prochaine adresse
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    métreur (MŒ bât.)
    Inscrit en
    Juillet 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : métreur (MŒ bât.)
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2011
    Messages : 41
    Par défaut
    Citation Envoyé par Al__22 Voir le message
    Qu'entends tu par grouper ???
    Ca veut dire qu'a chaque fois que tu clique sur le bouton elles se cachent ou apparaissent suivant le contexte ?
    je parle de la fonction Grouper du menu Données : le petit [+] sur le côté gauche quand les lignes sont groupées et cachées ou en [-] lorsqu'elles sont affichées

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    je parle de la fonction Grouper du menu Données
    et
    exemple : dans ma feuille les cellules B1, B2 et B5 contiennent le texte "-" (le code que je veux indiquer pour grouper ces lignes)
    Impossible. Ne peuvent être ainsi groupées que les cellules d'une plage continue (cellules continues).
    Rien ne t'empêche pas contre de définir une plage (par l'instruction Set et au besoin la méthode Union) pour agir ensuite comme tu l'entends sur cette plage.

  5. #5
    Membre averti
    Homme Profil pro
    métreur (MŒ bât.)
    Inscrit en
    Juillet 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : métreur (MŒ bât.)
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2011
    Messages : 41
    Par défaut
    Merci Al__22, ton code est une bonne base
    mais il cache les cellules, il ne les groupes pas.

    Je peux peut-être retrouver le code de la la fonction avec l'enregistreur de macro.

    Citation Envoyé par unparia Voir le message
    Impossible. Ne peuvent être ainsi groupées que les cellules d'une plage continue (cellules continues).
    Rien ne t'empêche pas contre de définir une plage (par l'instruction Set et au besoin la méthode Union) pour agir ensuite comme tu l'entends sur cette plage.
    Oui quand je dis grouper, ce n'est pas forcément en 1 seul groupe. B1 et B2 seront groupées ensemble et B5 "groupée" seule (avec le petit [+] ou [-] ) puisqu'il y a B3 et B4 entre.
    Ma plage c'est Biarritz ...heu c'est la feuille active.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ma plage c'est Biarritz
    La mienne en est toute proche (vraiment très proche) , mais fréquentée par des gens qui connaissent le sens des mots, d'une part, et ont la tête bien sur les épaules, d'autre part (ainsi que, pour beaucoup d'entre eux, les pieds bien calés sur leur planche)..
    Pour ce qui est de ton problème :
    - ce n'est donc pas un "groupage"
    - je t'ai dit (relis moi) comment alors procéder.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Cacher une ligne selon contenu d'une cellule
    Par Think123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/06/2016, 16h22
  2. [XL-2013] VBA / couleurs de lignes selon contenu d'une cellule.
    Par bruno3724 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/11/2015, 16h34
  3. [CSS 2.1] Comment aligner le contenu de ma cellule sur une ligne
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 16/06/2009, 07h31
  4. Compter lignes selon couleur de la cellule
    Par jonathanoudelet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2008, 17h55
  5. Réponses: 4
    Dernier message: 22/01/2008, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo