Valeurs inputbox annulée ou validée / Valeur Null en VBA
Bonjour à tous,
Cette discussion est basée sur ma lecture de ce sujet.
Suite à la découverte (merci Jacques) des fonctions cachées (StrPtr entres autres), je m'interroge sur les "retours" de l'InputBox et sur l'existence de la valeur Null en VBA.
- Que renvoie une InputBox validée sans saisie?
- Que renvoie une InputBox annulée?
Selon ce test, on se rend bien compte qu'une annulation et une validation de saisie vide n'est pas la même chose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Sub test()
Dim c As String, entree As String, b1 As Boolean, b2 As Boolean, b3 As Boolean
'comparaison entre c (String vide) et InputBox annulée
entree = InputBox("Annulez SVP !!!")
b1 = (StrPtr(c) = StrPtr(entree))
b2 = (StrPtr(c) = 0)
b3 = StrPtr(entree) = 0
MsgBox "comparaison entre c (String vide) et InputBox annulée" & vbCrLf & _
"StrPtr(c) = StrPtr(entree) : " & b1 & vbCrLf & _
"StrPtr(c) = 0 : " & b2 & vbCrLf & _
"StrPtr(entree) = 0 : " & b3
'comparaison entre c (String vide) et InputBox validée sans saisie
entree = InputBox("Validez sans saisie !!!")
b1 = (StrPtr(c) = StrPtr(entree))
b2 = (StrPtr(c) = 0)
b3 = StrPtr(entree) = 0
MsgBox "comparaison entre c (String vide) et InputBox validée sans saisie" & vbCrLf & _
"StrPtr(c) = StrPtr(entree) : " & b1 & vbCrLf & _
"StrPtr(c) = 0 : " & b2 & vbCrLf & _
"StrPtr(entree) = 0 : " & b3
c = ""
'comparaison entre c = "" et InputBox annulée
entree = InputBox("Annulez SVP !!!")
b1 = (StrPtr(c) = StrPtr(entree))
b2 = (StrPtr(c) = 0)
b3 = StrPtr(entree) = 0
MsgBox "comparaison entre c = """" et InputBox annulée" & vbCrLf & _
"StrPtr(c) = StrPtr(entree) : " & b1 & vbCrLf & _
"StrPtr(c) = 0 : " & b2 & vbCrLf & _
"StrPtr(entree) = 0 : " & b3
'comparaison entre c = "" et InputBox validée sans saisie
entree = InputBox("Validez sans saisie !!!")
b1 = (StrPtr(c) = StrPtr(entree))
b2 = (StrPtr(c) = 0)
b3 = StrPtr(entree) = 0
MsgBox "comparaison entre c = """" et InputBox validée sans saisie" & vbCrLf & _
"StrPtr(c) = StrPtr(entree) : " & b1 & vbCrLf & _
"StrPtr(c) = 0 : " & b2 & vbCrLf & _
"StrPtr(entree) = 0 : " & b3
End Sub |
Quid également de la valeur Null? Existe t'elle en VBA???
Oui, Non, pas vraiment...
Testons donc...
Test de comparaison entre la saisie vide (ou l'annulation) d'une inputbox et la constante VbNullString :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Sub essai()
Dim bon As Boolean, entree As String, L As Integer
Do While Not bon
entree = InputBox("veuillez entrer un nombre entier entre 1 et 20")
Select Case entree
Case vbNullString: Exit Do
Case Else: Bon = True
End Select
Loop
' voyons ce que nous avons saisi
MsgBox IIf(bon, "vous avez saisi " & entree, "vous avez annulé")
End Sub |
Test de comparaison entre la saisie vide (ou l'annulation) d'une inputbox et un String non rempli :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Sub test2()
Dim bon As Boolean, entree As String, L As Integer, strTest As String
Do While Not bon
entree = InputBox("veuillez entrer un nombre entier entre 1 et 20")
Select Case entree
Case strTest: Exit Do
Case Else: Bon = True
End Select
Loop
' voyons ce que nous avons saisi
MsgBox IIf(bon, "vous avez saisi " & entree, "vous avez annulé")
End Sub |