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 :

Plusieurs Private Sub Worksheet_Change(ByVal Target As Range)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut Plusieurs Private Sub Worksheet_Change(ByVal Target As Range)
    Bonjour,

    J'ai un formulaire qui est remplie automatiquement via des Vlookup, sur l'information produit.

    Je n'ai à changé qu'une seul cellule (le produit) pour changer toute l'information.


    J'ai tenté d'écrire un code qui vient cacher automatiquement certaine ligne/colonnes quand certaines cases sont vides:

    Code VBA : 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
    20
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Range("k7").Value = 0 Then
            Columns("k").EntireColumn.Hidden = True
        Else
            Columns("k").EntireColumn.Hidden = False
     
            End If
            End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Range("c19").Value = 0 Then
     
            Rows("19:83").EntireRow.Hidden = True
        Else
            Rows("19:83").EntireColumn.Hidden = False
     
            End If
            End Sub

    Mon code fonctionne individuellement... Je sais qu'on ne peut pas avoir plusieurs Private Sub Worksheet_Change, j'ai alors tenté la variante suivante:

    Code VBA : 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)
     
        If Range("k7").Value = 0 Then
            Columns("k").EntireColumn.Hidden = True
        Else
            Columns("k").EntireColumn.Hidden = False
     
            End If
     
        If Range("c19").Value = 0 Then
     
            Rows("19:83").EntireRow.Hidden = True
        Else
            Rows("19:83").EntireColumn.Hidden = False
     
            End If
     
            End Sub

    Mais ça ne fonctionne pas. Mes deux if doivent être validé pour que le code fonctionne. Si k7 =0 mais pas c19 ça ne fonctionne pas et vice versa...

    Une idée?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        Select Case Target.Address
            Case "$C$19"
                Rows("19:83").EntireRow.Hidden = Range("c19").Value = 0
            Case "$K$7"
                Columns("k").EntireColumn.Hidden = Range("k7").Value = 0
        End Select
    End Sub

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    Bonjour,

    Je dois sélectionner la cellule pour que le code fonctionne. Vu que ces cellules (c19, et k7) sont des Vlookup, l'utilisateur n'y touche pas...

    La seul cellule que l'utilisateur peut changer est la cellule f4 (code produit), tous mes autres champs sont des Vlookup.

    Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    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 Not Intersect(Target, Range("F4")) Is Nothing Then
            Rows("19:83").EntireRow.Hidden = Range("c19").Value = 0
            Columns("k").EntireColumn.Hidden = Range("k7").Value = 0
        End If
    End Sub

    Une description précise = une réponse au plus précis de la demande

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/11/2015, 20h41
  2. [XL-2007] Ajouter une "Target" à Private Sub Worksheet_Change(ByVal Target As Range)
    Par 'OTM' dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 19/12/2014, 15h21
  3. [Toutes versions] Private Sub Worksheet_Change(ByVal Target As Range) et protection
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2013, 11h21
  4. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 13h57

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