Variable de type réel

Résolu
Signaler
Messages postés
9
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
19 octobre 2004
-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour,

Hormis la fonction "IsNumeric" pour les variables de type entier, j'aimerais savoir si quelqu'un de vous sait comment tester si une variable est de type "réel".

J'ai trouvé une solution à ce problème par la méthode suivante :

1. on prend la variable en tant que chaine de caractère
2. On fait une boucle "for" parcourant tous les caractère de la variable

3. Pour chaque caractère, on teste si sa valeur Ascii est comprise entre 48 et 57 (0 à 9) ou égale à 46 ( le "." séparant la partie entière de la pertie décimale)

4. Si on rencontre ce ".", on teste si l'utilisateur n'a pas saisie un "." au caractère précédent.

CODE :

Dim test as boolean
Dim i as integer
Dim tableau(15) as integer

For i = 1 to len(MaVariable)
tableau(i) = mid(MaVariable, i , 1)
Next

test = false
i = 1While i <len(MaVariable) and test false

If i = 1 then

If asc(mid(MaVariable, i , 1)) >= 48 and asc(mid(MaVariable, i , 1)) <= 57 then
i = i + 1
test = false
Else
If asc(mid(MaVariable, i , 1)) = 46 then
i = i + 1
test = false
else
test = true
end if
End if

Else
If asc(mid(MaVariable, i , 1)) >= 48 and asc(mid(MaVariable, i , 1)) <= 57 then
i = i + 1
test = false
Else
If asc(mid(MaVariable, i , 1)) = 46 then

if asc(mid(MaVariable, i - 1 , 1)) = 46 then
test = true
else
i = i + 1
test = false
end if


else
test = true

end if
End if

End if

Wend

if test = true then
" Variable pas de type réel "
else
"Ok"
end if

#########################

Cela est bien joli, long est casse tête mais si vous avez d'autres proposition, à vous de jouer............

Merci encore pour votre aide et votre participation !!!!!!!!!!!!

7 réponses

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
VarType, fonction
      

Renvoie une valeur de type Integer qui indique le sous-type d'unevariable.

Syntaxe

VarType(varname)

L'argument varname est une valeur de typeVariant pouvant contenir toute variable à l'exception d'une variable detype défini par l'utilisateur.

Valeurs renvoyées

Constante Valeur Description 
vbEmpty 0 Empty (non initialisée) 
vbNull 1 Null (aucune donnée valide) 
vbInteger 2 Entier 
vbLong 3 Entier long 
vbSingle 4 Nombre à virgule flottante en simple précision 
vbDouble 5 Nombre à virgule flottante en double précision  
vbCurrency 6 Valeur monétaire 
vbDate 7 Valeur de date 
vbString 8 Chaîne 
vbObject 9 Objet 
vbError 10 Valeur d'erreur 
vbBoolean 11 Valeur booléenne 
vbVariant 12 Variant (utilisée seulement avec destableaux de variants) 
vbDataObject 13 Objet d'accès aux données 
vbDecimal 14 Valeur décimale 
vbByte 17 Octet 
vbUserDefinedType 36 Variant contenant des types définis par l'utilisateur 
vbArray 8192 Tableau 

Note   Lesconstantes mentionnées dans ce tableau sont spécifiées par Visual Basic pour Applications. Vous pouvez par conséquent utiliser leur nom n'importe où dans votre code à la place des valeurs réelles correspondantes.

Remarques

La fonction VarType ne renvoie jamais la valeur pour la constante vbArray elle-même. Elle est toujours ajoutée à une autre valeur pour indiquer un tableau d'un type particulier. La constante vbVariant n'est renvoyée que lorsqu'elle est associée à vbArray pour indiquer que l'argument de la fonction VarType est un tableau de type Variant. Par exemple, la valeur renvoyée pour un tableau de nombres entiers est le résultat de vbInteger + vbArray, ou 8194. Si un objet possède unepropriété par défaut, VarType (object) renvoie le type de celle-ci.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Messages postés
9
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
19 octobre 2004

Merci beaucoup pour votre aide !!!!!!
Messages postés
9
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
19 octobre 2004

J^'ai fait le test avec cette foncton mais cela n'a pas l'air de marcher.
En effet, j'ai tester avec différent nombre et le résultat ne semble pas être celui que j'attends.

Exemple :

mavar est de type variant
si on fais
mavar = 20
mavar = 20.32

alors

VarType(20) cela donne 8
Vartype(20.32) cela donne 8

Uns solution ?
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Ah attent je vais voir ça car je t'ai choppé cela dans la MSDN

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Bien alors j'ai testé :

    Dim MaVar As Variant
    MaVar = 20
    Print VarType(MaVar)


Cela retourne : 5 / Virgule flottante double précision

    Dim MaVar As Variant
    MaVar = 20.12
    Print VarType(MaVar)


Cela Retourne : 2 / Entier

Donc chez moi ça marche

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
9
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
19 octobre 2004

En fait je ne t'ai pas expliqué le problème dans sa globalité. Si je reprends ton exemple, l'affectation d'une valeur à la variable MaVar se fait à partir d'une zone de texte.

Exemple :
Dim mavar as variant

mavar = text1.text

msgbox vartype(mavar) = 8 dans tous les cas

Je pense que dans ce cas précis, VB interprète le variable comme etant une chaine de caractère étant donné quelle provient d'une zone de texte.

C'est donc un problème , puisque dans mon appli les valeurs des variables proviennenet de zones de texte............
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Ok, essai avec :

Dim mavar as integer

mavar = int(val(text1.text))      'Demandons un entier du texte convertis en valeur


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]