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 :

Exécution automatique d'une macro [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut Exécution automatique d'une macro
    Bonjour,
    N'ayant toujours pas résolu mon problème sur l'exécution automatique d'une macro, je réitère une demande d'aide.
    J'aimerais simplement qu'une macro toute simple s'exécute automatiquement si une cellule contient "faux".
    Voici la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
     
      If Sheets("Donnees").Range("J1") = FAUX Then
     
        Sheets("Patient").Range("F14").ClearContents
        Sheets("Patient").Range("F15").ClearContents
        Sheets("Patient").Range("H14").ClearContents
        Sheets("Patient").Range("H15").ClearContents
     
      End If
    End Sub
    J'ai placé cette macro dans toutes les feuilles du projet mais impossible de l'exécuter même en mode "pas à pas", même si je place mon curseur devant le "If" et que je demande l'exécution jusqu'au curseur, rien ne se passe.
    Le code du "If Sheets.... End if" fonctionne lorsque je le place dans une autre macro.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    alors pour commencer Faux en VBA c'est False

    Ensuite, tu mets ton code avec l'évènement worksheet_Change, mais peux-tu nous dire exactement à quel moment tu voudrais que cette macro se déclenche ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    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,

    écrire "FAUX" dans une cellule, revient (évaluations et conversions implicites excel/vba) à lui assigner un opérateur booléen False

    D'une part, tu as écrit FAUX sans guillemets donc c'est une variable non déclarée, variant, et vide !
    D'autre part, à mon humble avis, remplace ce FAUX par False et ça devrait maintenant fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ioi()
        If ActiveCell.Value = False Then MsgBox "toto"
    End Sub
    Attention, si la cellule contient le chiffre 0, c'est considéré aussi comme FAUX

    Je déconseille le mélange des genres (écrire un "mot" qui est évalué comme un autre type)

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut
    Bonjour,

    Pour être plus précis, le VRAI ou FAUX
    est simplement créé par un 'Bouton de Contrôle' dont la cellule liée est le "Donnees!J1" et c'est en cliquant sur ce bouton que cette cellule met le mot "VRAI" si coché et "FAUX" si décoché.
    Comme je le dis dans mon message, le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Donnees").Range("J1") = FAUX
    fonctionne parfaitement dans une autre macro, j'aimerais simplement qu'il s'exécute automatiquement en "décochant ce bouton.
    J'espère que ces informations pourront vous aider à voir plus clair
    Merci

  5. #5
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j'aimerais simplement qu'il s'exécute automatiquement en "décochant ce bouton.
    Utilise tout simplement le bouton ActiveX ToggleButton
    Exemple d'un code à placer dans le module de la feuille où se trouve le bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ToggleButton1_Click()
     With Me.ToggleButton1
      Sheets("Donnees").Range("J1") = .Value
      .Caption = Not (.Value) ' Affiche la valeur inverse
     End With
    End Sub
    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

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour Philippe,

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Utilise tout simplement le bouton ActiveX ToggleButton
    Je n'ai pas essayé avec ton ToggleButton, mais dans son autre question d'hier sur le même sujet, c'est qu'il veut que le passage à False d'une cellule déclenche automatiquement sa macro. Sans compter le fait qu'il veut tester son booléen False en utilisant "Faux" (String). Sauf que la modification de la cellule de True à False avec son bouton liée ne déclenche pas l'événement Worksheet_Change, (pareil chez-moi (Excel 2016)), même si son bouton lié fonctionne. Donc si ton ToggleButton ne provoque pas le déclenchement de l'événement, il va revenir dire que cela marche pas...

    Probablement que s'il assignait une macro de remise à zéro à son bouton et qu'il abandonnait son idée de cellule liée, cela marcherait. À la condition de tester un booléen et pas un texte.

    Ajouté: Oui, le clic sur le ToggleButton déclenche le Worksheet_change

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut
    Bonjour,

    Désolé de répondre seulement maintenant (Vacances oblige....).
    Je suis sur un autre ordi (un mac) et j'essayerai demain le "ToggleButton".

    Merci beaucoup pour vos interventions.

    Michel

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

Discussions similaires

  1. Exécution automatique d'une macro sans changer de cellule.
    Par JacksonTri dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/06/2014, 19h44
  2. [XL-2003] passer d'une exécution automatique à un bouton macro
    Par titou8333 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/12/2010, 12h03
  3. Exécution automatique d'une macro
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2008, 19h19
  4. Syntaxe:Exécution automatique d'une macro
    Par bebertol dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2007, 11h20
  5. exécution automatique d'une macro
    Par faayy dans le forum Access
    Réponses: 12
    Dernier message: 15/06/2005, 14h52

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