[Résolu] Erreur 13 lors d'une interruption via input box (cancel)

g.milano

XLDnaute Junior
Bonjour,

j'ai un soucis avec le type de variable demande quand je quitte une macro via l'input box (le bouton Cancel).

Voici la partie de code incriminé :

Code:
Sub atest()

 Dim ID As Long

    'Saisie ID
    ID = InputBox("entrez le numéro d'article")
    If StrPtr(ID) = 0 Then Exit Sub

End Sub

Si je ne déclare pas la variable ou si je la déclare en variant, le programme s’arrête normalement. Mais dès que je la déclare en long, le message d'erreur apparaît !

Sauriez-vous comment remédier a ce problème ?
 
Dernière édition:

mécano41

XLDnaute Accro
Re : Erreur 13 lors d'une interruption via input box (cancel)

Bonjour,

C'est normal. Le bouton Cancel renvoie "false" il faut donc déclarer ID en Variant afin qu'il accepte à la fois le Boolean du Cancel et le Long de la réponse normale.

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Erreur 13 lors d'une interruption via input box (cancel)

Bonjour G.Milano, Mécano, bonjour le forum,

Peut-ête comme ça :
Code:
Sub atest()
Dim BE As String
Dim ID As Long
'Saisie ID
BE = Application.InputBox("entrez le numéro d'article", Type:=1)
If BE = False Then Exit Sub
ID = CLng(BE)
End Sub
 

g.milano

XLDnaute Junior
Re : Erreur 13 lors d'une interruption via input box (cancel)

Merci a vous deux. C'est juste un problème de nature de variable alors. Je préfère gérer l'erreur plutôt que de la contourner avec une nouvelle variable, j'ai donc fait ça, et ça marche !

Code:
    'Saisie ID
    On Error Resume Next
    ID = InputBox("entrez le numéro d'article")
    If Err > 0 Then Exit Sub
    On Error GoTo 0