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 :

Outline hidden line [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2009
    Messages : 72
    Par défaut Outline hidden line
    Bonjour,

    j'ai un fichier qui contient une colonne définissant un flag (0/1) .

    j'ai écrit une macro qui parcours toute la colonne et qui fait un rows.hidden sur toutes les lignes qui ont le flag=0.

    mon problème est que mon fichier contient des Outline avec subtotal. et quand je clique sur expand/collapse, toutes les lignes réapparaissent.

    est ce qu il existe un moyen d'annuler ce comportement et de maintenir les lignes cachées ou suis-je obligé de tracker l'Event d'expand/collapse pour recacher toutes mes lignes a chaque fois.


    merci pour vos conseils ou votre aide

    Cyborg PA

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2009
    Messages : 72
    Par défaut [XL-2010] Outline hidden line
    eh eh ,

    un an après même problème et personne à répondu à ma question ...

    mais comme j'avais trouvé et RE-trouvé la solution , cette fois je vous la donne.

    quand on fixe la taille d'une ligne à 0 avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, j).RowHeight = 0
    Excel ne change pas la taille de la ligne mais la cache .

    idem en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, j).EntireRow.Hidden = True
    ce qui fait que lorsqu'on EXPAND les OUTLINE sur le coté (niveau des SUBTOTAL)

    la ligne reprend sa taille qu'elle avait avant d'avoir fixé à 0

    si on veut cacher la ligne et qu'elle ne reaparaisse pas il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, j).RowHeight = 0.1

  3. #3
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Pardon Somnix,
    Un an! aprés et personne ne donne une réponse à Somnix, mais c'est de la honte
    je suis vraiment navré Somnix.
    Allez, dites-moi, les flags sont des formules ou bien des valeurs que vous entrez vous même manuellement?

    Si c'est le cas et que vous les tapez à la main, il serait trés utile d'automatiser cette tache à l'aide une Checkbox ou d'un bouton Bascule (Toggle Button) comme suite:

    1]-Insérer le bouton bascule ou la checkbox au dessus du tableau
    Le controle devrait analyser toutes les cellules de la plage qui contient les valeurs des flag, puis detecte celle qui premiérement ne sont pas des formules, et deuxiémement celles dont les valeurs = 0
    Donc si c'est un Boutton Bascule vous fairiez par exemple:
    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
    Private Sub ToggleButton1_Click()
    Dim rng As Range
    Application.ScreenUpdating = False
    If ToggleButton1.Value = True Then
        For Each rng In Range("A2:A300").Cells
        If Not rng.HasFormula And rng.Value = 0 Then
        rng.EntireRow.Hidden = True
        End If
        Next
        Else
        For Each rng In Range("A2:A300").Cells
       If Not rng.HasFormula And rng.Value = 0 Then
        rng.EntireRow.Hidden = False
        End If
        Next
    End If
    Application.ScreenUpdating = True
    End Sub
    S'il s'agit d'une Checkbox alors:

    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
    Private Sub CheckBox1_Click()
    Dim rng As Range
    Application.ScreenUpdating = False
    If CheckBox1.Value = True Then
        For Each rng In Range("A2:A300").Cells
        If Not rng.HasFormula And rng.Value = 0 Then
        rng.EntireRow.Hidden = True
        End If
        Next
        Else
        For Each rng In Range("A2:A300").Cells
       If Not rng.HasFormula And rng.Value = 0 Then
        rng.EntireRow.Hidden = False
        End If
        Next
    End If
    Application.ScreenUpdating = True
    End Sub
    N'hésitez pas pour demander plus d'explications et d'idées.

    Cordialement
    Karim

    Pardon,
    Les codes si-desssus seraient aussi valides, si les valeurs du Flag sont recupérées à partir d'une liste de validation, ou à partir d'une valeur d'un autre objet tel qu'un combobox, Textbox, Spinbutton, etc ...
    Merci.

    Karim

    Somnix,
    Vous savez!,
    en disant Merci "tout court" aprés avoir marqué "résolu" à votre probléme, on aurait compris que celà aurait marché, et que les autres pourront essayer le code.

    Bonne Journée.

    Karim
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

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

Discussions similaires

  1. JList en line wrapping
    Par dreydrey dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2003, 11h22

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