Somme de décimales dans un userform

benadry

XLDnaute Occasionnel
Rebonjour le forum,

C'est encore moi !

Je continue dans mon projet et j'ai maintenant un problème avec une somme de décimales dans un userform.

Le but est de faire, dans un textbox, la somme d'autres textboxes.

Ca, j'ai réussi sans problème.

Je suis allé voir sur d'autres forums pour que la "virgule" soit comprise comme un "point" par la macro. D'ailleurs, quand je tape un "point", il remplace par une "virgule".

Mais, dans la cellule qui doit recevoir la somme, je n'arrive pas avec de décimales !

Quelqu'un aurait-il une idée ?

Encore un grand merci d'avance.

Cordialement.
 

Pièces jointes

  • Classeur4.xls
    71 KB · Affichages: 31
  • Classeur4.xls
    71 KB · Affichages: 38
  • Classeur4.xls
    71 KB · Affichages: 45

Dranreb

XLDnaute Barbatruc
Re : Somme de décimales dans un userform

Bonjour.

Normalement Val ne convertit en nombre que des String où le séparateur décimal est un point. Pour interpréter en nombre un texte avec le séparateur régional, c'est CDbl, et c'est aussi ce qu'il convient de prendre pour envoyer dans une cellule le nombre représenté par le Text d'un TextBox.
 

benadry

XLDnaute Occasionnel
Re : Somme de décimales dans un userform

Bonjour Dranreb,


Merci pour la réponse.

Je suis loin de maîtriser toutes les subtilités des macros.


J'ai essayé la solution suivante :

Code:
Private Sub Textbox18_Afterupdate()

TextBox15.Value = CDbl(TextBox18.Value) + CDbl(TextBox19.Value) + CDbl(TextBox20.Value) + CDbl(TextBox21.Value) + CDbl(TextBox22.Value) + CDbl(TextBox23.Value) + CDbl(TextBox24.Value) + CDbl(TextBox25.Value) + CDbl(TextBox26.Value) + CDbl(TextBox27.Value) + CDbl(TextBox28.Value) + CDbl(TextBox29.Value)

End Sub

et j'ai une "incompatibilité de type" !

Qu'est-ce que j'ai raté ?

Merci d'avance.

Cordialement.
 

Dranreb

XLDnaute Barbatruc
Re : Somme de décimales dans un userform

Peut être un des textbox est-il vide ?
Faites donc une procédure à part pour calculer ça au lieu de tout répéter dans chaque _AfterUpdate.
Genre :
VB:
Private Sub RecalculTotal()
Dim S As Double, J As Long
On Error Resume Next
For J = 18 To 29: S = S + CDbl(Me("TextBox" & J).Text): Next J
TextBox15.Text = S
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Somme de décimales dans un userform

Bonjour le fil, bonjour le forum,

Le problème est que la conversion en double (CDBl)d'une textbox vide plante... Il faut d'abord vérifier que la textbox ne soit pas vide avant de convertir. Essaie comme ça (non testé) :

Code:
Private Sub Textbox18_Afterupdate()
Dim CTRL As Control
Dim T As Double
Dim V As Double

For I = 18 To 29
    Set CTRL = Me.Controls("TextBox" & I)
    If CTRL.Value = "" Then V = 0 Else V = CDbl(CTRL.Value)
    T = T + V
Next I
TextBox15.Value = T
End Sub
 

Discussions similaires

  • Question
Microsoft 365 Format nombre
Réponses
7
Affichages
751

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 070
dernier inscrit
jujulop