Addition de deux textbox

bonjour le forum

voila je revient vous voir car j'ai deux problèmes

le premier est que lorsque si je ne remplis pas la texbox2 je n'ai pas le total dans la textbox4 .

et le deuxième est que sur la feuille excel le total ne s'effectue pas.

je joint mon fichier test ce sera plus clair .

merci de votre aide

PS je selectionne le site via un combobox afin de remplir le textbox3.

Bonsoir,

Ta cellule C2 contient du texte, normal donc qu'il ne soit pas additionné.

Val ne reconnaît pas la virgule comme séparateur décimal, les résultats de l'addition dans TextBox4 ne prendront donc pas en compte les décimales (méthode à revoir).

Pour avoir le résultat dans TextBox4 lorsqu'une valeur apparaît dans TextBox3, il ne faut se contenter de le faire seulement lors de la saisie dans TextBox2 !

Tu multiplies inutilement des procédures qui font double ou triple emploi... une seule qui fait ce qu'on demande, c'est mieux et on y voit plus clair (surtout si on laisse VBA les positionner plutôt que de les disperser au petit bonheur, et si on indente (correctement) on y voit encore plus clair).

Cordialement.

merci MFerrand pour ces remarque certe très constructive

mais cela ne m'aide pas beaucoup je ne sait toujours pas comment résoudre ce problème.

Mes remarques sont constructives mais c'est à toi d'en faire bon usage :

Quand je dis que ta cellule contient du texte, cela devrait t'alerter sur la valeur que tu affectes !

Tu affectes une valeur de TextBox (le 4), qui est une valeur formatée avec la fonction Format dont le résultat est nécessairement une donnée texte (String). Tu affectes donc du texte ! Ne te plains donc pas du résultat...

Si ta TextBox contenait une valeur numérique, ce serait toujours du texte dans la TextBox mais lors de l'affectation Excel identifierait un nombre et assurerait la conversion, ce qui n'est pas le cas avec une valeur formatée. Il te faut donc rétablir la valeur numérique avant de l'affecter comme tu le fais (mal cependant, mais ça en fait une partie) pour les calculs. Cela doit être à ta portée !

Quand je dis que Val ne reconnaît pas la virgule... Tu as pu constater que la fonction Format transformait le point que tu utilisais dans l'expression traitée par VBA en virgule car cette fonction utilise tes paramètres régionaux. Ce n'est pas le cas de Val, il faut donc que tu remplaces la virgule par un point en utilisant la fonction Replace dans l'expression que tu soumets à Val pour en extraire la valeur numérique. Ce n'est pas bien sorcier une fois la chose connue !

Quand je dis qu'il te faut aligner la procédure de changement de TextBox sur celle mise en oeuvre pour TextBox3, si tu veux que la même chose se passe, c'est assez clair, Non ! Tu n'as qu'à te recopier...

Et quand je dis que utiliser simultanément Change, AfterUpdate, voire DblClick, tu ne fais que multiplier les évènements en multipliant une même instruction (déjà que Change se produit à la saisie de chaque caractère !). Un seul serai suffisant, qu'il t'appartient de choisir : AfterUpdate pourrait être le plus indiqué, mais Change malgré sa répétition sur une même saisie peut aussi présenter des avantages (ergonomie à tester). En tout cas une simplification ne serait pas inutile et te permettrait de mieux comprendre ce que tu écris.

Ton code est trop mal écrit à mon goût pour que j'intervienne dessus sans le réécrire en entier, et je n'ai ni le temps ni l'envie de le faire. Cependant, si tu cherches à comprendre le code que tu écris, son fonctionnement et le résultat produit, tu disposes dans l'éditeur des outils nécessaires pour avancer et régler successivement les problèmes soulevés, dont la source t'est indiquée, à commencer par l'Aide qui, si elle n'est pas toujours exhaustive, demeure néammoins primordiale pour opérer en VBA.

Cordialement.

Merci MFerrand pour cette réponse très précise.

je viens de revoir mon code afin que cela fonctionne.et cela fonctionne .

donne moi ton avis si tu as deux minutes

Merci encore de ton aide.

Tu n'as pas réglé le problème d'affectation, il faut mettre :

.Range("C" & Ligne) = Val(Replace(TextBox4.Text, ",", "."))

Codialement.

Merci beaucoup de ton aide.

bon courage pour la suite

amicalement

Rechercher des sujets similaires à "addition deux textbox"