Générer liste ingrédients
Bonjour
J'ai un fichier dans lequel je dois générer une liste d'ingrédients. Voici une mise en forme exemple : "poisson (38%), aubergine (10%), huile d'olive (8%), ...".
J'ai un fichier où j'ai des modules de classe pour gérer les multiples lignes.
J'essaie de générer le code, mais je n'arrive à avoir que cette mise en forme comme résultat : "poisson (38%), poisson (38%),poisson (38%),poisson (38%),poisson (38%),...". car dès que je modifier un élément, ce n'est que ce dernier élément qui est retenu.
J'ai essayé un paquet de manip, mais je n'arrive pas au résultat. Et le must serait d'avoir les éléments qui apparaient du plus grand pourcentage au pourcentage le plus petit (un tri continu en quelque sorte).
Voici le morceau de code simplifié de mon fichier - c'est la dernière partie du code qui est concernée par l'affichage du résultat TextBox_liste_ingrédient :
' CALCUL DU COUT TOTAL
Private Sub Textbox_poids_Change()
Dim ligne_produit As Long
Dim txt_ingrédient As Object
Dim valeur As Single
'++++++++++ Récupération des contrôles de la ligne +++++++++++
For Each ctrl In Me.Controls
If ctrl.Tag = TextBox_poids.Tag Then 'même ligne
If TypeOf ctrl Is MSForms.TextBox Then
If ctrl.ControlTipText = ingrédient Then Set txt_ingrédient = ctrl
If ctrl.ControlTipText = euro Then Set txt_euro = ctrl
End If
Next ctrl
With tb_produit
ligne_produit = .ListColumns("Reference produit").Range.Find(txt_ingrédient.Value).Row - .HeaderRowRange.Row
End With
'Calcul Totaux
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox Then
If ctrl.ControlTipText = poids Then
If ctrl.Value = Empty Then valeur = Val(ctrl.Value) Else valeur = CDec(ctrl.Value)
somme_poids = CDec(somme_poids) + valeur
End If
End If
Next ctrl
TextBox_total_poids.Value = Format(somme_poids, "###0.00")
TextBox_liste_ingrédient.Value = Empty
If TextBox_total_poids.Value <> 0 Then
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.TextBox And ctrl.ControlTipText = ingrédient Then
If ctrl.Value <> Empty Then
pourcentage_ingrédient = CDec(TextBox_poids.Value) / CDec(TextBox_total_poids)
nom_ingrédient_court = tb_produit.ListColumns("nom court").DataBodyRange.Rows(ligne_produit)
TextBox_liste_ingrédient.Value = TextBox_liste_ingrédient.Value & nom_ingrédient_court & " (" & Format(pourcentage_ingrédient, "00%") & "), "
End If
End If
Next ctrl
End If
End SubTextBox_poids fait référence au poids de la ligne de l'ingrédient
nom court fait référence au nom du produit simplifié dans une autre colonne du tableau produit
Merci d'avance