Vérifier si une variable est un entier VBA

Résolu
gougaille44 Messages postés 18 Statut Membre -  
gougaille44 Messages postés 18 Statut Membre -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. gougaille44 Messages postés 18 Statut Membre
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  3. gougaille44 Messages postés 18 Statut Membre
     
    Parfait tout est clair !

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

    ;)
    0