Comme on utilise souvent un seul et même message (ie notes d'erreur) sur plusieurs formes d'accès MS, j'ai pensé à organiser tous les messages dans une table et les appeler avec un public fonction:Ms accès VBA - Sélection Case avec MsgBox de la fonction du module
Public Function message(msg_name As String, Optional msg_type As VbMsgBoxStyle)
output = MsgBox DLookup("Msg_Text", "vba_msg", "Msg_Name='" & msg_name & "'"), _
msg_type, _
DLookup("Msg_Caption", "vba_msg", "Msg_Name='" & msg_name & "'")
Ordinaire et simple. Travaillant bien pour les notifications simples ("ouput =" et les parenthèses ne seraient pas nécessaires pour cela, bien sûr). Cependant, je ne peux pas utiliser ces messages dans un contexte de Select Case:
Select Case message("test_message_name", vbYesNo)
Case vbYes
MsgBox "Yes"
Case vbNo
MsgBox "No"
End Select
Ni en appuyant sur « Oui », ni « Non » sont reconnus en tant que tels. Je reçois seulement une réponse si je définis aussi "Case Else". Si je fais la même procédure dans l'un même sous, tout fonctionne très bien:
output = MsgBox DLookup("Msg_Text", "vba_msg", "Msg_Name='" & "test_message_name" & "'"), _
msg_type, _
DLookup("Msg_Caption", "vba_msg", "Msg_Name='" & "test_message_name" & "'")
Select Case output
Case vbYes
MsgBox "Yes"
Case vbNo
MsgBox "No"
End Select
Suis-je manque quelque chose?
Oh, presque oublié, tu es aussi un peu contradictoire dans la dénomination: '' est en option ms_type' type Msg_type 'plus tard, et' output' n'est jamais déclaré. Essayez d'activer 'Option Explicit' pour repérer ces erreurs plus facilement (vous obtiendrez des erreurs de compilation pour les deux). –
Ah, merci. Le "ms_type" était en fait une faute de frappe. Je n'ai pas copié-collé à partir d'Access mais j'ai encore écrit le code. –