création fiches recettes et ingrédients

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

czac

XLDnaute Occasionnel
Bonjour,

je suis en train de créer un fichier pour la création de fiches recettes en lien avec des ingrédients. j'ai mis des notes sur le fichier concernant différents points où je bloque. Serait-il possible de m'aider sur ce sujet. ci-joint le fichier

un grand merci

cordialement
 

Pièces jointes

Je viens de ré-essayer avec le code (car j'avais un doute d'avoir bien fait 🙂 et effectivement, à la recette 3 il me dit "cette recette existe déjà" et ensuite ca bug toujours etc...

en tout cas suis déjà super content de votre aide

merci
 
Hello
j'ai fait quelques tests, jusqu'à la fiche 2 ca a fonctionné. La fiche que je nomme recette3 me dit qu'elle existe déjà. ensuite la recette 4 ca à buger.

attention avec Recette2 Fab.26.02 qui existe, tu as beau changer le numéro 26 en 27: Recette2 existe déjà.
c'est à dire que la macro n'autorise pas un nom de ficher recette unique (Recette2) pour deux N° de doc (FAB26 et FAB27)

Code corrigé pour empecher la modification sur la ficher recette d''une cellule située entre H8 etH22
pour les allèrgènes, je regarde
 

Pièces jointes

je viens de voir. Par contre dans la colonne J de la fiche recette, si je glisse la formule cela m'écrit "Valeur" et automatiquement la cellule G42 se met en valeur aussi.
De plus, quand on sélectionne plusieurs ingrédients , ex lait et crème fluide, le lait se note 2X alors que c'est pas utile.
Est-ce qu'il est utile de passer par la colonne J de la fiche recette pour les allergènes et pas récupérer les infos directement dans l'onglet "liste ingrédients"?

merci
 
Correction de la fonction qui évite d'avoir les #Valeurs
si tu as regardé le code précédent, tu aura remarqué que je m'étais justment posé la question de comment enlever ce message---sans succès

VB:
Public Function ConcatSolo(Ingrédient As Range) As String

Application.Volatile 'permet de raffraichir la fonction à chaque modif de la feuille excel
If IsEmpty(Ingrédient) Then 'si pas d'ingrédient sur la ligne on ne met rien dans le résultat
    result = ""
Else
    Set c = Range("Ing").Find(Ingrédient.Value, lookat:=xlWhole) 'on cherche la ligne de l'ingrédient dans la liste Ing: ColonneA
    For Each ele In Range("Allergènes").Rows(c.Row - 5).Cells
    'MsgBox ele
        If ele = "x" Then
            result = result & " " & Sheets("Liste ingrédients").Range("TabData").Cells(2, ele.Column)
        End If
    Next ele
End If
ConcatSolo = result
End Function

Est-ce qu'il est utile de passer par la colonne J de la fiche recette
à toi de me le dire.. vu que tu avais mis la colonne J avec "Allergènes" en titre
et vu que tu as mis une formule en G42, je présume que c'est ici que tu veux la liste complete SANS doublon des allergènes de la recette
j'avais d'ailleurs commencé à écrire une fonction: ConcacTotal..
mon idée était d'aller lire les allergènes de la colonne J pour en faire une liste sans doublon..
 
oui j'avais essayé de trouver une solution par des formules et donc j'avais dû créer cette fameuse colonne J.
Exactement, j'aimerais que les allergènes soit en G42. Après que cela passe par la colonne J ou bien que c'est recherché dans "liste ingrédients" pour moi l'essentiel c'est que cela fonctionne et qu'il n'y ai pas de doublon
 
avec cette fonction
ecrire en G42 =concatTotal()

VB:
Public Function ConcatTotal() As String
Application.Volatile 'permet de raffraichir la fonction à chaque modif de la feuille excel

Set dico = CreateObject("scripting.dictionary") 'création d'un dictionnaire
Set ListeIngrédients = Range("A8:A" & Range("A7").End(xlDown).Row) 'on récupère la liste des ingrédients de la feuille

For Each Ingrédient In ListeIngrédients
    'MsgBox Ingrédient
    Set c = Range("Ing").Find(Ingrédient.Value, lookat:=xlWhole)
    For Each ele In Range("Allergènes").Rows(c.Row - 5).Cells
    'MsgBox ele
        If ele = "x" Then
            allergène = Sheets("Liste ingrédients").Range("TabData").Cells(2, ele.Column)
            If Not dico.exists(allergène) Then dico.Add allergène, 1
        End If
    Next ele
Next Ingrédient

For Each Valeur In dico.keys 'on verse tous les allergènes dans le résultat de la fonction sous forme de chaine
    result = Valeur & "-" & result
Next Valeur
ConcatTotal = result
Set dico = Nothing

End Function
 
ah oui.. j'ai modifié les zones nommées...
voir PJ

avec la fonction ConcatTotal qui utilise un dictionnaire ca fonctionne SAUF que quand tu clic d'une feuille sur l'autre, le calcul garde celui de la feuille précédente..

j'ai donc écrit une autre fonction AvecTab() qui semble mieux se comporter.. mais quand tu ajoutes un ingrédient dans la recette, il faut visiblement revalider la fonction..
 

Pièces jointes

- 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

Discussions similaires

Réponses
4
Affichages
951
Réponses
8
Affichages
578
Réponses
5
Affichages
403
Retour