XL 2010 Application.InputBox type1, différencier entre résultat= False et Valeur saisie = 0

Ghassen

XLDnaute Nouveau
Bonjour à tous

j'utilise une application.inputBox pour récupérer des données, type numérique :=1
mon soucis est que cette méthode ne fait pas la différence (à priori) entre un saisi = 0 (donc valeur récupérée = 0) et un non saisi de donnée (ou fermer la inputbox) donc résultat = false...
je souhaite pouvoir faire la différence entre ne rien saisir du tout et saisir la valeur = 0, et via une application.inputBox car c'est moins simple qu'une inputbox ordinaire (qui néceessite un paramétrage pour accepter des données bien particulière)

un peu ça quoi

valeur = Application.InputBox(Texte1, Texte2, , , , , , Type:=1)

if valeur = False then 'arrêt macro, suite..

If Valeur <> False then 'suite même si valeur = 0 ( valeur saisie = 0)
 
Solution
Re,
Pour le fun, une autre solution (pas IA).

Le problème vient du fait que VBA est un langage très peu typé qui effectue des conversions de type à la volée et à sa propre guise. Donc de temps à autre le FALSE est conservé FALSE et de temps à autre False est transformé en 0 par VBA.

La question n'est en aucun cas triviale.

VB:
Sub test()
Dim rep
   rep = Application.InputBox(prompt:="Saisir un nombre SVP :", Type:=1)
   If CStr(rep) = CStr(False) Then
      MsgBox "Aucune saisie"
   Else
      MsgBox "Vous avez saisi le nombre : " & rep
   End If
End Sub

Ghassen

XLDnaute Nouveau
Résultat donné par Chat GPT... il me fait peur ce truc :oops::rolleyes:
Valeur = Application.InputBox(Texte1, Texte2, , , , , , Type:=1)

If VarType(Valeur) = vbBoolean Then ' L'utilisateur a cliqué sur Annuler ou fermé la fenêtre
Valeur = "Quitter car résultat null"
ElseIf Valeur = 0 Then ' L'utilisateur a entré 0
Valeur = 0
End If
 

Ghassen

XLDnaute Nouveau
Merci mapomme
Ma question est sûrement triviale pour vous.. mais c'était un blocage pour moi :)
j'ai sérieusement pensé supprimer mon message mais je me suis dit que ça pourrait aider quelqu'un au cas où..
Bonne soirée.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Pour le fun, une autre solution (pas IA).

Le problème vient du fait que VBA est un langage très peu typé qui effectue des conversions de type à la volée et à sa propre guise. Donc de temps à autre le FALSE est conservé FALSE et de temps à autre False est transformé en 0 par VBA.

La question n'est en aucun cas triviale.

VB:
Sub test()
Dim rep
   rep = Application.InputBox(prompt:="Saisir un nombre SVP :", Type:=1)
   If CStr(rep) = CStr(False) Then
      MsgBox "Aucune saisie"
   Else
      MsgBox "Vous avez saisi le nombre : " & rep
   End If
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @mapomme

LOL

diabolo.gif
 

Discussions similaires

Réponses
8
Affichages
579

Statistiques des forums

Discussions
313 209
Messages
2 096 240
Membres
106 541
dernier inscrit
edf