XCL-récap liste produits en une case

Résolu/Fermé
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015 - 24 août 2010 à 15:33
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015 - 10 sept. 2010 à 09:27
Bonjour,

Je dois réaliser un fichier excel avec des allergènes et je n'ai aucune idée de comment m'y prendre pour avoir une case récapitulative qui reprend tous les allergènes présents dans un produit et seulement ceux présents.
C'est assez dur à expliquer mais pour en savoir plus voici mon fichier :

http://www.cijoint.fr/cjlink.php?file=cj201008/cijdfCFP4d.xlsx

J'ai mis des commentaires dans la colonne récap pour vous montrez ce à quoi j'aimerais arriver.
Il y a seulement 3 produits en exemple mais en réalité je vais en avoir plus de 400 à faire.
Et j'ai besoin d'une case récap pour pouvoir l'utiliser dans un autre fichier.

J'espère que quelqu'un pourra m'aider. Merci d'avance.

A voir également:

7 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
24 août 2010 à 16:33
Salut,

dans ta cellule J2 tu mets ceci:
=SI(B2="oui";$B$1&",";"")&""&SI(C2="oui";$C$1&",";"")&""&SI(D2="oui";$D$1&",";"")&""&SI(E2="oui";$E$1&",";"")&""&SI(G2="oui";$G$1&",";"")&""&SI(H2="oui";$H$1&",";"")&""&SI(I2="oui";$I$1;"")

et tu étires ta cellule vers le bas

Bonne journée
1
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
24 août 2010 à 17:53
tu peux même mettre cette formule pour avoir un espace après la virgule

=SI(B2="oui";$B$1&", ";"")&""&SI(C2="oui";$C$1&", ";"")&""&SI(D2="oui";$D$1&", ";"")&""&SI(E2="oui";$E$1&", ";"")&""&SI(G2="oui";$G$1&", ";"")&""&SI(H2="oui";$H$1&", ";"")&""&SI(I2="oui";$I$1;"")
0
Raymond PENTIER Messages postés 58836 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 janvier 2025 17 275
24 août 2010 à 21:13
Tu as juste oublié le lactose en colonne F, mais à part ça c'est simple, efficace, quasi-parfait.
0
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
24 août 2010 à 21:50
oui merci Raymond,

donc la bonne formule est:

=SI(B2="oui";$B$1&", ";"")&""&SI(C2="oui";$C$1&", ";"")&""&SI(D2="oui";$D$1&", ";"")&""&SI(E2="oui";$E$1&", ";"")&""&SI(F2="oui";$F$1&", ";"")&""&SI(G2="oui";$G$1&", ";"")&""&SI(H2="oui";$H$1&", ";"")&""&SI(I2="oui";$I$1;"")
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
24 août 2010 à 23:54
Merci à vous pour votre aide !
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 951
25 août 2010 à 01:14
Salut le forum

Juste pour le plaisir avec CONCATENER

=CONCATENER(SI(B2="oui";$B$1 & ", ";"");SI(C2="oui";$C$1& ", ";"");SI(D2="oui";$D$1& ", ";"");SI(E2="oui";$E$1& ", ";"");SI(F2="oui";$F$1& ", ";"");SI(G2="oui";$G$1& ", ";"");SI(H2="oui";$H$1& ", ";"");SI(I2="oui";$I$1& ", ";""))


Mytå
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
25 août 2010 à 12:03
Juste pour le plaisir... merci bien !!
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
8 sept. 2010 à 10:11
On avait déjà trouvé une réponse pour cette question mais j'aimerais savoir si il était possible d'utiliser par exemple une formule matricielle ou une macro sur VBA car au lieu de seulement 10 colonnes j'en ai maintenant plus d'une centaine et taper les cases une a une dans la formule c'est plutôt dur...
Quelqu'un a-t-il une solution ??
Au pire je taperais la formule mais si il y a une autre solution je suis bien preneuse !
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
8 sept. 2010 à 10:42
Bonjour
désolé j'avais répondu sans voir la date de la demande. Pour ce dernier message,une question:
vous voulez réellement mettre plus de 100 noms dans la même cellule?
sachant aussi qu'il y a des limites au nombre de caractères admis pour un texte dans une cellule

