Comment faire le test pour savoir si une variable est un entier ?
simo_boukoutaya
Messages postés12Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention25 août 2004
-
26 août 2004 à 13:10
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
26 août 2004 à 21:49
bonjour
une partie d'une application sur laquel je travaille se base sur la recharche ds une base de donnée, mais avant d'effectuer les recherche je dois faire des teste sur le variables si la varaible est un entier ou pas
comment le faire c urgent
merci d'avance;
Mellassa are number one and where ever you go you find green dima raja
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 août 2004 à 13:27
Tu peu essayer ca:
Private Function EstEntier(Variable) as boolean
On Error Goto HandleError:
Dim TmpEntier as integer
TmpEntier = Cint(Variable)
EstEntier = True
Exit Function
HandleError:
EstEntier = False
End Function
J explique: La fonction essai de convertir Variable a un entier et de la stocker dans TmpEntier.
Si Cint() Plante, forcement vb aussi donc, on choppe l exeception avec le On error Go to Handleerror
Donc : -
- Si la conversion Plante on retroune faux et sino vrai
@+
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 26 août 2004 à 13:42
> jrivet, si ta variable est décimale, cela ne génère pas d'exceptions.
Tu peux tester en suivant l'exemple précédent :
Private Function EstEntier(Variable) as boolean
If Not IsNumeric(Variable) then
EstEntier = False
else
EstEntier = ((Variable Mod 1)=0)
End If
End Function
Variable Mod 1 te retourne le reste de la division de Variable par 1. Si le reste est égal à 0, tu as un entier, (Variable Mod 1)=0 est VRAI, sinon bennn FAUX :)
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 26 août 2004 à 13:47
http://www.vbfrance.com/forum.v2.aspx?ID=193876 Faut chercher un peu avant de poser des questions ...
-------------------------------------------------
Débutant ... mais pas pour longtemps !
simo_boukoutaya
Messages postés12Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention25 août 2004 26 août 2004 à 14:10
en fait g trouvé ce code source sur internet et il marche trés bien test le si tu veux et merci pour ton aide
je l'ai pris de cette adresse :
http://www.vb-helper.com/howto_test_for_integer.html Private Function IsInteger(str As String) As Boolean
Dim i As Byte
Dim CharAscii As Integer
Dim Count As Byte
For i = 1 To Len(str)
CharAscii = Asc(Mid(str, i, 1))
If (CharAscii > 47 And CharAscii < 58) Then
Count = Count + 1
Else
If i = 1 Then
If CharAscii <> 43 And CharAscii <> 45 Then
IsInteger = False
Exit For
End If
Else
IsInteger = False
Exit For
End If
Count = Count + 1
End If
Next
If Count = Len(str) Then
If Val(str) > 32767 Or Val(str) < -32768 Then
IsInteger = False
Else
IsInteger = True
End If
End If
End Function
Private Sub Command1_Click()
lblIsNumeric.Caption = Format(IsNumeric(Text1.Text))
lblIsInteger.Caption = Format(IsInteger(Text1.Text))
End Sub
Mellassa are number one and where ever you go you find green dima raja
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 26 août 2004 à 14:39
Excuses-moi moustachu, mais ton code ne marche pas !! En effet, IsNumeric() retourne vrai si son argument est un nombre quelconque, pas s'il est entier uniquement !!!
Pour savoir si une variable numérique contient un entier, il suffit de savoir ce qu'est un entier : Un entier est un nombre ne possèdant aucune partie décimale. La partie entière d'un nombre s'obtenant par la fonction Int() (ou fix(), c'est selon), la fonction EstEntier() pourra simplement être ceci :
Public Function EstEntier(ByVal Variable As Variant) as BooleanIf IsNumeric(Variable) Then EstEntier (Int(Variable) Variable)
End Function
A noter l'utilisation du IsNumeric() pour être sur que Varialb eocntient bien un nombre et pas une chaine par exemple.
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 26 août 2004 à 20:00
Bonjour Moustachu.
J'avais un doute : le Modulo ne travaille que sur des entiers et MSDN confirme :
"result = number1 Mod number2
L'opérateur modulo, ou reste, divise l'argument number1 par l'argument number2 (en arrondissant les nombres à virgules flottantes à des nombres entiers)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 26 août 2004 à 21:49
Si on s'en tient à la question de départ faut aller voir le lien posté par zigarn un peu plus haut sur l'utilisation de vartype qui te donne le type de donnée de ta variable.
Par ex, x= vartype(tavariable) si x=2 c de l'entier .....
Maintenant, si c pour connaitre le type de champ de ta table de base de données, pareil, il y à ce qu'il faut sur le site. Faut juste savoir si tu utilises DAO ou ADO.
Cordialement, CanisLupus
Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands