XL 2016 calcul "direct" dans un textbox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

halecs93

XLDnaute Impliqué
Re-bonjour

Dans mon classeur, j'utilise un userform pour passer des commandes. En textbox3 une quantité, en textbox4 la somme unitaire. J'ai bien un un textbox5, mais il n'affiche pas me résultat (texbox3 x textxbox4).

Est-il possible, sans qu'il soit nécessaire de déclencher le calcul que celui ci se fasse automatiquement (au pire en appuyant sur la touche Tab) ?
 

Pièces jointes

Solution
Bonjour à tous

@halecs93 la chose est très simple
la base:
  1. il faut savoir que la valeur des textboxs est du string(du texte)
  2. vba ne fait pas d’opération mathématique avec du texte même si le texte est un nombre
  3. il y a 2 fonctions que tu dois connaitre pour ça et qui te serviront dans tout tes développement
  4. ce sont les fonction VAL() et CDbL()
la fonction val :
cette fonction n’accepte que le point comme séparateur décimal
ainsi si j'ai 225.70 dans le textbox3 et dans le textbo4 j'ai 2
le code vba sera val(textbox3.value)* val(textbox4.value)

la fonction CDBL

cette fonction elle n’accepte que la virgule comme séparateur décimal
le code vba...
Bonsoir,

En textbox3 une quantité, en textbox4 la somme unitaire. J'ai bien un un textbox5, mais il n'affiche pas me résultat (texbox3 x textxbox4).

Et vous êtes étonné, avec ce genre de code 🤔

VB:
Private Sub TextBox3_Change()
prixTotal = prixUnit * quantite
Me.TextBox5.Text = Format(prixTotal, "0.00")
End Sub

Qu'est-ce que "prixUnit" et "quantite"

Je pense qu'il faut que vous repreniez les base du développement VBA 🙄

Bon courage
 
Re-bonjour

Dans mon classeur, j'utilise un userform pour passer des commandes. En textbox3 une quantité, en textbox4 la somme unitaire. J'ai bien un un textbox5, mais il n'affiche pas me résultat (texbox3 x textxbox4).

Est-il possible, sans qu'il soit nécessaire de déclencher le calcul que celui ci se fasse automatiquement (au pire en appuyant sur la touche Tab) ?
Bonjour,
Une piste pour l'userform2 en pièce jointe
 

Pièces jointes

C'est bien Jacky67 d'encourager l'ignorance de ceux qui veulent s'y mettre sans chercher à comprendre 🥳 👌
Hello BrunoM45 🙂
Meilleurs vœux pour 2023 🥂
Bah...Je n'ai donné qu'une piste avec, je pense, des codes qui fonctionnent.
Ainsi, il peut comparer ses codes avec les miens et en tirer les bonnes conclusions.
Enfin c'est comme cela que je vois la chose, et c'est comme cela que je suis devenu un éternel débutant.
Je ne crois à aucun moment que j'encourage l'ignorance, mais ce n'est que mon avis.
Il reste encore beaucoup à faire dans son projet, et je lui souhaite bonne continuation.
Bonne nuit
 
Dernière édition:
Bonsoir,



Et vous êtes étonné, avec ce genre de code 🤔

VB:
Private Sub TextBox3_Change()
prixTotal = prixUnit * quantite
Me.TextBox5.Text = Format(prixTotal, "0.00")
End Sub

Qu'est-ce que "prixUnit" et "quantite"

Je pense qu'il faut que vous repreniez les base du développement VBA 🙄

Bon courage
Merci pour ce conseil riche d'enseignement. Je ne peux que m'incliner devant votre savoir, mon maître
 
Hello BrunoM45 🙂
Meilleurs vœux pour 2023 🥂
Bah...Je n'ai donné qu'une piste avec, je pense, des codes qui fonctionnent.
Ainsi, il peut comparer ses codes avec les miens et en tirer les bonnes conclusions.
Enfin c'est comme cela que je vois la chose, et c'est comme cela que je suis devenu un éternel débutant.
Je ne crois à aucun moment que j'encourage l'ignorance, mais ce n'est que mon avis.
Il reste encore beaucoup à faire dans son projet, et je lui souhaite bonne continuation.
Bonne nuit
Merci, c'est bien de cette façon que je tente de comprendre et mieux appréhender le vba
 
Bonjour à tous

@halecs93 la chose est très simple
la base:
  1. il faut savoir que la valeur des textboxs est du string(du texte)
  2. vba ne fait pas d’opération mathématique avec du texte même si le texte est un nombre
  3. il y a 2 fonctions que tu dois connaitre pour ça et qui te serviront dans tout tes développement
  4. ce sont les fonction VAL() et CDbL()
