Problème

Résolu
neo1602brice Messages postés 77 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 10 juillet 2009 - 4 avril 2007 à 01:55
neo1602brice Messages postés 77 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 10 juillet 2009 - 4 avril 2007 à 02:14
Salut à tous,

J'essaye d'effectuer le calcul suivant
tempsA = CInt(heureA) * 3600

à savoir,
tempsA as double
heureA as string

Dans mon problème heureA=100

J'obtiens l'erreur suivant "Dépassement de capacité", je ne comprends pas, vu que j'ai déclaré tempsA en double

Avez vous une solution?? Merci d'avance à tous

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 avril 2007 à 02:09
Salut
Tu veux mettre dans un Double le résultat d'une multiplication entre une String et un Integer (on n'est plus le 1er avril pourtant).
Va falloir faire un choix entre les choux et les carottes !
Dépassement de capacité : Oui car :
- La conversion d'un Integer en String est implicite, pas propre, mais ce n'est pas ça qui cause l'erreur.
- HeureA est un Double : Tu le convertis en Integer et tu en prends la valeur entière, Ok, logique.
- Par contre, HeureA pouvant afficher des valeurs jusqu'à 23, une fois multiplié par 3600, tu dépasses alègrement les 32767, seules valeurs autorisées en positif dans ce genre de variable.

Il faut donc converstir le tout en Double :
tempsA = CDbl(Fix(Val(heureA)) * 3600)
où :
   Val : permet de s'affranchir des valeurs non numériques
   Fix : Isole la partie entière d'un nombre (au lieu de CInt)
   CDbl : Pour ramener le résultat au bon format final

Il faut être très précis sur les types de variable, sinon, gare aux surprises !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 avril 2007 à 02:11
Salut,

change ton CInt par CLng ou CDbl

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
neo1602brice Messages postés 77 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 10 juillet 2009
4 avril 2007 à 02:14
merci beaucoup à tous les deux, je commencais à m'inquieter de devoir trouver une autre solution...
Je vais enfin pouvoir aller dormir, merci encore
0
Rejoignez-nous