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 :

Ouvrir fermer ligne d'un plan sous condition [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Ouvrir fermer ligne d'un plan sous condition
    Bonjour,

    Je cherche à créer un genre de formulaire, où les lignes pourraient s'ouvrir si une condition est remplie.

    Je m'explique, je crée des rubriques avec quelques lignes de détails que je met en mode plan ce qui me permet de les cacher ou de les ouvrir à volonté.

    Cependant comment n'ouvrir que certaines lignes ?
    La séquence suivante ouvre ou ferme toutes les lignes de niveau 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Outline.ShowLevels RowLevels:=2
    comment n'ouvrir que les lignes 7 à 8 par exemple.

    Dans mon exemple, je voudrais que l'utilisateur puisse ouvrir la rebrique equipement que si les zone forunisseur ont été renseignée.
    (L'enregisteur de macro est muet au clic des boutons plus ou moins des plans.

    Merci pour vos conseils
    Denis
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Bonjour,

    Un début de piste.



    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Plage_equipement As String
     
    Plage_equipement = "6:8"
     
     
    If IsEmpty(Range("B2")) = False And IsEmpty(Range("B3")) = False Then
         Rows(Plage_equipement).Select
        Selection.EntireRow.Hidden = False
        'Selection.Rows.Group
    Else
        Rows(Plage_equipement).Select
        Selection.EntireRow.Hidden = True
    End If
     
    End Sub
    Cordialement,

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Merci pour la suggestion, mais j'aimerais si possible utiliser le mode plan.
    ... à suivre.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows(7).ShowDetail = True 'ou False
    eric

  5. #5
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    Merci Eric, toujours aussi éprouvé !

    En complément, il faut tester si la ligne est affichée ou cachée avant de passer en True/False pour eviter une erreur.
    Cette instruction ferme le niveau de la ligne
    C'est à dire qu'il suffit d'adresser une ligne du niveau pour fermer touts les lignes du niveau
    De la même manière on peut

    Cela répond à mon besoin.

    Sans vouloir abuser peut-on parcourir les lignes (colonnes) et connaitre le niveau de plan de la ligne ? 0 - 1 - 2 ...
    Est ce que les plans sont només ?

    Bonne journée
    Denis

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    J'avais eu le même besoin à l'époque et je n'ai pas trouvé.
    Je m'étais résolu à balayer les lignes vers le haut et vers le bas pour trouver les lignes d'un groupe.
    La 1ère est celle qui suit Rows(lig).OutlineLevel=1 (1ère ligne non groupée, tant que ce n'est pas Rows(1)), la dernière est celle qui a Rows(lig).Summary=True
    Ceci dans la mesure où tu n'as pas des plans qui en recouvre d'autres. Dans ce cas il faut tenir compte de la valeur des .OutlineLevel, le plan le plus interne ayant le nombre le plus élevé.
    eric

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

Discussions similaires

  1. [XL-2003] Copie de lignes vers le bas sous condition
    Par snowcho dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/02/2010, 17h08
  2. Réponses: 8
    Dernier message: 24/01/2010, 21h11
  3. Smartforms - Arrière-plan sous condition
    Par chacha_bdx dans le forum SAP
    Réponses: 1
    Dernier message: 30/03/2009, 13h23
  4. Effacer une ligne dans un etat sous condition
    Par denisfavre dans le forum IHM
    Réponses: 5
    Dernier message: 23/11/2006, 17h18
  5. Réponses: 5
    Dernier message: 19/06/2006, 14h17

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