somme dans une userform

  • Initiateur de la discussion Initiateur de la discussion vinciane
  • Date de début Date de début

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 !

V

vinciane

Guest
bonjour a tous,

J'ai une dizaine de combobox a additionner quand une des combobox changer d'etat.

le code est le suivant

Code:
 sum1 = 0

For i = 1 To 10
On Error Resume Next
sum1 = sum1 + Controls('d' & i).Value
Next i
TextBox14.Value = sum1
If TextBox14.Value > TextBox12.Value Then TextBox15.Value = TextBox14.Value - TextBox12.Value

Or j'ai toujours mes sommes egale a 0 :-(

merci a tous d'avance

a bientot
 
Bonjour

bizarre que tu es une somme à zéro, tu devrais au moins avoir une concaténation ??

Tes combobox se nomment bien d1,d2 jusqu'à D10 ???

alors essaye comme ceci :

sum1 = sum1 + cdbl(Controls('d' & i).Value)


Afin de convertir tes données en numérique.

Salut
 
oui mais combobox se nomme bien d1 jusque d10

le soucis avec ta solution c'est que sum est bien en numerique

mais ensuite quand je met le resultat sum dans la textbox elle devient '9.75' par exemple est non 9.75

ça peut etre ça qui fait que mes calcul ensuite ne fonctionne pas?
 
re

je viens de voir aussi le on error resume next, qui est surment là pour gérer l'erreur provoquée par un combobox vide.

Dans ce cas, si je peux me permettre, tu devrais tester le combobox avant, comme ceci :

Code:
For i = 1 To 10
if Controls('d' & i)<>'' then
sum1 = sum1 + cdbl(Controls('d' & i).Value)
end if
Next i

en espérant t'être utile.

Salut
 
re

Un textbox comme son nom l'indique gére du texte, si tu veux utiliser ses valeurs comme numérique, il te faut convertir tes données en numérique comme tu la fait pour l'addition des combobox.

CDbl(TextBox..)

Salut
 
Bonjour Vinciane, Hervé, le Forum

Heu Hervé, c'est un peu simpliste comme explication 'Une Textbox comme son nom l'indique gére du texte'

Non en fait une TextBox est le Contrôle le plus communément utilisé en programmation pour permettre aux Users de saisir des Informations, qu'elles soient numériques ou non.

Par contre en version FR si on a des décimales et aussi quand on joue avec des Formats spécifiques en version US on se retrouve toujours dans des complications... et il faut souvent passer par une conversion.

Sinon donc OK pour un retour numérique avec la fonction de Conversion Cdbl(TextBoxX) en pensant à gérer un gestionnaire d'erreur si valeur non-convertible en TextBox.

Bon Aprèm
@+Thierry
 
Bonsoir thierry

🙂

Ce que je voulais dire, à travers ma simplification, c'est que quelque soit la données saisie dans un textbox (alpha ou numérique avec ou sans décimales), VBA la considère toujours comme du type string.

Salut
 
merci thierry et Hervé pour vos explications ça devient plus clair

justement pour les erreurs, quand une de mes valeurs est vide j'ai mis un if textbox12.value <> '' then ... le reste

mais quand c'est une valeur avec un . au lieu de virgule pour les nombres decimaux comment gerer cette erreur?
c'est peut etre un peu naif mais je ne connais que les if et for 😛
 
Re Hervé, le Fil, le Forum

Je ne suis pas en total accord, car on peut directement tester la valeur contenue dans une TextBox avec par exemple les Fameux 'IsNumeric'...'IsDate'

Par ailleurs en version US avec paramètres régionaux US aussi, on a pas de problème pour aditionner les TextBox entre-elles directement, on est en format natif de calcul de VBA (point pour séparateur de décimale, date MM/DD/YY)

En fait 'tout est de type String' si on part de ce point de vue, alors qu'un caleçon pour certains types c'est mieux ! (lol)

On pourrait comparer une TextBox à ce que reçoit et retourne une Cellule, à la seule grosse différence près c'est que du coté Cellules, c'est Excel qui s'auto paramètre pour tenter de détecter le type de données contenues dans la cellule (et qu'il gère aussi les paramètres régionaux 'étrangers'), et que dans une TextBox, c'est à la mimine en VBA que l'on doit le faire.

Bonne Fin de Journée
@+Thierry
 
Re bonjour Vinciane

Sorry je n'avais pas vu ta dernière question en postant. Pour contrôller le contenu d'une TextBox :

Fixer la Virgule en tant que séparateur en Saisie :
Private Sub TxbEUR_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
&nbsp; &nbsp;
If KeyAscii = 44 Or KeyAscii = 46 Then
&nbsp; &nbsp; &nbsp; &nbsp; KeyAscii = Asc(Application.International(xlDecimalSeparator))
&nbsp; &nbsp;
End If
End Sub

Vérifier en Saisie de Valeur Numérique :
Private Sub TxbEUR_CHANGE()
If Not IsNumeric(TxbEUR) Then Exit Sub


Voici une Démo un peu ancienne o&ugrave; tu verras ceci en application :

=> Lien supprimé

Bonne Fin de Journée
@+Thierry
 
re

Ben alors on est d'accord, thierry 🙂 toute saisie dans une textbox est de type string, a nous ensuite de le convertir pour en faire ce que l'on veut (en version fr, bien sur).

Par contre, et je pense que tu pourras m'apporter des éléments de réponse, le 'isnumeric' ne serait qu'un test de 'vraissemblance'.

en somme VBA nous dit (et je le cite, lol) :

msgbox isnumeric(textbox1)=vrai, la valeur que vous avez saisie dans la textbox pourrait être du numérique, que celle-ci soit du type string ou double (ou je ne sais quoi).

🙂

Salut
 
Re Hervé

Oui je pense que la Function 'IsNumeric' permet de tester la 'vraissemblance' en évaluant que la Totalité de l' expression testée est bien une valeur numérique.

Par contre l'aide Américaine est bien plus incisive quant à l'explication :

IsNumeric returns True if the entire expression is recognized as a number; otherwise, it returns False.

Cà laisse moins d'équivoque !

Bonne Fin de Journée
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
899
Réponses
5
Affichages
572
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
447
Retour