Problème Valeur textbox [VBA Excel 2007]
Résolu
Gornarf
Messages postés
121
Date d'inscription
Statut
Membre
Dernière intervention
-
Gornarf Messages postés 121 Date d'inscription Statut Membre Dernière intervention -
Gornarf Messages postés 121 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je fais appel à vous car je rencontre un problème avec mon Usf
Explications: Je développe un outils (de calcul) pour le boulot. Plutot que de le créer sur Excel même avec les formules excel qui génèrent des problèmes d'incompatibilité de version je suis passé d'une version excel 100% à une version excel/vb à une version 100%vb mais toujours sous excel.
Par soucis du détails (je débute en Vb) j'ai masquer les feuilles etc et je programmerai le lancement de l'usf au démarrage d'éxcel. Soit!
Mon probleme est le suivant:
J'utilise des Textbox pour entrer des montants:
Elles sont paramétrées pour que le text ne soit pas accepté, avec la virgule ou le point converti en virgule comme séparateur décimal etc, pas de soucis à ce niveau.
Je peux donc rentrer dans montants tels que 125,50 dans mes textbox sans problèmes mais
Une fois que je veux dans ma dernière Textbox le total des Textbox présentes sur la page (j'utilise un multipage) le totam est un nombre entier:
Exemple: Textbox1 =125,50 , autres textbox vides, résultat = 125
Comment faire pour avoir le résultat exact, virgules comprise?
Le code utilisé pour l'addition des textbox est le suivant:
[code] TextBox49.Value = Val(TextBox41.Value) + Val(TextBox42.Value) + Val(TextBox43.Value) + Val(TextBox44.Value) + Val(TextBox45.Value) + Val(TextBox46.Value) + Val(TextBox47.Value) + Val(TextBox48.Value) /code
D'avance merci pour vos réponses.
Gornarf
Je fais appel à vous car je rencontre un problème avec mon Usf
Explications: Je développe un outils (de calcul) pour le boulot. Plutot que de le créer sur Excel même avec les formules excel qui génèrent des problèmes d'incompatibilité de version je suis passé d'une version excel 100% à une version excel/vb à une version 100%vb mais toujours sous excel.
Par soucis du détails (je débute en Vb) j'ai masquer les feuilles etc et je programmerai le lancement de l'usf au démarrage d'éxcel. Soit!
Mon probleme est le suivant:
J'utilise des Textbox pour entrer des montants:
Elles sont paramétrées pour que le text ne soit pas accepté, avec la virgule ou le point converti en virgule comme séparateur décimal etc, pas de soucis à ce niveau.
Je peux donc rentrer dans montants tels que 125,50 dans mes textbox sans problèmes mais
Une fois que je veux dans ma dernière Textbox le total des Textbox présentes sur la page (j'utilise un multipage) le totam est un nombre entier:
Exemple: Textbox1 =125,50 , autres textbox vides, résultat = 125
Comment faire pour avoir le résultat exact, virgules comprise?
Le code utilisé pour l'addition des textbox est le suivant:
[code] TextBox49.Value = Val(TextBox41.Value) + Val(TextBox42.Value) + Val(TextBox43.Value) + Val(TextBox44.Value) + Val(TextBox45.Value) + Val(TextBox46.Value) + Val(TextBox47.Value) + Val(TextBox48.Value) /code
D'avance merci pour vos réponses.
Gornarf
A voir également:
- Vba textbox value
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
6 réponses
Bon
Après moultes essai, recherches et réflexions il s'avère que j'ai trouvé la solution à mon problème, tout seul comme un grand.
Ce n'est peut être pas la solution la plus court d'un point de vue "encodage" mais elle peut s'appliquer dans mon cas.
Etant donné qu'en utilisant Cdbl lorsqu'un champ est vide ca génère une erreur, j'ai fait en sorte que, lorsqu'un champ est vide (étant donné que je fais des calculs sur bases d'infos encodées) ce champ (txtbox) est égal à zéro.
La méthode qui m'est venue à l'esprit est la suivante:
[/code] Private Sub CommandButton18_Click()
If TextBox41.Value = "" And TextBox42.Value = "" And TextBox43.Value = "" And TextBox44.Value = "" And TextBox45.Value = "" And TextBox46.Value = "" And TextBox47.Value = "" And TextBox48.Value = "" Then
TextBox41.Value = ""
TextBox42.Value = ""
TextBox43.Value = ""
TextBox44.Value = ""
TextBox45.Value = ""
TextBox46.Value = ""
TextBox47.Value = ""
TextBox48.Value = ""
TextBox49.Value = ""
TextBox8.Value = ""
MsgBox "veuillez remplir au moins un champ ou indiquer que ce poste à une valeur totale nulle!", vbOKOnly + vbCritical, "ERREUR"
Exit Sub
End If
If TextBox41 = "" Then
TextBox41 = "0"
End If
If TextBox42 = "" Then
TextBox42 = "0"
End If
If TextBox43 = "" Then
TextBox43 = "0"
End If
If TextBox44 = "" Then
TextBox44 = "0"
End If
If TextBox45 = "" Then
TextBox45 = "0"
End If
If TextBox46 = "" Then
TextBox46 = "0"
End If
If TextBox47 = "" Then
TextBox47 = "0"
End If
If TextBox48 = "" Then
TextBox48 = "0"
End If
TextBox49.Value = CDbl(TextBox41.Value) + CDbl(TextBox42.Value) + CDbl(TextBox43.Value) + CDbl(TextBox44.Value) + CDbl(TextBox45.Value) + CDbl(TextBox46.Value) + CDbl(TextBox47.Value) + CDbl(TextBox48.Value)
TextBox8 = TextBox49.Value
End Sub [/code]
Voila. si quelqu'un connait une manière plus rapide de faire je suis néanmoins preneur, si d'autres sont intéressés par la solution elle est a votre disposition.
Merci à toi Chossette pour avoir essayé tant bien que mal de m'aider ;-)
Après moultes essai, recherches et réflexions il s'avère que j'ai trouvé la solution à mon problème, tout seul comme un grand.
Ce n'est peut être pas la solution la plus court d'un point de vue "encodage" mais elle peut s'appliquer dans mon cas.
Etant donné qu'en utilisant Cdbl lorsqu'un champ est vide ca génère une erreur, j'ai fait en sorte que, lorsqu'un champ est vide (étant donné que je fais des calculs sur bases d'infos encodées) ce champ (txtbox) est égal à zéro.
La méthode qui m'est venue à l'esprit est la suivante:
[/code] Private Sub CommandButton18_Click()
If TextBox41.Value = "" And TextBox42.Value = "" And TextBox43.Value = "" And TextBox44.Value = "" And TextBox45.Value = "" And TextBox46.Value = "" And TextBox47.Value = "" And TextBox48.Value = "" Then
TextBox41.Value = ""
TextBox42.Value = ""
TextBox43.Value = ""
TextBox44.Value = ""
TextBox45.Value = ""
TextBox46.Value = ""
TextBox47.Value = ""
TextBox48.Value = ""
TextBox49.Value = ""
TextBox8.Value = ""
MsgBox "veuillez remplir au moins un champ ou indiquer que ce poste à une valeur totale nulle!", vbOKOnly + vbCritical, "ERREUR"
Exit Sub
End If
If TextBox41 = "" Then
TextBox41 = "0"
End If
If TextBox42 = "" Then
TextBox42 = "0"
End If
If TextBox43 = "" Then
TextBox43 = "0"
End If
If TextBox44 = "" Then
TextBox44 = "0"
End If
If TextBox45 = "" Then
TextBox45 = "0"
End If
If TextBox46 = "" Then
TextBox46 = "0"
End If
If TextBox47 = "" Then
TextBox47 = "0"
End If
If TextBox48 = "" Then
TextBox48 = "0"
End If
TextBox49.Value = CDbl(TextBox41.Value) + CDbl(TextBox42.Value) + CDbl(TextBox43.Value) + CDbl(TextBox44.Value) + CDbl(TextBox45.Value) + CDbl(TextBox46.Value) + CDbl(TextBox47.Value) + CDbl(TextBox48.Value)
TextBox8 = TextBox49.Value
End Sub [/code]
Voila. si quelqu'un connait une manière plus rapide de faire je suis néanmoins preneur, si d'autres sont intéressés par la solution elle est a votre disposition.
Merci à toi Chossette pour avoir essayé tant bien que mal de m'aider ;-)
Bonjour,
je n'ai jamais trop utilisé les additions de TextBox, mais n'est-ce pas le Val(TextBox.Value) qui te transforme ta valeur en entier ? Pourquoi ne pas mettre directement TextBox41.Value + ... + TextBox48.Value ?
Cordialement.
je n'ai jamais trop utilisé les additions de TextBox, mais n'est-ce pas le Val(TextBox.Value) qui te transforme ta valeur en entier ? Pourquoi ne pas mettre directement TextBox41.Value + ... + TextBox48.Value ?
Cordialement.
Coucou Chossette,
je pense avoir essayé, lorsque je mets ca la réponse dans la textbox49 est TextBox41.Value + ... + TextBox48.Value... mais je retest et te dis quoi.
Ce qui est illogique concernant le résultat de cette opération c'est que normalement pour avoir une réponse alphabétique il aurait fallu mettre des " " en balise...
je pense avoir essayé, lorsque je mets ca la réponse dans la textbox49 est TextBox41.Value + ... + TextBox48.Value... mais je retest et te dis quoi.
Ce qui est illogique concernant le résultat de cette opération c'est que normalement pour avoir une réponse alphabétique il aurait fallu mettre des " " en balise...
Voila, je me souviens du pourquoi je ne faisais pas de la sorte:
si je dis:
Textbox49.value = textbox41.value +.....+ textbox48.value
En admettant que je mette 50 dans la TB41 et 50, 50 dans la TB42, le résultat du calcul sera : 5050,50
Il met les données bout à bout plutot que de les additionner
J'ai également essayé avec cdBl(textbox41)+cdbl....+cdbl(Textbox48) mais ca me générait une erreur 13 impossible a débboger
si je dis:
Textbox49.value = textbox41.value +.....+ textbox48.value
En admettant que je mette 50 dans la TB41 et 50, 50 dans la TB42, le résultat du calcul sera : 5050,50
Il met les données bout à bout plutot que de les additionner
J'ai également essayé avec cdBl(textbox41)+cdbl....+cdbl(Textbox48) mais ca me générait une erreur 13 impossible a débboger
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question