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 -
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
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 ;)