Erreur 13, incompatibilité de type

Résolu/Fermé
patscaph - 15 mars 2013 à 13:52
 patscaph - 15 mars 2013 à 16:15
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

A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 mars 2013 à 14:29
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 
0
ok parfait le probème est résolu... Merci
0