crdlmnt
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
8 sept. 2010 à 16:23
En fait j'aurais presque 100 colonnes mais il n'y aura jamais "oui" dans les 100 colonnes en même temps, c'est maximum 20 colonnes (donc 20 noms) en même temps mais je dois pouvoir avoir le choix entre 100 propositions.
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
8 sept. 2010 à 10:13
AU lieu d'une dizaine de colonnes j'aimerais également faire ça avec plus d'une centaine de colonnes, y a-t-il un moyen (par une formule matricielle ou une macro VBA) de ne pas avoir à taper toute la formule pour les 100 colonnes ?
Merci d'avance à celui qui m'aidera si c'est réalisable !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
8 sept. 2010 à 18:37
Re
Ci joint un modèle qui vaut ce qu'il vaut. Je ne doute pas que d'autres qui s'intéresseront à votre problème puissent faire mieux, mais ce n'est pas facile de concaténer les capacités demandées avec le nombre de colonnes à traiter
le fichier travaille jusqu'à ligne 450 et pour 25 composants?. (Il suffit de tirer les formules vers le bas sur les trois feuilles pour augmenter le nombre de produits admissibles)
(si le nombre de composants est dépassé la ligne du tableau des composant en feuille ENTRÉE passe en orange)
En attendant ce mieux, donc
http://www.cijoint.fr/cjlink.php?file=cj201009/cijZ5NRENr.xlsx
le fichier est en xlsx je pense que vous pourrez le récupérer puisque c'est le votre,le transcrire en 2003 charge sérieusement en Méga
bon courage
crdlmnt
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
8 sept. 2010 à 19:13
petit ajout à message précédent:
erreur 'oubli) décelé en feuille EDIT, il; manque dans la formule de concaténation l'item:
ENTREE!DU2; à placer entre entre DT et DV
à corriger sur ligne 2 et tirez sur la hauteur du champ.
Avec mes excuses... mais regardez de près et tester, il y a peut être d'autres bugs.
Crdlmnt
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
10 sept. 2010 à 09:26
Merci pour votre aide.
0
Raymond PENTIER Messages postés 58836 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 janvier 2025 17 275
9 sept. 2010 à 18:16
Bonjour.

Pour compléter l'information que Vaucluse a donnée le 8 à 10:42, l'Aide d'Excel 2007 stipule dans la rubrique "Spécifications et limites relatives aux feuilles de calcul" qu'une cellule peut contenir jusqu'à 32767 caractères, mais qu'une colonne, quand elle est élargie au maximum, ne peut afficher que 255 caractères.
Cela signifie, pratiquement, que tu peux concaténer autant que tu veux, mais qu'il faudra laisser les colonnes de droite vides afin que l'affichage puisse déborder dedans librement ...
* Dans le fichier proposé par Vaucluse, cela veut dire que plusieurs colonnes à droite de B doivent rester vides, et élargies au maximum.
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
10 sept. 2010 à 09:26
Merci pour ces informations !
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 951
10 sept. 2010 à 01:06
Salut le forum

On peut le faire avec une fonction personnalisée.

Function Essai(Plage As Range)
Dim MonDico As Object
Dim C As Range

Application.Volatile
Set MonDico = CreateObject("Scripting.Dictionary")

For Each C In Plage
  If Cells(C.Row, C.Column) = "Oui" Then
    If Not MonDico.Exists(C.Value) Then
      MonDico(C.Value) = Cells(1, C.Column)
    Else
      MonDico(C.Value) = MonDico(C.Value) & ", " & Cells(1, C.Column)
    End If
  End If
Next C

Essai = MonDico.items

End Function

Mytå
0
Sansandrine Messages postés 87 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 14 décembre 2015
10 sept. 2010 à 09:27
Merci beaucoup pour votre réponse !
0