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 :

Masquer / afficher une colonne comment faire ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 10
    Par défaut Masquer / afficher une colonne comment faire ?
    Bonjour à tous,

    Vous trouverez en annexe un fichier. Celui-ci est constitué, entre autre, des feuilles P1, P2, P3, P4 et P5. Ces feuilles sont identiques.
    Je souhaiterais pouvoir masquer / afficher les colonnes F, G, H, I, J, K, L sur la feuille Px si sur cette feuille Px (indépendance des feuilles) nous avons les conditions suivantes :

    1. F est masquée si et seulement si AT10 est égale à 0 et F est affichée si et seulement si AT10 est différent de 0
    2. G est masquée si et seulement si AV10 est égale à 0 et G est affichée si et seulement si AV10 est différent de 0
    3. H est masquée si et seulement si AX10 est égale à 0 et H est affichée si et seulement si AX10 est différent de 0
    4. I est masquée si et seulement si AZ10 est égale à 0 et I est affichée si et seulement si AZ10 est différent de 0
    5. J est masquée si et seulement si BB10 est égale à 0 et J est affichée si et seulement si BB10 est différent de 0
    6. K est masquée si et seulement si BD10 est égale à 0 et K est affichée si et seulement si BD10 est différent de 0
    7. L est masquée si et seulement si BF10 est égale à 0 et L est affichée si et seulement si BF10 est différent de 0

    (Les cellules sur lesquelles le test est fait sont définies par des formules)

    Affichage / masquage doit pouvoir se faire automatiquement (événementiel)

    Je vous remercie d'avance pour les réponses que vous me donnerez.



    pignouf
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 10
    Par défaut
    j'ai tenté avec le code suivant dans un fichier test (voir annexe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("C2")) Is Nothing Then Exit Sub
    If Target.Value <> 0 Then Columns(1).Hidden = False
    If Target.Value = 0 Then Columns(1).Hidden = True
    End Sub
    Malheureusement cela ne fonctionne pas si la valeur de la cellule C2 est définie par une fonction. Je ne comprend pas pourquoi ...

    En prennant worksheet_Calculate() d'une part cela ne fonctionne pas mais en plus j'ai une erreur

    Quelqu'un peut m'aider ?
    Fichiers attachés Fichiers attachés

  3. #3
    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
    ne fonctionne pas si la valeur de la cellule C2 est définie par une fonction formule. Je ne comprend pas pourquoi ...
    parce-que les formules Excel sont traitées sur un fil ("thread") et que VBA travaille sur un fil distinct.
    Une formule Excel ne déclenche donc pas d'évènement VBA
    Je n'ai pas ouvert ton classeur (ma religion m'interdit de prendre le risque d'ouvrir des classeurs tiers)
    Il devrait te suffire de travailler avec l'évènement change de l'une des cellules qu'utilise ta formule.

    Ceci dit : je n'ai jamais vraiment "aimé" la cohabitation de l'utilisation de formules et de VBA

  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,

    avec Change il faudrait donc que tu supervises les plages de tes somme.si.ens().

    Avec Calculate ça fait un peu plus court et comme tu n'y fais pas grand chose c'est acceptable.
    A mettre dans ThisWorkbook pour traiter toutes les feuilles avec le même code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
        If Left(Sh.Name, 1) = "P" And Val(Mid(Sh.Name, 2)) <= 5 Then
            Columns("AT").Hidden = [AT10] <> 0
            ' etc
        End If
    End Sub

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 10
    Par défaut
    Bonjour,

    Merci unparia pour le hint concernant le thread.

    Merci eriiic pour la macro. Je l'ai implémenté mais elle ne fonctionne pas. J'ai fait cela en cinq minutes... je regarderai cela avec bien plus d'attention le moment venu.

  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,

    Elle fonctionne très bien chez moi.
    Tu as bien mis dans ThisWorkbook comme indiqué ?

Discussions similaires

  1. Masquer / afficher une colonne comment faire ?
    Par pignouf dans le forum Excel
    Réponses: 6
    Dernier message: 24/07/2017, 21h17
  2. Réponses: 10
    Dernier message: 13/09/2012, 12h04
  3. [TDrawGrid]Comment afficher une colonne sur quatre ?
    Par Laurent Dardenne dans le forum Composants VCL
    Réponses: 5
    Dernier message: 11/02/2006, 16h42
  4. Comment afficher une colonne text de SQL-server?
    Par oravelon dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 09h11
  5. comment afficher une image, et faire une interface?
    Par noobiewan kenobi dans le forum Java ME
    Réponses: 7
    Dernier message: 03/08/2005, 11h30

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