Erreur 13, incompatibilité de type [Résolu/Fermé]

Signaler
-
 patscaph -
Bonjour,
La question est courte. Coment faire pour que l'instruction 2 soit choisie dans tous les cas si l'une des conditons n'est pas remplie??
Actuellement ça plante si TextboxCode est vide!!! avec une erreur 13 (incompatibilité de type). Aussi ça doit fonctionner pour des codes commeText/numérique ''PA116'' Merci pour votre aide

Private Sub BtnValidationCode_Click()
Dim code As Integer

code = CInt(TextboxCode.Value)
If code = "3739" Or code = "1164" Or code = "1994" Or code = "1936" Then
Instruction1
Else
Instruction 2
End If
End Sub

1 réponse

Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 461
Bonjour,

Un textbox renvoie une valeur de type string.
Lorsque tu utilises CInt, tu transformes ce string en Integer.
Ok, pas de souci. Sauf si tu saisis dans ton textbox :
- AB116... Ce dernier n'est pas convertible en nombre entier....
- rien. Lorsque ton textbox est vide, il retourne la valeur "" qui est un string mais n'est pas égal à zéro. "" n'est pas convertible en nombre entier...

Par conséquent, tu devrais n'utiliser que des strings :
Private Sub BtnValidationCode_Click() 
Dim code As String

code = TextboxCode.Value
If code = "3739" Or code = "1164" Or code = "1994" Or code = "1936" Then 
    Instruction1 
Else 
    Instruction 2 
End If 
End Sub

ou, si tu ne saisis que des nombres entiers :
Private Sub BtnValidationCode_Click() 
Dim code As Integer 

If TextboxCode = "" Then MsgBox "Saisie obligatoire": Exit Sub
code = CInt(TextboxCode.Value) 
If code = 3739 Or code = 1164 Or code = 1994 Or code = 1936 Then 
    Instruction1 
Else 
    Instruction 2 
End If 
End Sub

j'ai donc ajouté la ligne qui évite le plantag en cas de non saisie :
If TextboxCode = "" Then MsgBox "Saisie obligatoire": Exit Sub

et viré les " des codes dans la ligne :
If code = 3739 Or code = 1164 Or code = 1994 Or code = 1936 Then 
ok parfait le probème est résolu... Merci