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 :

Déclenchement de macros à partir de la valeur d'une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2024
    Messages : 7
    Par défaut Déclenchement de macros à partir de la valeur d'une cellule
    Bonjour,

    Je souhaite déclencher alternativement deux macros en fonction du contenu d'une cellule qui est une case à cocher.
    J'ai écrit le script suivant et rien ne se passe quand je coche la cellule C1.
    Les deux macros appelées (Pays_Retenus et Tous_Pays) fonctionnent indépendamment normalement.

    Private Sub worksheet_change(ByVal target As Range)
    Set target = Range("C1")
    If target.Value = VRAI Then
    Call Pays_Retenus
    Else
    Call Tous_Pays
    End If
    End Sub

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a une incohérence dans votre code.
    En effet Target est l'objet Range où a lieu le changement de valeur or vous lui assignez une autre cellule soit C1
    Je vous conseille la lecture de ce tutoriel Les évènements dans la feuille de calcul Excel
    De plus la ligne If target.Value = VRAI n'est pas correcte remplacez VRAI par True

    [EDIT]
    Voici un exemple de code. qui intercepte l'événement de changement de valeur qui a lieu dans la colonne Check d'un tableau structuré nommé "t_Data"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
      Const LabelName As String = "Check"
      Const TableName As String = "t_Data"
      Dim oList As ListObject, oRange As Range
      Set oList = Range(TableName).ListObject
      Set oRange = oList.ListColumns(LabelName).DataBodyRange
      If Not Application.Intersect(Target, oRange) Is Nothing Then
         ' Ici le code
         With Target
           MsgBox "Vous avez cliqué sur " & .Address & " sa valeur est " & .Value
         End With
      End If
      Set oList = Nothing: Set oRange = Nothing
    End Sub
    Illustration
    Nom : 241231 dvp Worksheet_Change Intersect.png
Affichages : 44
Taille : 24,0 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 203
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Pour compléter les remarques de Philippe, faire attention au fait que Change peut affecter plusieurs cellules à la fois (par exemple si on efface le contenu d'une sélection (touche Suppr))
    Si on ne veut pas que le code plante dans ce cas, prévoir de boucler sur toutes les cellules affectées

    du genre (sur base de l'exemple de Philippe)

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      Const LabelName As String = "Check"
      Const TableName As String = "t_Data"
      Dim oList As ListObject, oRange As Range, Cellule as Range
      Set oList = Range(TableName).ListObject
      Set oRange = oList.ListColumns(LabelName).DataBodyRange
      If Not Application.Intersect(Target, oRange) Is Nothing Then
         ' Ici le code
         For each Cellule in Application.Intersect(Target, oRange).cells
         With Cellule
           MsgBox "Vous avez cliqué sur " & .Address & " sa valeur est " & .Value
         End With
         Next
      End If
      Set oList = Nothing: Set oRange = Nothing
    End Sub

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2024
    Messages : 7
    Par défaut
    Merci à tous les deux.
    Je vais tester mais après le réveillon.
    Bonne fête !!

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

Discussions similaires

  1. [XL-2003] Macro copier/coller la valeur d'une cellule sur une cellule [Colone fixe - Ligne N+1 ]
    Par faustina dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/06/2018, 14h20
  2. Réponses: 8
    Dernier message: 10/01/2017, 20h28
  3. Réponses: 2
    Dernier message: 29/05/2014, 17h00
  4. Extraction d'une liste à partir de la valeur d'une cellule
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2012, 20h07
  5. Charger Macro apres changement de valeur d'une cellule
    Par jackfred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2007, 14h51

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