Vérifier si une variable est un entier VBA
Résolu
gougaille44
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
gougaille44 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
gougaille44 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
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
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
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
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
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)
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)
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 ;)
Mais serait -il possible d'avoir des explications concernant les fonctions right(.) et left(.) je ne vois pas du tout à quoi elles servent ?
Merci ;)