Boite de dialogue à 3 voies : O / N / Abandon

Bonjour à toutes et à tous,

Je suis allé sur cours et astuces : pas trouvé . . . sur le forum : pas trouvé.

Je voudrais faire une proposition à l'utilisateur (par InputBox ?) et lui demander ensuite :

  • s'il est d'accord ( O )
  • s'il n'est pas d'accord ( N )
  • s'il veut sortir de ce guépier (Abandon)

Comment je fais ? Je sais pour O / N mais pas pour 3 conditions.

apercu d imp deplacement boutons 2

Bonsoir

Un exemple de code que tu places dans la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Value
Case Is = "Choix"
msg = "Message d'avertissement. D'accord ?"
Style = vbYesNoCancel
Title = "Attention !"
Response = MsgBox(msg, Style, Title)
Case Else
End Select
End Sub

Tu écris Choix dans une cellule

Amicalement

Nad

Salut,

Un truc que je m'étais mis de côté pour les MsgBox : les box personnalisables de myDearFriend

Lire l'article

Bonjour Nad Dan,

je ne comprends pas :

Je crois comprendre que la logique de fonctionnement de :

Private Sub Worksheet_Change(ByVal Target As Range)

est de déclencher la procédure qui suit à un évènement particulier ? Est-ce cela ?

Si oui, lequel ? comment ? ça je ne comprends pas non plus.

De toute façon, il me semble que ça n'est pas ça ma question.

Ce que je souhaite c'est :

Montrer à l'utilisateur par une MsgBox une certaine proposition (valeur) et lui demander s'il est d'accord avec cette propoition en lui donnant 3 choix possibles :

oui

non

abandon

Note : Il y a des fois où j'ai envie d'abandonner tant j'ai du mal à comprendre . . .

Bonjour,

Le code que NAD te propose réponds effectivement à un changement sur une feuille.

Avant de te proposer quelque chose, il faut que tu expliques quand cette Boite de dialogue doit apparaitre et en fonction de quoi. Un bouton, une valeur spécifique, quelle plage de cellules concernées ?

A te relire

Dan

Dans le code de Nad, c'est la partie

Style = vbYesNoCancel

qui définit les boutons à afficher : YES, NO, et CANCEL

Tu peux aussi avoir : vbOKOnly, vbYesNo, vbAbortRetryIgnore,...

C'est ensuite dans ton code qu'il va falloir indiquer la marche à suivre en fonction du choix de l'utilisateur.

Un code exemple :

Sub Message()
     Dim Reponse As Integer

     Reponse = MsgBox("Question à poser", vbYesNo)
     If Reponse = vbYes Then
           Range("A1") = "Réponse OUI"
     Else
           Range("A1") = "Réponse NON"
     End If
End Sub

Le code de Nad n'a effectivement rien d'autre à voir avec ta question, c'était juste pour te montrer le résultat : ta box avec les 3 boutons

Si tu n'as pas établi le reste du code, envoie plutôt ton fichier avec ce que tu désires exactement, on t'aidera plus clairement.

Merci à tous de votre aide,

Excusez moi de ce silence pendant 2 jours, mais tout le monde sait bien que les retraités sont très très très occupés . . .

Néanmoins, avec vos explications, je crois avoir à peu près intégré le maniement des InputBox et MsgBox .

Cependant, 2 questions complémentaires :

Sur MsgBox j'ai vu quelque part (mais je n'arrive pas à le retrouver) les différentes possibilités de validations standard proposées par VBA (9 je crois) :

Yes, No, Cancel . . . quelles sont les autres ?

Sur InputBox

Type = 1 : (Texte ?) quels contrôles automatiques sont ils faits par VBA ?

Type = 2 : (numérique ?) quels contrôles automatiques sont-ils faits par VBA ?

Autre petit souci avec InputBox

Si dans la zone de saisie j'ai le malheur d'utiliser une flèche directionnelle (à droite par exemple) VBA inscrit dans la fenêtre de saisie la formule "=$Colonne$Ligne qui correspond à l'emplacement du point d'insertion de la souris . . .

Note : j'ai plein d'autres questions dans ma besace !

re,

Pour les Msgbox, c'est le lien vers Mydearfriend sur Sylvain t'a donné plus haut dans ce fil.

