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 colonne automatiquement avec condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut Masquer/afficher colonne automatiquement avec condition
    Bonjour,

    Je voudrai que lorsqu'une case est vide, une colonne soit masquée.
    J'ai écris ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub AFFICHER()
    '
    '
       Range("K5:K40").Select
        If Range("K5").Value = "" Then
         Columns("L:L").Select
       Range("L:L").EntireColumn.Hidden = True
        Else
         Range("L:L").EntireColumn.Hidden = False
        End If
     
    End Sub
    Il fonctionne si je fais executer macro.
    Comment faire pour que celui ci fonctionne dès que l'on saisi une valeur dans la case K5 la colonne L s'affiche?

    Merci
    Seb

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    à mettre dans l'évènement change de ta feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K5"), Target) Is Nothing Then Columns("L:L").Hidden = Range("K5") = ""
    End Sub
    C'est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K5"), Target) Is Nothing Then
        If Range("K5") = "" Then
            Columns("L:L").Hidden = True
        Else
            Columns("L:L").Hidden = False
        End If
    End If
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut Merci
    Merci pour la réponse.

    ça ne marche pas avec la cellule K5 car il y a une formule.
    Donc je l'ai étendu aux autres cellules, le probleme c'est que ça va jusqu'à la cellule K40. J'ai commencé a écrire ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K:K"), Target) Is Nothing Then
        If Range("K6") = "" And Range("K7") = "" And Range("K8") = "" And Range("K10") = "" And Range("K11") = "" And Range("K12") = "" And Range("K13") = "" And Range("K14") = "" And Range("K15") = "" And Range("K16") = "" Then
            Columns("L:L").Hidden = True
        Else
            Columns("L:L").Hidden = False
        End If
    End If
    End Sub
    Dois je faire toutes les cellules comme ça ou y a t'il un moyen pour dire les cellules (K5:K40)="" ?

    Merci encore pour vos aides

    Bonne soirée

    Seb

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu n'as pas de formules dans les cellules K6:K40 tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K6:K40"), Target) Is Nothing Then Columns("L:L").Hidden = Application.CountA(Range("K6:K40")) = 0
    End Sub
    qui revient au même que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K6:K40"), Target) Is Nothing Then
        If Application.CountA(Range("K6:K40")) = 0 Then
            Columns("L:L").Hidden = True
        Else
            Columns("L:L").Hidden = False
        End If
    End If
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Merci beaucoup pour l'aide apportée
    J'avais des formules encore dans la colonne donc j'ai pris le deuxieme code. ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range("K6:K40"), Target) Is Nothing Then
        If Application.CountA(Range("K6:K8")) = 0 And Application.CountA(Range("K10:K16")) = 0 And Application.CountA(Range("K18:K24")) = 0 And Application.CountA(Range("K26:K32")) = 0 And Application.CountA(Range("K34:K40")) = 0 Then
            Columns("L:L").Hidden = True
        Else
            Columns("L:L").Hidden = False
        End If
    End If
    End Sub
    Merci encore

    Bonne soirée

    Seb

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

Discussions similaires

  1. Concaténation de champ automatique avec conditions
    Par Geo-x dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/06/2012, 19h09
  2. [Débutant] masquer/afficher colonnes d'un datagrid par code
    Par ozthewizard dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/09/2011, 16h30
  3. masquer/afficher un div avec + ou -
    Par chougadosu dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 09/06/2011, 15h44
  4. masquer/afficher un div avec + ou -
    Par chougadosu dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/06/2011, 12h08
  5. [MySQL] Afficher résultat formulaire avec conditions
    Par yanng dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/06/2008, 15h56

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