Problème de variable

Toutou

XLDnaute Occasionnel
Bonjour le Forum,
jai un petit souci: j'ai des calculs à effectuer, cependant, les facteurs varient en fonctions des besoins de l'utilisateur, d'où l'utilisation de beucoup de variable es d'une boucle if...then comme suit

avec 'bois' et 'agglo' deux optionbutton
'pxpa', 'longueur', 'largeur' et 'plota' des textbox
'px' et 'pixy' des variables

If bois = True Then

pxpa.Value = (plota.Value * pixy) + ((((y / 2) * 0.07 * 0.016 * (longueur.Value / 1000)) _
+ ((b + (y / 2)) * 0.07 * 0.016 * (largeur.Value / 1000))) * px)


ElseIf agglo = True Then

pxpa.Value = (plota.Value * pixy) + ((((y / 2) * 0.07 * 0.016 * (longueur.Value / 1000) * px) _
+ ((y / 2) * 0.07 * 0.016 * (largeur.Value / 1000))) * px) + _
((longueur.Value / 1000) * (largeur.Value / 1000) * px)

End If

pxpa.Value = Round(pxpa.Value, 2)


la 1ere partie de la boucle fonctionne bien, mais pas la 2ème Il semblerait que je ne peux pas utiliser une 2eme fois les variables 'pixy' et 'px'; je dois donc les remplacer par des valeurs: respectivement 0.09 et 2.60, ma question est donc pourquoi cela pose-t-il problème?

D'avance merci, @ +
Toutou
 

Toutou

XLDnaute Occasionnel
Bonjour Creepy,
voici mon programme, j'ai supprimé du code, des feuilles et des usf pour qu'il puisse être inférieur 50 ko.
Merci de te pencher sur mon pb,
@ +
Toutou [file name=variables.zip size=39840]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/variables.zip[/file]
 

Pièces jointes

  • variables.zip
    38.9 KB · Affichages: 24
  • variables.zip
    38.9 KB · Affichages: 26
  • variables.zip
    38.9 KB · Affichages: 25

Hervé

XLDnaute Barbatruc
Bonjour toutou, creepy


toutou, une idée, sans avoir ouvert ton fichier.

As-tu essayé de convertir les données de tes textbox en numérique avant de faire tes calculs

cdbl(textbox1)*cdbl(textbox2)

en effet les données d'une textbox sont de type string.

le soucis ne se produit pas avec la premiere partie de ton if car là, tu multiplies les valeurs de tes textbox avec un numérique et donc la convertion se fait bien.

voilà

en espérant ne pas m'etre trop planté.

salut
 

Toutou

XLDnaute Occasionnel
Je suis désolé Creepy, j'ai été un peu expéditif dans mon précédent message,
le problème survient lorsque tu ouvres l'application avec le bouton de commande de la Feuil1 puis que, après avoir remplis les champs et sélectionné 'agglo' ou 'bois', cliqué sur 'calculer'.
Je ne comprends d'aileurs pas cette erreure.
Si tu pouvais m'aider, j'en serais heureux,
merci d'avance,
@ +
Toutou
 

Hervé

XLDnaute Barbatruc
re toutou, creepy

Je viens d'ouvir ton fichier, j'aurais du commencer par là, désolé

bon, plusieurs choses.

1) tes variables numériques ne doivent pas etre declaré variant mais double si il s'agit de décimal, integer ou long si c'est des entiers.

2) les données numériques saisies dans les textbox doivent avoir comme séparateur la virgule et non le point (voir la textbox : pxp)

3) je te confirme l'obligation d'utiliser cdbl comme convertisseur de type pour pouvoir faire des calculs entre controles.

j'ai corrigé ceci dans ton exemple, mais il y a un nouveau bug (division par zero)??? et là je deviens incompétant.

voilà

salut
 

ChTi160

XLDnaute Barbatruc
Salut Toutou
bonjour Hervé
bonjour Creepy

Toutou
j'ai moi modifié le format des TextBox PxBois ,PxAgglo,PxP,Pxmo avec une virgule plutôt qu'un point 2,60 :12,90 :0,09
ensuite j'ai modifié la déclaration des variables correspondantes en Double et d'autres en integer
si Thierry passe par la il va te dire que de déclarer la presque totalité de tes variables en Variant c'est pas bien lol
Dim b As Integer
Dim x As Double
Dim px As Double
Dim pixy As Double
Dim prix As Double
Dim ligne As Long
Dim lon As Integer
Dim lar As Integer
Dim pixo As Double
Dim pixa As Double

lorsque tu déclares
Dim nombrea, nombreb, nombrec As Integer
seul nombrec est déclaré en Integer le reste est en Variant donc cela prend beaucoup de place en mémoire

tiens nous au courant
 

Toutou

XLDnaute Occasionnel
Hervé,
merci pour tout ça, les différences entres les types de varaibles comme variant ou long me paraissen floues; merci d'avoir éclairé ma lanterne.
En ce qui concerne la division par zéro, c'est normal, je pense que ce bug est du au fait que lorsque j'ai simplifié mon code, j'ai surement supprimé des variables ou des valeurs que je n'aurait pas du.
J'ai effectuer les modifications nécessaires sur mon programme, et il fonctionne maintenant très bien,
Merci
à +
Toutou
 

Discussions similaires

Réponses
47
Affichages
2 K

Statistiques des forums

Discussions
312 756
Messages
2 091 746
Membres
105 062
dernier inscrit
Ret78