VbYesNoCancel dans une MsgBox

Résolu
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 - 9 déc. 2005 à 23:05
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 11 déc. 2005 à 14:38
Bonjour ...

Je veux faire apparaitre une msgbox dans laquelle il y a la possibilité de 3 choix !!

Chaque choix donne une action bien particulière au logiciel !!

Avec 2 choix, pas compliqué VbYesNo, mais là, avec 3, je trouve pas ...

Merci de votre aide

9 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 déc. 2005 à 00:15
salut,



bah t'es pas loin en fait^^




Option Explicit

'

'

Private Sub Form_Load()

Dim lRet As Long

lRet = MsgBox ("Cliquez ...", vbYesNoCancel, "Test")

' yes = 6

' no = 7

' cancel = 2



Select Case lRet

Case vbYes: MsgBox "Choix = OUI", 32

Case vbNo: MsgBox "Choix = NON", 32

Case vbCancel: MsgBox "Choix = ANNULER", 32

End Select



Unload Me

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>



++

PCPT [AFCK]
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
9 déc. 2005 à 23:16
Ce qui et drole .... c'est que tu as donné toi-même la réponse à ta question dans le titre !!! vbYesNoCancel qui te donne 3 boutons : Oui, Non et Annuler
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
10 déc. 2005 à 00:09
Heuu, ce qui veut dire que je me suis mal exprimé, dsl alors !

je reprends ... :))

EN faite, je ne sais pas comment faire comprendre au logiciel que si on clique sur
VbYes alors a=1
VbNo alors a=2
VbCancel alors a=3

Lorsqu'il y a 2 choix, on fait un truc du genre
if msgbox = VbYes then .... else .....

Mais avec 3, je ne vois pas ...

J'espère avoir été + explicite ...

Merci encore de votre aide ...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 déc. 2005 à 11:46
MsgBox ne renvoie pas un long, mais un VbMsgBoxResult... (la difference sera que VB va compléter ta saisie ...)

admettons qu'une variable intermédiaire soit ici reeleement utile...



pourquoi faire

MsgBox "Choix = OUI", 32

et non

MsgBox "Choix = OUI", vbQuestion



dans bien des cas, Non et annuler auront le même effet, on utilisera alors simplement :


Amusez-vous !
Renfield
Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 déc. 2005 à 12:12
Rey -> ce que NagStef demandait, c'était la constante VbCancel, ainsi qu'à apparemment comment la récupérer.


que le retour soit un long ou un enum, c'est strictement le même, non?!


quand à mon action derrière, à savoir l'exemple des msgbox, non
seulement ils ne seront pas utilisésf (puisque c'est un exemple), mais
32 ne gène personne ! (c'est juste VbYes + VbInformation + NoSound)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 déc. 2005 à 12:16
long ou enum, même combat, oui, mais les constantes sont souvent plus
claire, et l'IDE de VB va compléter ta frappe, s'il sait que ta
variable est de type VbMsgBoxResult...



concernant le 32, je suis pas d'accord.... ca correspond juste à VbQuestion (VbInformation vaut 64...)

Amusez-vous !
Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 déc. 2005 à 12:31
en effet, par habitude....

et? tout çà parce que tu préfères lire VbQuestion, dont le "vbq" est plus long à taper que "32" ?!!

je ne crois pas que çà fasse avancer le sujet....

de la correction, j'dis pas, mais juste pour dire de lutter contre une réponse, sans fond réel, çà me semble un peu inutile.



NagStaf -> tu as donc ta constante exemplée fonctionnelle.

et voici les autres (si besoin)



MSDN :

<hr size="2" width="100%">Valeurs renvoyées par MsgBox





Constante,
Valeur,
Bouton choisi,
----

vbOK,
1,
Bouton OK,
----

vbCancel,
2,
Bouton Annuler,
----

vbAbort,
3,
Bouton Abandonner,
----

vbRetry,
4,
Bouton Répéter,
----

vbIgnore,
5,
Bouton Ignorer,
----

vbYes,
6,
Bouton Oui,
----

vbNo,
7,
Bouton Non

<hr size="2" width="100%">

++

PCPT [AFCK]
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 déc. 2005 à 21:47
pcpt < NE te sent surtout pas la cible d'une caballe des admins CS mais je suis totalement d'accord avec Renfield !! Je préfère, et de très loin vbQuestion à 32 !!
Pourquoi ??
1- Parce que j'ai une petite tête et que cela me gonfle d'avoir a retenir que pour afficher un point d'intérrogation sur mes messagebox, je doit mettre la valeur numérique 32
2- Parce que si un newbies lit mon code et y voit la valeur 32, il va devoir aller lire la doc pour savoir ce que cela représente. S'il lit vbQuestion, et s'il a un minimum de connaissance de la fonction MsgBox, il saura aussitot que je demande l'affichage d'un icone "?".
3- Parce que je refuse catégoriquement d'avoir a me rappeler que pour avoir une msgbox avece un icone "?" et les boutons Oui et Non il faut mettre 36 et que si je veut que le bouton par défaut soit le Non plutot que le Oui, je doit mettre 292 a la place de 36 !

Tout cela pour militer en faveur des constantes d'énumération qui rende un code clair, simple et facilement maintenable.
Pour finir je dirait que j'utilise dès que possible les constantes définies par le langage VB mais que je créé mes propres constantes. Lorsque je fait un prorgamme utilisant la trigo, je n'utilise JAMAIS la valeur 3.14159.... dans mes calculs !!! Je définie systématiquement une constante PI valant 3.14159....... et j'utilise celle-ci dans mes formules.

CR

P.S. : Si Renfield et moi-même, nous nous "battons" en faveur des constantes, c'est que nous pensons -je parles en mon nom mais je pense que Renfield abondera dans mon sens ??- qu'il est bon pour un developpeur de les utiliser car cela simplifie grandement la tâche et que notre status d'Admins CS nous incite a tout faire pour expliquer ce qui nous semble être la bonne facon de faire ...
P.S.S. : Et puis il faut se dire que Crosoft n'a pas pondu les constantes pour des prunes .. et que Bilou ne fait pas toujours des choses pourries et inutiles et sans aucun interet !!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 déc. 2005 à 14:38
salut Christophe.

je suis aussi d'accord, et j'utilise également le plus de constantes
possible. il suffit de regarder mes sources ou mes commentaires en
forum, en général.



la question ici est du VBCANCEL.

mon code donné est alors le :

lRet = MsgBox("Cliquez ...", vbYesNoCancel, "Test")

et pour SELECT CASE, pareil, j'ai donné les constantes.

en réponse, j'aurais pu mettre un debug.print (donc pas de unload en fin) ce qui aurait évité ce débat inutile au final.

et c'est juste là où je ne suis pas d'accord ; donc juste de poster un
commentaire soulevant un point du code "optionnel", admin ou pas.
0
Rejoignez-nous