Pour les inputbox, vois l'aide VBA dans excel qui te donne des explications.

Pour ton souci, il faudrait voir le fichier pour analyser ton pb.

Amicalement

Dan

Merci Nad Dan,

1) pour mon souci InputBox

1.a) je ne comprends pas pourquoi VBA me place 2 boutons ("OK" et "Annuler") alors que seul le OK sert à déclarer la saisie effectuée et enchaîne sur la suite du traitement (tests etc . . . ) A quoi sert le "Annuler" ?

1.b) si l'on clique sur le bouton "Annuler" VBA inscrit dans la fenêtre de saisie une mention du genre : " formule incorrecte" ? ! Est-ce normal ?

1.c) si au lieu de saisir des chiffres, l'utilisateur se trompe et enfonce une touche "directionnelle" il apparait dans la fenêtre de saisie l'adresse de la cellule où se trouve le pointeur ? ! Est-ce normal ?

Voir dans la feuille "Accueil"

J'ai mis des cellules sous apparence de "boutons" en souhaitant que l'utilisateur clique sur une de ces cellules pour déclencher le démarrage de la macro correspondante.

Comment faire cela ?

Avec le fichier ça serai mieux . . . mais ça fait 118 Ko et je ne sais pas zipper !

Je corrige ce que j'ai dit dans le message précédent :

Il semblerait que "Annuler" permette de sortir de la procédure.

Par contre c'est lorsque l'on ne met rien dans la zone de saisie et que l'on valide par OK que ça met le message "formule incorrecte"

Après avoir encore allégé mon classeur ça passe désormais.

Voir : la macro "essai" pour InputBox et la feuille "Accueil" pour lancer des macros à partir de cellules cliquées.

Merci beauccoup de ta patience et de ta gentillesse.

Décidément je suis incorrigible . . . Voici le fichier.

https://www.excel-pratique.com/~files/doc2/z2NLWEssai.xls

Re,

Je vois deux feuilles dans ton fichier. Juste une précision, l'activation de l'inputbox doit se faire depuis les deux feuilles ou la feuille Accueil seule ?

De plus dans ton fichier il n'y a que deux macros Essai et une dans Thisworbook qui ne correspondent à rien à ce que l'on t'a donné sur le fil. est-ce correct ?

A te relire

Dan

Bonjour Nad Dan,

Le fichier que je t'ai envoyé ne concerne que mon problème de lancement de macros à partir de cellules à cliquer que je placerai dans la feuille "Accueil".

La deuxième feuille que tu vois ("Akkeuil") est une erreur (j'aurais dû l'enlever) c'était un essai de mise en forme.

Donc ce que je souhaite :

lancer la macro "Initialisation" (elle n'apparaît pas dans ce fichier) en cliquant sur la cellule 'INIT" de la feuille "Accueil" ou bien lancer la macro "rectifications" (elle n'apparaît pas dans ce fichier) en cliquant sur la cellule "RECTIFS" de la feuille "Accueil"

Ce lancement se fera toujours à partir de la feuille "Accueil"

Concernant les macros visibles : ne pas en tenir compte (on verra ça plus tard)

"essai" elle concerne un problème que j'ai dans la compréhension de InputBox

Celle qui est dans "ThisWorkbook" c'est une erreur, elle concerne des essais que je faisais et elle devait être supprimée.

re,

Ton fichier en retour dans lequelle j'ai un peu fait de nettoyage au niveau VBA.

A l'ouverture, tu arrives la feuille ACCUEIL (j'ai laissé le code en place)

Dans la feuille ACCUEIL, un clique dans la cellule C7 ou C9 te renverra vers les macros appropriées.

J'ai déjà placé les macros dans une module. Il te reste à y mettre les 2 codes Initialisation et rectifications dont tu m'as parlé avant.

Fichier

Amicalement

Dan

Mille fois merci Nad Dan,

je vais étudier :

1) le code que tu as placé dans "Accueil" pour voir ce qu'il faut faire pour lancer des macros à partir de cellules "cliquées"

2) le "nettoyage" que tu as fait dans ma macro "essai" pour améliorer mon style et mes connaissance des codes VBA.

Je te suis infiniment reconnaissant.

Rechercher des sujets similaires à "boite dialogue voies abandon"