Division par zéro ??VBA Excel

P

Pat

Guest
Bonjour à tous,
voila mon problème : je fais un calcul mais qui ne fonctionne pas, l'erreur est : division par zéro ????
Private Sub TxtDébitDésiré_Change()
With FeuilledesaisieCTA
.TxtVitesseDésirée.value = Val(TxtDébitDésiré) / Val(TxtSurface) / 3600 / 1000000
End With
End Sub

sachant que val(TxtSurface) peut etre avec décimale

OU est l'erreur ???? Problème de format ????
Merci pour votre aide
 
P

Pat

Guest
Bonjour et merci pour vos réponses,

TxtSurface est le résultat d'un calcul donc la valeur peut etre 0,001234 (par exemple)et suis certain qu'elle n'est pas à zéro car je la visualise dans mon Userform.
et c'est lorsque que je rentre une valeur dans TxtDébitDésiré que j'obtiens le message d'erreur.

Est ce que je dois mettre un format pour la valeur TxtSurface ???
Merci pour votre aide
@+
 
P

Pat

Guest
REsalut MichelXLd,
Ton astuce marche a merveille !!! c'est super;merci
mais la valeur est de 20 chiffres derrière la virgule, y aurait il un moyen d'avoir 3 chiffres derrière la virgule avec arrondi.
Si je n'buse pas de votre temps ?
Merci encore ;)
 

porcinet82

XLDnaute Barbatruc
Bonjour a tous,

Pas de solution, mais juste une question a Pat concernant le post Lien supprimé ou Lien supprimé afin de savoir si le problème est résolu!!!!

Je pense que la moindre des choses lorsqu'on post, c'est de donner des nouvelles, ne serait-ce que pour savoir si le problème est résolu ou non.

@+
 
P

Pat

Guest
Salut Porcinet82,
Je te remercie pour ton dernier post, effectivement j'ai oublié de te répondre et ne trouve pas d'explications valables à te donner et m'en excuse.
Ce n'est vraiment pas le genre de la maison de demander de l'aide et de ne pas remercier les personnes plus compétentes que moi et qui s'investissent pour aider les autres, donc encore une fois excuses moi si je t'ai froissé.
Pour information, je poste sur plusieurs forum en même temps et quelqu'un à trouvé une solution à mon problème. Si tu es intéressé par mon classeur, fais le moi savoir ,çà sera avec plaisir que je te l'enverrai, ainsi qu'aux autres d'ailleurs!!!
Bonne journée à tous!!!
 

MichelXld

XLDnaute Barbatruc
rebonjour à tous , bonjour cher Porcinet82


pour Marco :

La fonction Val ne reconnaît que le point comme séparateur décimal

la fonction CSng ,( tout comme CDbl ,CDec ,CInt ,CLng ) permet de transformer directement la donnée du TextBox en valeur numerique
tu trouveras d'autres infos sur ces fonctions dans l'aide en ligne Excel


pour Pat :

tu peux tester

= Format(CSng(TxtDébitDésiré) / CSng(TxtSurface) / 3600 / 1000000, '0.000')



bonne journée
MichelXld
 

porcinet82

XLDnaute Barbatruc
Re,

Pas de souci, je voulais juste savoir si j'avais pu t'aider ou non.

Pour ton classeur, je veux bien voir le code que tu utilise pour l'incrémentation des données lorsque tu cliques sur le bouton Valider dans le USF. Par ce que moi, j'utilise des Goto et sa devient vite le b....l. Merci d'avance.

@+
 
P

Pat

Guest
MichelXLD,
ton code pour le format de 3 chiffres après la virgule fonctionne mais j'ai été trop vite en tout a l'heure en disant que le changement Val par CSng était OK effectivement lorsque je rentre les valeurs dans le Userform , tout est OK mais lorsque je valide les données avec le bouton OK j'obtiens l'erreur incompatibilite de type
(je ne cliquais pas sur OK tout à l'heure)désolé.

Pour tous: si vous voulez le classeur et comment le remplir:
http://cjoint.com/?mAnnbilx2p (classeur)
http://cjoint.com/?mAnrnoESAe (copie ecran)

Merci à vous
@+
 

MichelXld

XLDnaute Barbatruc
rebonjour

c'est normal que tu ais une erreur lorsque tu utilises le bouton OK : celui ci reinitialise les Textbox

.TxtDébitDésiré = ''

.TxtVitesseMesurée = ''
...etc...


et dans le meme temps tu utilises les evenements Change pour ces Textbox


Private Sub TxtDébitDésiré_Change()
FeuilledesaisieCTA
.TxtVitesseDésirée.Value = Format(CSng(TxtDébitDésiré) / CSng(TxtSurface) / 3600, '0.000')
End Sub

...il n'est pas possible d'effectuer une division avec 'rien'


pour reinitialiser ton UserForm , tu peux faire un essai en remplaçant

With FeuilledesaisieCTA
.TxtDescriptiondelaCTA.Text = ''
.TxtMarque.Text = ''
.TxtType.Text = ''
.OpbGaineronde = False
.OpbGainecarrée = False
.TxtLargeur.Text = ''
.TxtHauteur.Text = ''
.TxtDiamètre.Text = ''
.TxtSurface.Text = ''
.TxtVitesseDésirée = ''
.TxtDébitDésiré = ''
.TxtVitesseMesurée = ''
.TxtDébitMesuré = ''
End With

par

Unload Me
FeuilledesaisieCTA.Show



je n'ai pas regardé la totalité de l'UserForm , il y aura peut etre d'autres adaptations ce type à realiser



bon apres midi
MichelXld
 
P

Pat

Guest
Resalut MichelXLD
Cà fonctionne nickel!!!!!!!!!
C'est génial, t'es un chef
Un grand merci à tous de votre aide :) :) :)
Bon après midi et a bientot.
Malheureusement , je ne pourrai pas vous aider en programmation mais si vous avez un problème en chauffage (régulation) n'hésiter pas, suis a votre disposition!!
 

Discussions similaires