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 :

Lancer une macro après avoir cliquer sur une case à cocher [XL-2016]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut Lancer une macro après avoir cliquer sur une case à cocher
    Bonjour,

    J'aimerai lancer une macro après avoir cliqué sur une case à cocher formulaire.

    La macro est simple c'est juste pour décocher les deux autres case à cocher.

    Je travaille avec les case à cocher formulaire car avec les ActiveX c'est moins protique de les cocher par un simple clic.

    J'ai essayé de mettre mon code dans " Private Sub Worksheet_Change(ByVal Target As Range " mais cela ne fonctionne pas.

    Merci pour votre aide

    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
     
    If ActiveSheet.Shapes("Check Box 4").ControlFormat.Value = xlOn Then
       ActiveSheet.Shapes("Check Box 5").ControlFormat.Value = xlOff
       ActiveSheet.Shapes("Check Box 6").ControlFormat.Value = xlOff
    End If
     
    If ActiveSheet.Shapes("Check Box 5").ControlFormat.Value = xlOn Then
       ActiveSheet.Shapes("Check Box 4").ControlFormat.Value = xlOff
       ActiveSheet.Shapes("Check Box 6").ControlFormat.Value = xlOff
    End If
     
    If ActiveSheet.Shapes("Check Box 6").ControlFormat.Value = xlOn Then
       ActiveSheet.Shapes("Check Box 5").ControlFormat.Value = xlOff
       ActiveSheet.Shapes("Check Box 4").ControlFormat.Value = xlOff
    End If

  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
    12 750
    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 : 12 750
    Points : 28 599
    Points
    28 599
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un ActiveX est plus simple pour lancer une procédure événementielle qu'un contrôle formulaire car c'est intégré à l'objet lui même
    Par contre d'après vos explications, je crois que vous choisissez le mauvais contrôle.
    Si vous avez trois contrôles et qu'un seul doit être sélectionné, il faut choisir le contrôle Case d'option (OptionButton) et là pas besoin de "macro" pour éteindre les autres, c'est automatique.

    Dans un groupe de contrôle, un seul contrôle "Case d'option" ne peut être sélectionné et renvoie son n° alors que plusieurs contrôles "Case à cocher" peuvent être sélectionnés et renvoie VRAI ou FAUX
    Nom : 240221 dvp Form Control.png
Affichages : 109
Taille : 19,6 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
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Merci pour cette astuce.

    Mais il y a un problème

    Lorsque j'écris
    If activeSheet.OptionButtons(7).value= xlOn then...

    J'ai le message d'erreur d'exécution '1004':
    Impossible de lire la propriété OptionButtons de la classe Worksheet.

    Merci pour votre aide

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    J'ai trouvé il faut écrire :

    If ActiveSheet.Shapes("Case d'option 7").ControlFormat.Value = xlOn Then...

    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
    12 750
    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 : 12 750
    Points : 28 599
    Points
    28 599
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai l'impression que vous n'avez pas lu ce que j'ai écrit.
    Il n'y a aucune raison d'écrire du code VBA pour obtenir cela.
    Insérez plusieurs boutons "Case d'option" dans une feuille d'excel et ensuite cliquez sur l'un et puis l'autre et vous verrez.
    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
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    J'ai bien compris et mis des "case d'option".
    Mais vous n'aviez pas toutes les informations.
    Mon but premier était de décocher les boutons d'options pour savoir dans mon code VBA lequel était coché et qu'il n'y en ai pas deux de cocher en même temps.

    avec les "case d'option" on ne peut en cocher qu'une à la fois, ce qui simplifie mon code, mais il fallait quand même que je sache laquelle était cochée.

    Maintenant grace à " If ActiveSheet.Shapes("Case d'option 7").ControlFormat.Value = xlOn Then " je peut savoir qui est coché et prendre les informations dans ma feuille en conséquence.

    Encore merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'Prend les informations du rédacteur du message
    If ActiveSheet.Shapes("Case d'option 7").ControlFormat.Value = xlOn Then
        nompoc = Cells(16, 1).Value
        telpoc = Cells(17, 1).Value
        GoTo poscol
    End If
    If ActiveSheet.Shapes("Case d'option 8").ControlFormat.Value = xlOn Then
        nompoc = Cells(21, 1).Value
        telpoc = Cells(22, 1).Value
    Else
        nompoc = Cells(26, 1).Value
        telpoc = Cells(27, 1).Value
    End If

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 750
    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 : 12 750
    Points : 28 599
    Points
    28 599
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai bien compris et mis des "case d'option".
    Mais vous n'aviez pas toutes les informations.
    D'où l'importance d'être suffisamment explicite lorsque l'on demande de l'aide.

    avec les "case d'option" on ne peut en cocher qu'une à la fois, ce qui simplifie mon code, mais il fallait quand même que je sache laquelle était cochée.
    Encore une fois, je persiste à vous dire qu'il ne faut pas de macros pour savoir quel bouton est actif.
    Faites un clic droit sur l'un des boutons d'options et définissez la cellule liée et vous aurez le numéro du bouton sélectionné (voir illustration)

    Nom : 240223 dvp Option Button Formulaire.png
Affichages : 78
Taille : 42,2 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

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/07/2014, 20h38
  2. Réponses: 1
    Dernier message: 22/07/2011, 19h46
  3. Réponses: 1
    Dernier message: 12/04/2010, 15h46
  4. Afficher un message, après avoir cliquer sur FERMER
    Par horse dans le forum Débuter
    Réponses: 2
    Dernier message: 05/04/2010, 03h08
  5. Réponses: 1
    Dernier message: 11/05/2009, 20h33

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