Additionner les valeurs d'une listbox dans un textbox

Bonjour le forum,

Bonjour AFEH,

Il y a quelque temps, je me suis permis d'utiliser et d'adapter le fichier "commande-de-vin.xlsm" pour un ami.

Le fichier fonctionne très bien cependant cet ami m'a demandé une adjonction: il voudrait avoir le résumé des ventes par client et par produit.

Je me suis attelé à construire un userform avec 2 combobox, 2 listbox et un textbox.

J'ai réussi à afficher les valeurs dans les 2 listbox mais je n'arrive pas à afficher le resultat de l'addition de la listbox2 dans le textbox.

Il faut dire que les tous les chiffres de quantité sont au format texte. Voilà ça fait trois semaines que je consulte tous les forums mais je n'ai pas trouvé un bout de code qui fonctionne.

Je remercie toutes les personnes qui se pencheraient sur mon cas et je vous salue cordialement.

Papy Mario

Bonjour

Vu les difficultés pour accéder a l'userform de ton fichier

Tu peux t'inspirer de cela

Bonjour Joco7915,

Merci pour ton intervention. Quelles sont les difficultés pour accéder à l'userform?

J'ai regardé ton fichier mais ce n'est pas ma demande. J'aimerais calculer le total d'une listbox et l'afficher sur un textbox exemple: 0.200+1.000+2.000+0.150=3.350

Cordialement

Papy Mario

Bonjour aristeo et le forum
Bizarre ton adaptation d'un fichier que j'avais mis sur ce forum.
Tout d'abord les quantités; pourquoi en format texte? alors que le format nombre (0,00) est plus facile à exploiter.
Ensuite les dates; pourquoi ce format avec des points? alors que les dates se mettent en général avec le format dd/mm/yyyy
Enfin que désires-tu exactement dans ton TextBox du 2ème formulaire?

Je rejoins Joco7915 sur la position des formulaires dans la feuille (il est plus + facile de les centrer)
Voici une 1ère correction.

41aristeo.xlsm (58.30 Ko)

Bonjour AFEH et merci de m'avoir répondu.

En fait j'ai mis les quantités en format texte parce-que je voulais avoir trois décimales et que en format nombre je ne suis jamais arrivé (c'est très dur de débuter en VBA à mon age). En ce qui concerne les dates, j'ai toujours utilisé les points mais ça me convient avec le slash. Alors dans le deuxième formulaire j'aimerais visualiser le produit et la quantité (en format 0.000) du combobox1 dans la listbox1. Visualiser la quantité (en format 0.000) du combobox2 dans la listbox2 puis calculer le total de la listbox2 et l'afficher dans le textbox1. J'espère avoir été assez compréhensible.

Encore merci et bonnes salutations

Papy Mario

Bonsoir aristeo
Voici une proposition avec beaucoup de changement dans les macros
Pour le formulaire 2, j'ai remplacé la ComboBox2 par une TextBox2. Cette TextBox2 s'alimente en cliquant sur une des lignes de la ListBox1. La ListBox2 s'alimente à son tour, ainsi que la quantité de commande pour cette variété.
Je n'ai peut-être pas tout compris, dans ce cas il faudra adapter.
Cdt
Papy Henri qui n'est plus très jeune non plus

15aristeo2.xlsm (50.55 Ko)

Rectification: Prendre le fichier 3

23aristeo3.xlsm (38.97 Ko)

Bonjour Henri et merci pour l'effort que tu emploies afin de régler mon problème mais il-y-a toujours des soucis.

- Tout d'abord l'userform de commande (USF_Commande) ne fonctionne pas, il-y-a une erreur sur le Total Client (LabelTotalClient.Caption = Format(.Item(n, 6), "0.00")) lorsque on utilise la quantité inférieure au Kg (ex.0,35).

- J'avais grisé le bouton Valider pour éviter une erreur si toutes le cases ne sont pas remplies. Après le click sur ce bouton les données d'achat son effacées.

- La Qté commandée (ComboBox4) doit être définie avec TROIS décimales; cette quantité définit des Kg, alors que 0.35 ne définit pas 350 Grammes.

- Les dates m'ont été données par mon ami(marchés régionaux), elles sont fixes et ne doivent pas être le dates du jour. Elles seront changées manuellement au fur et à mesure das la feuille BASE.

