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 Sub

TextBox_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

Rechercher des sujets similaires à "generer liste ingredients"