Une question pour John Walkenbach (au moins) :

  • Initiateur de la discussion Initiateur de la discussion VBAMan
  • 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

VBAMan

Guest
Une question pour John Walkenbach (au moins) :
Comment faire la somme de nombres (avec 2 décimales, séparateurs de milliers) dans un tableau croisé dynamique si les valeurs de bases sont issues d'un userForm ?

Rq 1 : Je peux être + clair sur la formulation de mon problème :

J'ai un UserForm dans lequel il y a un TextBox. Lors de son initialisation j'ai écrit :

Private Sub UserForm_Initialize()
Dim x As Integer
x = 1000
UserForm2.TextBox2.Value = FormatNumber(x, 2, vbTrue)
End Sub

C'est à dire que l'on affiche "1 000,00" dans le TextBox lors du chargement


Ensuite, l'utilisateur clique sur OK pour valider sa saisie:

Private Sub BoutonValiderSaisie_Click()
....
Cells(Ligne, Colonne).Value = TextBox2.Value
... (la colonne restant fixe)
End Sub

Voila pour la saisie des nombres: j'obtient un beau tableau, no pb :

Libelle Debit ....
Carottes 1 000,00
Patates 52,23
Choux 2 565,59
Hiboux 232,11
... ...

Tout se conplique quand je veux faire un Tableau Croisé Dynamique avec ces valeurs.

Je place le champ Débit dans les données du TCD: c'est un "champ pivot table"
---> Il m'affiche correctement Nb Debit mais moi je veux la somme des débits pour un même libellé

Je fais donc : Clic Bouton gauche > Champ et je choisit Synthetisé par "Somme" à la place de "NbVal"

Et là...des "0" partout !


Rq 2 : Cette question a déja été posée le 22/01 sans succès :-/
 
C'est bien normal pour EXCEL tes valeurs ne sont pas numériques mais bel et bien du texte (la fonction format renvoit un texte)

plutot que
Cells(Ligne, Colonne).Value = TextBox2.Value

écrit
Cells(Ligne, Colonne).Value = CDbl(TextBox2.Value)

Quitte à placer un format derrière
Cells(Ligne, Colonne).Value.NumberFormat = "# ##0.00"
ça devrait lui allé

@+
Valérie
 
Bonsoir VBAMan et Valérie

Merci de cette explication Valérie... çà m'économisera ce genre de déclaration ... (je ne connaissais pas CCDbl ni les autres d'ailleurs CBool,CByte,CCur,CDate,CDbl,CDec,CInt,CLng,CSng,CStr,CVar....)

Car jusqu'à présent je passais par une déclaration de variable rien que pour çà...

Exemple :

Dim Amount As Double
If Not IsNumeric(TextBox1) then
... msgbox "erreur" Exit Sub etc
End If
Amount = TextBox1
Cells(Ligne, Colonne).Value = Format(Amount, "# ##0.00")

Bon il est certain que le Test reste nécessaire, mais on économise une variable.

Merci Valérie 🙂 on découvre tous les jours un truc !!!
Bon Week End à vous deux et à ceux qui liront

@+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

Retour