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

  • Initiateur de la discussion Initiateur de la discussion Ghassen
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
Résultat donné par Chat GPT... il me fait peur ce truc 😳🙄
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
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
548
Réponses
22
Affichages
3 K
Réponses
0
Affichages
567
Retour