la fonction val :
cette fonction n’accepte que le point comme séparateur décimal
ainsi si j'ai 225.70 dans le textbox3 et dans le textbo4 j'ai 2
le code vba sera val(textbox3.value)* val(textbox4.value)

la fonction CDBL

cette fonction elle n’accepte que la virgule comme séparateur décimal
le code vba sera CDbl(textbox3.value)* CDbl(textbox4.value)

selon le besoins on peut utiliser la fonction replace pour changer le séparateur
perso je préfère le point puisque c'est le séparateur décimale de vba (quelque soit le séparateur décimal paramétré dans excel )

pour rendre le calcul automatique à la saisie , tu a les événement control pour ca

tout cela étant dit

tu est inscrit depuis 2008 168 messages et 2 solutions
ça me laisse perplexe
c'est le genre de chose que tu devrais savoir
 
Bonjour à tous

@halecs93 la chose est très simple
la base:
  1. il faut savoir que la valeur des textboxs est du string(du texte)
  2. vba ne fait pas d’opération mathématique avec du texte même si le texte est un nombre
  3. il y a 2 fonctions que tu dois connaitre pour ça et qui te serviront dans tout tes développement
  4. ce sont les fonction VAL() et CDbL()
la fonction val :
cette fonction n’accepte que le point comme séparateur décimal
ainsi si j'ai 225.70 dans le textbox3 et dans le textbo4 j'ai 2
le code vba sera val(textbox3.value)* val(textbox4.value)

la fonction CDBL

cette fonction elle n’accepte que la virgule comme séparateur décimal
le code vba sera CDbl(textbox3.value)* CDbl(textbox4.value)

selon le besoins on peut utiliser la fonction replace pour changer le séparateur
perso je préfère le point puisque c'est le séparateur décimale de vba (quelque soit le séparateur décimal paramétré dans excel )

pour rendre le calcul automatique à la saisie , tu a les événement control pour ca

tout cela étant dit

tu est inscrit depuis 2008 168 messages et 2 solutions
ça me laisse perplexe
c'est le genre de chose que tu devrais savoir
Bonjour et merci pour ces explications et éclaircissements.

En ce qui concerne les 2 solutions...est-ce à dire que je n'ai pas cliqué l'option "marquer comme solution". Là, j'en suis navré. En effet, j'ai tendance à remercier dans mes messages sans penser à cocher.

Encore mes remerciements
 
re
je ne parlais pas que coche une solution ou une autre
mais de celle que tu a proposé et qui on été validées
mais je vois que tu coche comme solution tes propres messages alors que la solution t'a été apporté par quelqu'un d'autre
tu n'a visiblement pas compris comment ca marche
 
la fonction CDBL
cette fonction elle n’accepte que la virgule comme séparateur décimal
le code vba sera CDbl(textbox3.value)* CDbl(textbox4.value)
Salut Patrick,
Cdbl comme Csng accepte et convertit les séparateurs décimaux point et virgule
mais il n'accepte pas du string
VB:
Sub test()
    For Each N In Array("3.4", "4,3", "Toto")
        If IsNumeric(N) Then Debug.Print CSng(N), CDbl(N)
    Next
End Sub
J'avions oublié cette particularité, merci pour ce rappel ... 🤗
 
re
bonjour @fanch55
VB:
Sub test()
    Dim valeur As String, valeur2 As Double    'ou long comme tu veux
    valeur = "4,5"
    valeur2 = CDbl(valeur) + 0.5
    If valeur2 > CDbl(valeur1) Then
        MsgBox "CDBL permet de convertir un string numerique en numerique" & vbCrLf & _
        "donc valeur1 + 0.5 = " & valeur2 & vbCrLf & " donc le calcul est possible"
    End If
End Sub

cela dit je me répète; mieux vaut faire un replace",","." et utiliser val car vba a comme séparateur décimal le point et cela quelque soit le séparateur décimal paramétré dans excel
car toute les fonctions vba pour calcul fonctionnent avec le point

par contre avec CDBL on a la possibilité du format monétaire "€" qui est accepté
c'est sympa quand on a formaté un textbox en monétaire avec virgule comme séparateur
exemple
msgbox cdbl("15,75€")+3
le calcul se fait bien

remarque avec val aussi
MsgBox Val("15.75 €") + 3
sauf que val accepte l'espace entre le nombre et le "€"mais pas CDBL
😉
 
Dernière édition:
re
attention a csng quand même
même si c'est des brindille le résultat est faux (multiplié par c'est plus une brindille mais un arbre)
1675163413664.png

VB:
Sub testq()
    Debug.Print (CSng("4,3") + 0.5) * 10000000
    Debug.Print (CDbl("4,3") + 0.5) * 10000000
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
930
Retour