Erreur 13, incompatibilité de type

Résolu
patscaph -  
 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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. patscaph
       
      ok parfait le probème est résolu... Merci
      0