- En ce qui concerne l'userform résumé (USF_Resume) ce n'est pas tout-à-fait ça. Je dois afficher le résumé de commande par Client et le résumé de commande par Produit, c'est à dire si des poires sont achetées par deux clients différents on affichera 2 quantités de poires en faisant le choix dans le combobox2 (qui manque actuellement).

- La listbox1 doit afficher les quantités avec TROIS décimales.

- La listbox2 doit afficher les quantités avec TROIS décimales.

- Le textbox1 doit afficher la somme des quantités de la listbox2 et non pas le nombre de positions (ex. 0.350+1.000+0.500=1.850) avec TROIS décimales et NON 3 positions.

Je poste à nouveau le fichier dont l'userform Commande (USF_Commande) est fonctionnel et conforme à mon attente.

Par contre dans le résumé de commandes (USF_Resume) il suffit de rajouter la SOMME DES QUANTITES AVEC TROIS DECIMALES dans le TextBox1 ou dans un LABEL.

Bonjour aristeo
Voici le formulaire 2 qui, pour moi, fonctionne. Tu me confirmes.
je revois pour les autres soucis.
Cdt
Papy Henri

24aristeo3bis.xlsm (50.67 Ko)

Bonjour AFEH

c'est bien, ça avance.

On va déjà voir le problème de USF_Resume: il faut impérativement remplacer le TextBox2 par un COMBOBOX2 afin de pouvoir choisir un produit. Exemple: si Régine, Christine, Dany, etc... achètent des poires, je dois pouvoir choisir POIRES dans le ComboBox2 pour connaître le poids des POIRES VENDUES sans l'utilisation de combobox1.

On verra les autres soucis de USF_Commande par la suite.

Cordialement et encore merci.

Papy Mario

Quel dimanche, il n'y a que les retraités qui travaillent
Un essai avec la formulaire2 et quelques corrections dans le formulaire1
A te relire

19aristeo3ter.xlsm (50.04 Ko)

Le travail c'est la santé !!!! Que peut-on faire avec notre météo maussade (34 mm de pluie cette nuit)?

Mais le deuxième formulaire est parfait

Passons au premier et j'aurais appris quelque chose.

Encore quelques petites choses sur le 1er formulaire: une erreur d'incompatibilité de type sur CommandBoutton1 ligne .Item(n, 4) = CDbl(Me.ComboBox4.Value)

La première date ne s'affiche pas.

A bientôt

Mario

Et j'ai oublié une chose : griser le bouton VALIDER si toutes les cases ne sont pas remplies

Merci

Bonsoir Mario

Et j'ai oublié une chose : griser le bouton VALIDER si toutes les cases ne sont pas remplies

1.Je ne grise pas le bouton VALIDER car j'ai mis un contrôle sur chaque CB avec un message d'alerte si " ".
2. La 1ère date s'affiche maintenant.
3. Je n'ai pas d'anomalie pour le CB4. Tout fonctionne correctement, mais j'ai vu que tu étais en Suisse et j'ai déjà eu des soucis avec un contributeur suisse pour écrire des TB ou CB en format nombre.
A te relire
Papy Henri

20aristeo4.xlsm (48.01 Ko)

Bonsoir Henri,

J'ai toujours une erreur d'incompatibilité de type sur CommandBoutton1 ligne ".Item(n, 4) = CDbl(Replace(Me.ComboBox4.Value, ".", ","))"

J'ai essayé de remplacer la virgule décimale par un point mais ça ne marche pas.

Je ne sais pas quoi faire !!! Je vais réfléchir demain à tête reposée.

Merci en attendant et bonne soirée.

Mario

Bonjour Henri,

On a remarqué que lorsque on place un nombre entier, sans point ou virgule, dans la colonne Quantité de la feuille Base, il n'y a pas d'erreur.

En Suisse on utilise le point(.) pour séparer les décimales.

Si on utilise "KeyAscii = 44 Then KeyAscii = 46" c'est peut-être une solution; mais je ne sais pas comment insérer ce code.

A+

Papy Mario

Bonjour Mario
Teste cette version 4bis. J'ai mis une formule en colonne E(Prix U) mais ce n'est pas ça qui pose problème, puis j'ai remplacé la ligne de code en erreur par celle-ci et mis la suivante avec une apostrophe puisqu'elle ne sert plus (on peut la supprimer).

