Exécution code bouton MSGBOX

Bonjour,

J'aimerais savoir comment exécuter le code présent dans un module s'il vous plait.

Pour exposer ma problématique, j’empêche l'utilisateur de quitter la feuille 1 lorsqu'il clique sur le bouton bleu tout pendant qu'il n'a pas répondu à la question de la msgbox. (si A1 est vide et B1=1)

S'il répond "Oui" dans le msgbox l'utilisateur reste sur la feuille 1 et on affiche un msgbox. S'il clique sur "Non" on doit exécuter le code contenu dans le bouton bleu sivi d'un msgbox.

Le fichier joint est un exemple de ce que je souhaite développer. Si vous avez des propositions d'amélioration je suis preneur :)

Bonne soirée

JB

Bonsoir,

Je tente ma chance

A insérer dans un module et affecter la macro "BoutonBleu" au bouton bleu

Sub BoutonBleu()

If Range("A1") = "" And Range("B1").Value = 1 Then

reponse = MsgBox("Si je clique sur Oui je reste sur Feuill1, si je clique sur Non j'exécute le code du bouton bleu", vbYesNo, "Excel")
    If reponse = vbYes Then
    Worksheets("Feuil1").Activate
    End If

    If reponse = vbNo Then
    Call test
    End If
   End If
End Sub

Sub test()
Sheets("Feuil2").Activate ' ou autre !!

MsgBox ("J'ai cliqué sur non")
End Sub

Merci pour tes commentaires

Sandrine

Bonsoir Sandrine,

Merci pour votre contribution. Cependant cela ne correspond pas à ce que je voulais faire car ma demande n'était pas correcte., je m'en excuse :(

Je me corrige: Lorsque l'utilisateur clique sur le bouton bleu cela va le faire basculer sur la feuille 2. Cependant, j'aimerais l'en empêcher dans le cas où: A1="" et B1=1. ( C'est pour cela que j'ai choisi Worksheet Deactivate).

On ouvre alors un msgbox qui propose 2 possibilités:

Si on clique sur "Oui", on reste sur cette Feuille avec le bouton bleu (Feuil1) suivi du Msgbox "OK on est resté sur la Feuille 1"

Si on clique sur Non, on exécute le code "test" présent dans le module 1 suivi du Msgbox "OK on est sur la Feuille 2"

Le problème dans ma macro c'est cette ligne de code qui verrouille toute possibilité de quitter la Feuille 1 même si l'utilisateur clique sur "Non" dans la Msgbox

If Range("A1") = "" And Range("B1").Value = 1 Then
Worksheets("Feuil1").Activate

Merci beaucoup pour votre aide en tout cas !

JB

Bonsoir,

Je ne pense pas qu'il fasse utiliser Worksheet Deactivate.

Toujours dans le module, placez ce code, je pense qu'il correspond à vos attentes =

Sub BoutonBleu()

If Range("A1") = "" And Range("B1").Value = 1 Then
Worksheets("Feuil2").Activate

reponse = MsgBox("A1 et B1 ne sont pas correctement renseignés", vbYesNo, "Excel") 'texte a adapter
If reponse = vbYes Then
Worksheets("Feuil1").Activate
MsgBox ("OK on est resté sur la Feuille 1")
End If

If reponse = vbNo Then
Call test

    End If

End If

End Sub
Sub test()
Sheets("Feuil2").Activate ' ou autre !!

MsgBox ("OK on est sur la Feuille 2")
End Sub

Je joins votre fichier, pour vous montrer son fonctionnement en cliquant sur ce fameux bouton bleu.

Merci pour vos commentaires et bonne soirée

Sandrine

Bonsoir,

voici une proposition avec une variable "interrupteur" Public nommée BtnBleu, si False le code "bleu" n'est pas lancé on ne peut quitter la feuille, si True alors on peut quitter la feuille :

Cet interrupteur passe à True dès que le code "bleu" est exécuté, et repasse à False dès que la feuille 1 est activée.

@ bientôt

LouReeD

A nouveau Sandrine,

Effectivement votre code fonctionne ! Seulement je cherchais à ne pas pouvoir accéder à la feuille 2 tout pendant que l'utilisateur n'a pas cliqué sur "Non".

Dans votre cas, on clique sur le bouton bleu, on est redirigé vers la Feuille 2 et si on clique sur Oui dans la Msgbox on revient vers la Feuille 1.

C'est cette étape qui me "chagrine" un peu. J'aurais souhaité rester sur la Feuille 1 tout pendant que la condition Non de la Msgbox n'est pas exécutée.

Peut-être qu'il n'y a pas de solution à ma problématique, dans ce cas je me résoudrai à utiliser votre contribution :)

Merci encore !!

JB

Passé inaperçu ! Voilà

@ bientôt

LouReeD

If Range("A1") = "" And Range("B1").Value = 1 Then
Worksheets("Feuil2").Activate

supprimer la ligne worksheets(« feuil 2 »activate

Ça devrait fonctionner

@Planetesud : "Je ne pense pas qu'il fasse utiliser Worksheet Deactivate.", en fait il faut jouer avec car c'est un test à faire lorsque l'on quitte la feuille 1, hors si vous cliquez sur le nom de l'onglet "feuille 2" votre code ne sera pas lancé, la feuille 2 sera activée et à aucun moment un contrôle de l'exécution du code "bleu" n'est fait.

Il faut pouvoir mettre en mémoire l'exécution du code du bouton bleu pour savoir si l'on peut quitter la feuille, d'où l'utilisation de la variable interrupteur.

@ bientôt

LouReeD

A nouveau Sandrine, LouReeD,

@ Sandrine: Merci pour votre code, cela fonctionne chez moi car j'ai masqué les onglets dans mon projet donc les utilisateurs ne peuvent utiliser que les "boutons" pour basculer entre les feuilles Excel.

@LouReeD: Effectivement, le code de Sandrine ne fonctionne pas si on bascule entre les feuilles par le biais des onglets en bas de feuille, votre remarque est donc très intéressante. J'ai étudié votre code et il va m'être grandement utile pour un autre projet en cours :D

Merci à vous 2, c'est parfait !!

Bonne fin de soirée :)

JB

Bonsoir,

merci pour votre retour et remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "execution code bouton msgbox"