Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Incompatibilité de type en sortie d'InputBox

3 réponses
Avatar
Chui Perdu
Bonjour, bonsoir,

Je débute en Vba, et me heurte déjà à une boîte d'insultes.

Voici mon code:

Dim Nb1 As Long
Dim Nb2 As Long
Dim Res As Long
Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération", 0)
Res = Nb1 + Nb2
MsgBox "Le résultat de " & Res, vbOKOnly + vbInformation, "Résultat"

Jusqu'ici, ça va.
Mais où ça coince, c'est lorsque l'utilisateur clique sur le bouton
"Annuler" de la boîte de dialogue.
En effet, Vba renvoie alors "False", qui n'est _pas_ un nombre....

Qui peut m'éclairer siouplé ?

Merci d'avance.
DG

3 réponses

Avatar
Emcy
Salut,

essayes ça :

Sub main()

Dim Nb1 As String
Dim Nb2 As String
Dim Res As Long


Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération",
0)

If Nb1 <> "" And Nb2 <> "" Then
On Error GoTo YaUneErreur
Res = CLng(Nb1) + CLng(Nb2)
End If

MsgBox "Le résultat de " & Res, vbOKOnly +
vbInformation, "Résultat"
Exit Sub

YaUneErreur:
MsgBox ("il y a une erreur")

End Sub

ça te va ?

-----Message d'origine-----
Bonjour, bonsoir,

Je débute en Vba, et me heurte déjà à une boîte
d'insultes.


Voici mon code:

Dim Nb1 As Long
Dim Nb2 As Long
Dim Res As Long
Nb1 = InputBox("Saisir le premier nombre", "Opération",
0)

Nb2 = InputBox("Saisir le deuxième nombre", "Opération",
0)

Res = Nb1 + Nb2
MsgBox "Le résultat de " & Res, vbOKOnly +
vbInformation, "Résultat"


Jusqu'ici, ça va.
Mais où ça coince, c'est lorsque l'utilisateur clique
sur le bouton

"Annuler" de la boîte de dialogue.
En effet, Vba renvoie alors "False", qui n'est _pas_ un
nombre....


Qui peut m'éclairer siouplé ?

Merci d'avance.
DG



.



Avatar
Chui Perdu
Re,

Merci pour ta réponse si rapide.
Je vais "oser" abuser : comment accepter des valeurs avec des décimales
?
Dans ton exemple, cela génère le message d'erreur.

Cordialement

DG

"Emcy" a pensé très fort :
Salut,

essayes ça :

Sub main()

Dim Nb1 As String
Dim Nb2 As String
Dim Res As Long


Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération",
0)

If Nb1 <> "" And Nb2 <> "" Then
On Error GoTo YaUneErreur
Res = CLng(Nb1) + CLng(Nb2)
End If

MsgBox "Le résultat de " & Res, vbOKOnly +
vbInformation, "Résultat"
Exit Sub

YaUneErreur:
MsgBox ("il y a une erreur")

End Sub

ça te va ?

-----Message d'origine-----
Bonjour, bonsoir,

Je débute en Vba, et me heurte déjà à une boîte d'insultes.

Voici mon code:

Dim Nb1 As Long
Dim Nb2 As Long
Dim Res As Long
Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération", 0)
Res = Nb1 + Nb2
MsgBox "Le résultat de " & Res, vbOKOnly + vbInformation, "Résultat"

Jusqu'ici, ça va.
Mais où ça coince, c'est lorsque l'utilisateur clique sur le bouton
"Annuler" de la boîte de dialogue.
En effet, Vba renvoie alors "False", qui n'est _pas_ un nombre....

Qui peut m'éclairer siouplé ?

Merci d'avance.
DG



.




Avatar
Chui Perdu
Re-re,

J'ai trouvé.
Il s'agissait juste de remplacer CLng par CDbl

Merci encore.

Il se trouve que "Chui Perdu" a formulé :
Re,

Merci pour ta réponse si rapide.
Je vais "oser" abuser : comment accepter des valeurs avec des décimales ?
Dans ton exemple, cela génère le message d'erreur.

Cordialement

DG

"Emcy" a pensé très fort :
Salut,

essayes ça :

Sub main()

Dim Nb1 As String
Dim Nb2 As String
Dim Res As Long


Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération", 0)

If Nb1 <> "" And Nb2 <> "" Then
On Error GoTo YaUneErreur
Res = CLng(Nb1) + CLng(Nb2)
End If

MsgBox "Le résultat de " & Res, vbOKOnly + vbInformation, "Résultat"
Exit Sub

YaUneErreur:
MsgBox ("il y a une erreur")

End Sub

ça te va ?

-----Message d'origine-----
Bonjour, bonsoir,

Je débute en Vba, et me heurte déjà à une boîte d'insultes.

Voici mon code:

Dim Nb1 As Long
Dim Nb2 As Long
Dim Res As Long
Nb1 = InputBox("Saisir le premier nombre", "Opération", 0)
Nb2 = InputBox("Saisir le deuxième nombre", "Opération", 0)
Res = Nb1 + Nb2
MsgBox "Le résultat de " & Res, vbOKOnly + vbInformation, "Résultat"

Jusqu'ici, ça va.
Mais où ça coince, c'est lorsque l'utilisateur clique sur le bouton
"Annuler" de la boîte de dialogue. En effet, Vba renvoie alors "False",
qui n'est _pas_ un nombre....

Qui peut m'éclairer siouplé ?

Merci d'avance.
DG



.