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 :
Quid également de la valeur Null? Existe t'elle en VBA???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Oui, Non, pas vraiment...
Testons donc...
Test de comparaison entre la saisie vide (ou l'annulation) d'une inputbox et la constante VbNullString :
Test de comparaison entre la saisie vide (ou l'annulation) d'une inputbox et un String non rempli :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager