Vérifier si une variable est un entier VBA

Résolu/Fermé
gougaille44 Messages postés 18 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 19 avril 2012 - 18 avril 2012 à 23:09
gougaille44 Messages postés 18 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 19 avril 2012 - 19 avril 2012 à 11:31
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2012 à 08:33
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
gougaille44 Messages postés 18 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 19 avril 2012
Modifié par gougaille44 le 19/04/2012 à 11:02
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 avril 2012 à 11:16
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
gougaille44 Messages postés 18 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 19 avril 2012
19 avril 2012 à 11:31
Parfait tout est clair !

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

;)
0