XL 2019 CheckBox et MsgBox vbYesNoCancel

meldja

XLDnaute Impliqué
Bonjour,
Je me prends la tête sur une case à cocher qui renvoie sur un MsgBox vbYesNoCancel.
Je voudrais que si on décoche le CheckBox, le MsgBox ne se lance pas et que la valeur en I15 soit effacée.
Que si on coche le CheckBox, un choix soit proposé,
Yes => on copie une valeur en I15
No => on copie une autre valeur en I15
Cancel => on ne copie rien mais on décoche le CheckBox.
Le soucis c'est que selon l'option choisie, le MsgBox revient et il faut valider 2 à 3 fois la réponse.
Si quelqu'un a une idée, je joins le fichier test.
Cordialement
 

Pièces jointes

  • RESTO.zip
    16.7 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

voir le fichier joint la macro ci-dessous qui fait ce que vous dites :

VB:
Private Sub CheckBox1_Click()

    If CheckBox1 Then
        Select Case MsgBox("Restaurant administratif ?", vbYesNoCancel, "TYPE DE RESTO")
        Case vbYes: Range("I15") = Range("C56").Value
        Case vbNo: Range("I15") = Range("C57").Value
        Case vbCancel: CheckBox1.Value = False
        End Select
    Else
        Range("I15").ClearContents
    End If

End Sub

Le type de retour d'un msgbox n'est pas un Boolean mais un Integer dont vous trouverez les valeurs dans l'aide Microsoft :

Valeurs de retour​

ConstanteValeurDescription
vbOK1OK
vbCancel2Cancel
vbAbort3Abandonner
vbRetry4Réessayer
vbIgnore5Ignore
vbYes6Oui
vbNo7Non


P.S. pas utile de zipper les fichiers .xlsm s'ils font moins d'un mégaoctet pour les joindre ici.
Cordialement
 

Pièces jointes

  • RESTO.xlsm
    25 KB · Affichages: 2

meldja

XLDnaute Impliqué
Re,
J'ai remis un autre fichier avec du code plus propre j'ai l'impression et j'ai mis des commentaires.
Le problème n'est pas résolu.
Si je choisi la réponse oui, c'est bon.
Si je choisi la réponse non ou annulé, je dois cliquer 2 fois.
Cordialement
 

Pièces jointes

  • RESTO.zip
    16.6 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
Bonjour.
Je dirais comme ça :
VB:
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
   Select Case MsgBox("Restaurant administratif ?", vbYesNoCancel, "TYPE DE RESTO")
      Case vbYes: [I15].Value = [C56].Value
      Case vbNo: [I15].Value = [C57].Value
      Case Else: CheckBox1.Value = False
      End Select
   Else
      [I15].Value = Empty
      End If
   End Sub
Remarque. MsgBox ne renvoie pas un Boolean mais un VbMsgBoxResult.
 

meldja

XLDnaute Impliqué
Re,
J'ai remis un autre fichier avec du code plus propre j'ai l'impression et j'ai mis des commentaires.
Le problème n'est pas résolu.
Si je choisi la réponse oui, c'est bon.
Si je choisi la réponse non ou annulé, je dois cliquer 2 fois.
Cordialement
Bonjour,
Désolé, j'habite sur un bateau et je ne peux pas utiliser de PC, je n'ai pas de 220 volt, que du 12. En arrivant au boulot ce matin, je viens de consulter vos réponses, ce pourquoi je réponds aussi tardivement.
En tout cas merci à tous les deux, vos solutions fonctionnent nickel. Je vous souhaite une bonne journée et je mets ce poste en résolu.
Merci
 

Discussions similaires

Réponses
17
Affichages
403

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo