Additionner qu’une seul fois les textBox

Bonjour le Forum,

Comme le dit mon titre, je voudrais faire juste une additionner de mes TextBox.

J'ai beau chercher mais je n'ai pas trouver la bonne formule.

Le tout est expliqué dans le fichier joint.

Merci beaucoup de votre aide.

Balance58

Bonjour,

En utilisant l'évènement Change, ce dernier se produit chaque fois que tu tapes un caractère.

En voulant ajouter 11, tu tapes 1 d'abord et 1 s'ajouter, puis le second 1 et 11 s'ajoute, tu auras donc ajouté 12 au total.

Il te faut utiliser l'évènement AfterUpdate à la place de Change.

Cordialement.

Bonjour MFerrand,

Merci pour ce changement de code qui fonctionne à merveille.

Et pour ma première demande la : je voudrais faire juste une additionner de mes TextBox à tu une solution.

Merci de ton aide

Balance58

Pas compris la question, c'est bien ce que tu fais : additionner les TextBox ?

Re,

Les TextBox du haut ne servent qu’une fois.

Ont rentrent des chiffres au TextBox du bas,

Dès que un TextBox du bas, un chiffre est inscrit ont arrête d'additionner TextBox du bas à la TextBox du haut.

Mais par contre après ont peu toujours inscrire des chiffres au TextBox du bas car ceux ci servent pour d'autres TextBox.

J'espère que cela est un peu plus clair pout toi.

Merci

Balance58

Ce que tu peux faire c'est utiliser le Tag de la TextBox pour mettre une condition limitant l'opération d'addition à une seule fois.

Pour tes TextBox du bas, tu les sélectionnes (tous en même temps), tu cherches la propriété Tag dans la fenêtre de propriété et tu places oui comme valeur (en les sélectionnant tous, tu met la valeur par défaut dans tous en même temps...)

Et tu modifies ainsi tes procédures, exemple :

Private Sub TextBox3_AfterUpdate()
    If TextBox3.Tag = "oui" Then
        TextBox14 = IIf(TextBox14 & TextBox3 = "", "", Val(TextBox14) + Val(TextBox3))
        TextBox3.Tag = "non"
    End If
End Sub

La première fois l'addition sera faite, le Tag étant à "oui", mais on le passe à "non" à la suite de l'opération, et la fois suivante, plus d'addition.

Cordialement.

Re,

Je viens de tester avec la TextBox3 et cela ne fonctionne pas, l'addition ce fait toujours.

Balance58

Tu n'as pas dû bien essayer ou tu as loupé quelque chose... Vérifie et reteste, ça marche parfaitement.

Re,

Oui ça fonctionne l'USF ouvert, mais des qu'on ferme USF et que on l'ouvre de nouveau l'addition est de nouveau actif.

Balance58

En déchargeant l'Userform, lorsqu'on le recharge à nouveau, tous les contrôles ont repris leur valeur par défaut !

C'est un principe général !

Si tu veux conserver l'effet, il faut se contenter de le masquer, et non le décharger après la première ouverture.

Néammoins, il sera déchargé à la fermeture du fichier (il est souhaitable d'ailleurs de le faire proprement, sans doute au moyen d'une procédure BeforeClose...)

Cordialement.

Bonjour MFerrand et le Forum,

Merci pour ton aide

Il n'est pas possible de dire à l'ouverture de l' USF : si la TextBox3 est vide alors ont fait l'addition et ci celle ci est pleine ont ne fait l'addition.

Ou sinon je peux mettre une fois la textBox3 remplis la mettre en Locked, et ajouter un bouton pour pouvoir modifier par la suite.

Merci

Bonne journée à toi et au Forum.

Balance58

Tu ne peux que jouer avec les propriétés existantes des contrôles...

Locked ne sert qu'à empêcher la saisie manuelle mais ne bloque pas l'utilisation par le code.

Et Locked repasserait à False si tu fermes le Userform ! Comme les autres, toutes les propriétés reprennent leur valeur par défaut à l'ouverture si le Userform a été déchargé.

La meilleure solution est de ne pas fermer le Userform dans ton cas, remplacer tous les Unload Me par des Me.Hide.

Et de programmer la proc. Workbook_BeforeClose (dans ThisWorkbook) avec

Unload UserForm1

Cordialement.

Re,

Ok super

Merci de ton aide

Bon après midi

Balance58

Rechercher des sujets similaires à "additionner seul fois textbox"