XL 2016 calcul "direct" dans un textbox

halecs93

XLDnaute Occasionnel
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

  • COMMANDE TEST v10.xlsm
    39.1 KB · Affichages: 4
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...
C

Compte Supprimé 979

Guest
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 :rolleyes:

Bon courage
 

Jacky67

XLDnaute Barbatruc
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

  • COMMANDE TEST v10.xlsm
    45.3 KB · Affichages: 7

Jacky67

XLDnaute Barbatruc
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:

halecs93

XLDnaute Occasionnel
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 :rolleyes:

Bon courage
Merci pour ce conseil riche d'enseignement. Je ne peux que m'incliner devant votre savoir, mon maître
 

halecs93

XLDnaute Occasionnel
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
 

patricktoulon

XLDnaute Barbatruc
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
 

halecs93

XLDnaute Occasionnel
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
 

patricktoulon

XLDnaute Barbatruc
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
 

fanch55

XLDnaute Barbatruc
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 ... 🤗
 

patricktoulon

XLDnaute Barbatruc
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:

patricktoulon

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
328
Affichages
21 K

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG