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

Excel Discussion :

Masquer / afficher une colonne comment faire ?


Sujet :

Excel

  1. #1
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    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
    Pignouf

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bonjour,

    Plusieurs choses :



    Pourrais-tu mettre le code que tu as déjà commencé ?

  3. #3
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    J'ai testé le code suivant sur un fichier test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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
    En C2, j'ai définit une fonction : si(C1=1;1;0)
    Cela ne fonctionne pas, par contre si je transforme la formule comme ceci N(si(C1=1;1;0)) alors la colonne A est masquée MAIS lorsque je change la valeur de C1 la colonne A reste toujours masquée !!!

    Je ne pige pas pourquoi !
    Pignouf

  4. #4
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    J'ai été trop vite dans mon post précédent...

    J'ai testé le code suivant :

    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
    Il fonctionne très bien si en C2 j'ai une valeur. Par contre si en C2 j'ai la fonction si(C1=1;C1;C1) il n'y a aucun événement qui passe ... même si je transforme en N(si(C1=1;C;C1))
    Je ne vois pas pourquoi. Pourquoi l'écriture d'une fonction change tout ?
    Pignouf

  5. #5
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Bête question : Pourquoi ?
    Tu auras toujours C1. Non ?

    De plus, la cellule pointée par le paramètre 'Target' de 'Worksheet_Change' est celle qui est modifiée à la main. Donc, je pense que tu dois passer par une autre procédure ou peut-être utiliser 'Worksheet.Calculate()'.

  6. #6
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    oui effectivement C2 donne toujours la valeur de C1. C'est fait exprès et ce afin de voir si cela fonctionne lorsque j'ai une fonction.

    Non le pointeur n'est pas dirigée vers la cellule modifiée à la main mais bien sur celle définie par la formule.

    En utilisant Calculate() j'ai une erreur (code 424) et en plus cela ne fonctionne pas...

    Je ne trouve pas comment faire ...
    Pignouf

  7. #7
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 864
    Points
    3 864
    Par défaut
    Il faut donc changer ton approche ...

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/09/2012, 12h04
  2. Masquer et Afficher une colonne
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/09/2006, 10h38
  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