Vérifier si une variable est un entier VBA

Résolu
Bonjour,

Je suis confronté à un petit problème de validation des données dans mon code VBA (excel2007). Voilà un bref topo de la situation :

Je dois m'assurer qu'un utilisateur ne rentre que des entiers dans mes 40 textbox d'une userform, pour cela je fais une boucle de ce genre

dim nbr as integer
nbr=0

For i = 1 To 40
    If Me.Controls("TextBox_" & i).Value= int(Me.Controls("TextBox_" & i).Value) and Me.Controls("TextBox_" & i).Value >=0 Then
nbr=nbr+1
    End If
Next i


et si nbr = 40 alors les données sont valides et le programme peut poursuivre

Si je rentre une chaine de caractère dans mes textbox alors la fonction int(.) ne fonctionne pas, j'ai aussi essayer vartype(.) = "Integer" mais même problème. Je suis aussi passé par la fonction IsNumeric(.) avant pour différencier les chaines et entiers ...

Je vous remercie par avance pour votre aide en espérant avoir été assez clair dans mes explications

3 réponses

  1. Contributeur
    Bonjour,

    un textbox étant normalement utilisé pour des saisies, je préfère pour ma part (mais...) agir au moment de la saisie.
    par ex tiré de mon grenier

    Private Sub Tbox_num_fact_Change()
         'force à saisir des entiers
        On Error Resume Next
        If Not IsNumeric(Right(Tbox_num_fact, 1)) Or Right(Tbox_num_fact, 1) = "," Then
            MsgBox "Le caractere saisi doit être un chiffre", vbExclamation
           Tbox_num_fact = Left(Tbox_num_fact, Len(Tbox_num_fact) - 1)
        End If
    End Sub


    si tes valeurs du textbox sont issus de variables, il serait peut-^tre préférable d'agir au niveau antécédent ( lors de l'affectation d'une valeur à la variable)
    4
    1. Merci Michel c'est exactement ce que je souhaite faire !

      Mais serait -il possible d'avoir des explications concernant les fonctions right(.) et left(.) je ne vois pas du tout à quoi elles servent ?

      Merci ;)
      0
      1. Contributeur
        aide: F1 ou tu trouveras les explications et la syntaxe

        la procédure se déclenche à chaque entrée d'un caractère
        right(mahin,1) concerne le dernier caractère
        en cas d'erreur, left(machin,1) enlève le dernier caractère entré
        0
    2. Parfait tout est clair !

      Je te remercie pour tes réponses et ta rapidité

      ;)
      0