le noobs
Messages postés20Date d'inscriptionsamedi 27 mai 2006StatutMembreDernière intervention22 octobre 2013
-
7 mars 2007 à 19:26
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
9 mars 2007 à 01:17
Dim gb, pb, h As Integer
gb = Val(textgb.Text)
pb = Val(textpb.Text)
h = Val(texth.Text)
r = (gb + pb) * h / 2
lblr.Caption = Str(r)
je suis débutant et je ne trouve pas de solution ... je vous remercie d'avance pour une aide ...
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 mars 2007 à 20:04
Salut
-1- Si tu dimensionnes tes variables en Integer, les valeurs ne pourront pas avoir de virgule et les valeurs mini et maxi sont -32768 à +32767
Utilises plutôt des variables de type Double (à virgule flottantes)
-2- Faux amis :
Dim gb, pb, h As Double
ne dimensionnes pas chaque variable en type Double.
Seule la dernière, h, le sera.
Il faut répéter chaque déclaration :
Dim gb As Double, pb As Double, h As Double
-3- La fonction Val est obsolète mais a un côté pratique :
Il vaut mieux utiliser les fonctions "propres" à tes types de variables. Ici CDbl
gb = CDbl(textgb.Text)
Côté pratique de Val :
Si tu fais un Val("coucou") il te renverra 0, normal, alors que CDbl("coucou") génèrera une erreur
A toi de voir s'il y a un risque que la personne saisisse des lettres à la place de chiffres ...
-4- Idem pour la fonction qui recrée une chaine à partir d'un chiffre
Il faut utiliser CStr :
lblr.Caption = CStr(r)
La fonction Str n'a rien à voir avec la conversion de type, regarde dans l'aide
-5- Fais aussi attention aux saisies.
En général, les utilisateurs saisissent des virgules comme séparateur de décimal. Cela peut sembler normal en France
Cela peut causer des soucis car VB raisonne avec des points comme séparateur.
Il te faut donc penser à convertir d'éventuelles virgules par des points avant de transformer ton texte en Double.
Utilise la fonction Replace, exemple :
textgb.Text = Replace(textgb.Text, ",", ".")
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)
le noobs
Messages postés20Date d'inscriptionsamedi 27 mai 2006StatutMembreDernière intervention22 octobre 2013 7 mars 2007 à 20:45
voila.. je te remercie pour tes conseils ,je connaissais pas... et j'ai bcp a apprendre cependant j'ai toujours un problème...
je te donne lensemble de mon code... merci d'y jetter un coup d'oeil
-------------------------------------------------------------------------------
Public CHOIX As String
Private Sub Label3_Click()
End Sub
Private Sub Label4_Click()
End Sub
Private Sub cmdc_Click()
Dim gb As Double, pb As Double, h As Double
gb = CDbl(textgb.Text)
pb = CDbl(textpb.Text)
h = CDbl(texth.Text)
r = (gb + pb) * h / 2
lblr.Caption = CStr(r)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 mars 2007 à 23:46
Re
Bon, c'est une chose le code, mais explique un peu ce qui ne 'marche pas'.
As-tu un code/message d'erreur ? Où ?
Que donne le résultat ? Que devrait-il donner ?
PS : Les Replace doivent être placés dans ton cmdc_Click(), juste avant de commencer le transfert des TextBox dans tes variables.
+ cmdr_Click() ne sert plus
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 8 mars 2007 à 00:17
Bonsoir,
IL y a deux erreurs dans ce que tu veux faire... La première c'est d'utiliser la conversion des "Text" dans la Sub Form_Load() . En effet, cet événement se produit qu'une seule fois au chargement de la fenêtre (la form). Hors, ici la conversion doit se faire après l'évenement "Click du Bouton de calcul" (cmdc_Click)... donc il faut mettre la conversion des "Text" dans ce dernier.
Ensuite, il y a une petite erreur de syntaxe dans Replace. "Jack a dit" Replace( ***,",","."), hors il faut inverser les deux derniers paramètres...
En bref, le code que tu dois derrière le bouton de calcul, doit être :
drikce06
Messages postés2237Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200811 8 mars 2007 à 08:13
Salut, au risque de dire une bétise, t'as formule calcul uniquement l'aire d'un trapèze isocèle! Et dans les autres cas? Peut-être n'en as tu pas besoin tu me dira!
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 mars 2007 à 01:17
Salut DjFlyia
Ton message privé (auxquels je ne réponds pas) n'est qu'un copier/coller du listing que tu affiches dans le 3ème message.
Tu n'as pas tenu compte des conseils que je t'ai donné.
Ne compte pas sur moi pour t'écrire le code, essaye de comprendre et de tester, c'est tout simple.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<-- C'est écrit là
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)