.Item(n, 4) = Val(Me.ComboBox4)
'.Item(n, 5) = CDbl(Me.TextBox2.Value)

A te relire
Papy Henri

16aristeo4bis.xlsm (48.27 Ko)

Bonjour Henri,

Il n'y a plus d'erreur mais il n'y a plus de calcul non plus. La quantité et le prix total de la feuille commande restent a 0.000. Par contre le nombre entier s'affiche et calcule le prix total.

C'est un casse-tête !

A+

Papy Mario

Noms ClientsProduitsArticlesQtéPrix UPrix TotalDateCompléments
ALEXANDRAFruitsPommes2.0003.006.0008/09/2023
ADRIENLégumesAubergines2.0003.106.2008/09/2023
ADRIENErbesMenthe0.5000.550.2808/09/2023Essai1
ALEXANDRALégumesAubergines2.0003.106.2008/09/2023
ANNEFruitsPoires1.0003.003.0008/09/2023
ANDRÉFruitsPommes0.0003.000.0008/09/2023
ANDRÉLégumesTomates0.0005.500.0008/09/2023
ANDRÉFruitsPommes8000.0003.0024000.0008/09/2023
ALEXANDRAFruitsPommes0.0003.000.0008/09/2023
ADRIENFruitsPommes8000.0003.0024000.0008/09/2023
ANDRÉFruitsPoires1.0003.003.0008/09/2023
ARLÈNEFruitsPoires0.0003.000.0008/09/2023
ARLÈNELégumesPoivrons1.0001.201.2008/09/2023

Bonjour,

AEFH m'a demandé de jeter un oeil sur votre demande sachant qu'il semble que votre sujet est similaire à un autre sur lequel nous avons travaillé ensemble il y a quelques temps.

L'USF command doit être modifiée comme suit :

1. Supprimez la macro Private Sub TextBox2_Change()
2. Ajoutez ce code

Private Sub ComboBox4_Change()
If ComboBox4.Value = vbNullString Then Exit Sub
LabelTotalClient = Format(CDbl(ComboBox4.Value * TextBox2.Value), "0.00")
End Sub

Faites déjà un test

Edit : remplacez aussi votre code Combobox3_change par celui-ci

Private Sub ComboBox3_Change()
Dim Ligne As Integer
If ComboBox3 = vbNullString Then
   TextBox2 = vbNullString
   LabelTotalClient = vbNullString
   Exit Sub
End If
With Sheets("Base").ListObjects("T_Prod")
    Ligne = WorksheetFunction.Match(ComboBox3.Value, .ListColumns("Articles").DataBodyRange, 0)
    Me.TextBox2 = Format(.DataBodyRange.Item(Ligne, 3), "0.00")
    Call ComboBox4_Change
End With
End Sub

Bonjour Mario et Salut @Dan
pour Dan: Tout d'abord merci pour ton intervention .

Mais le LabelTotalClient correspond à la somme globale des commandes faites par un client (formule en N1) et non pas pour la commande en cours, du moins si j'ai bien compris.

Pour Mario: Une autre alternative: Autre solution avec cette version 5. La colonne D (Qté ) est définie en Grammes. La colonne E (prix total) est divisé du coup par 1000 (formule rectifiée). Le CB4 est alimenté par liste du T_Qte de la base (en format nombre sans virgule, donc en grammes également).
Bien entendu, je laisse le soin @Dan de trouver une solution pour l'erreur sur le CB4.

A tester
Papy Henri

36aristeo5.xlsm (59.92 Ko)

Salut AFEH,

Mais le LabelTotalClient correspond à la somme globale des commandes faites par un client (formule en N1) et non pas pour la commande en cours, du moins si j'ai bien compris.

Je n'avais pas vu cette formule en N1
Comme précisé, ce qu'il faut comprendre c'est si le total dans l'USF est relatif à un client ou à un article spécifique du client.
Si je prends le nom du label Total, il semblerait que ce soit le total de tous les articles commandé par le client.
La mention du total pourrait se faire à l'ouverture de l'USF sur le choix du client combobox1, puis ensuite mise à jour après avoir cliqué sur Valider.
Du coup on évite les formules en M1 et N1

A voir si cela convient...

Rechercher des sujets similaires à "additionner valeurs listbox textbox"