Microsoft 365 Rechercher un texte lorsque la réponse est dans une cellule avec énumération. Voir fichier

annieginette

XLDnaute Nouveau
Bonjour à vous les experts.

Dans le tableau joint, j'ai une liste de contrats et dans une colonne j'ai les villes qui se rattache à ce contrat, or, quand le contrat comprend plusieurs villes, elles sont énumérées dans la même cellule et elles sont séparées par des virgules.

Or, j'aimerais avoir une fourmule, comme RECHERCHEV mais qu'il me sorte le no. de contrat de cette ville, même si elle n'est pas la 1ere de l'énumération.

Je vous joint un fichier, ça va être plus facile de comprendre.
Merci encore une fois à l'avance, car je sais que vous y porterez attention comme toujours.

1708172417397.png



1708172485197.png
 

Pièces jointes

  • RECHERCHE DANS ÉNUMÉRATION.xlsx
    12.5 KB · Affichages: 7
Solution
Re,
PS je n'ai pas peur des codes VBA, j'en utilise souvent, alors si la solution doit passer par là, pas de soucis.
Alors profitons en !
Just for the fun, un essai en PJ avec deux fonctions perso :
En G2 : =ListeContrat(F3)
En B13 : =contrat(Tableau13[[#Cette ligne];[VILLE]];Tableau13[[#En-têtes];[DÉNEIGEMENT]])

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
PS je n'ai pas peur des codes VBA, j'en utilise souvent, alors si la solution doit passer par là, pas de soucis.
Alors profitons en !
Just for the fun, un essai en PJ avec deux fonctions perso :
En G2 : =ListeContrat(F3)
En B13 : =contrat(Tableau13[[#Cette ligne];[VILLE]];Tableau13[[#En-têtes];[DÉNEIGEMENT]])
 

Pièces jointes

  • RECHERCHE DANS ÉNUMÉRATION.xlsm
    18.3 KB · Affichages: 4

annieginette

XLDnaute Nouveau
Re,

Alors profitons en !
Just for the fun, un essai en PJ avec deux fonctions perso :
En G2 : =ListeContrat(F3)
En B13 : =contrat(Tableau13[[#Cette ligne];[VILLE]];Tableau13[[#En-têtes];[DÉNEIGEMENT]])
Yes c'est génial, excactement ce que je veux... par contre tu comprends que ce tableau exemple n'est pas le vrai, si je veux reproduire cette solution dans mon vrai tableau, comment je fais pour créer la fonction ListeContrat ?
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Bonjour Sylvanu
Une autre solution, n'utilisant pas VBA, mais Power Query, en natif dans ta version d'Excel
Le code :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ModType = Table.TransformColumnTypes(Source,{{"CONTRATS", type text}}),
    Fract = Table.ExpandListColumn(Table.TransformColumns(ModType, {{"VILLE", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "VILLE"),
    GroupBy = Table.Group(Fract, {"VILLE"}, {{"RESP.", each Text.Combine([#"RESP."],",")}, {"Tbl", each _, type table [#"RESP."=text, CATÉGORIE=text, CONTRATS=nullable text, VILLE=nullable text]}}),
    Expand = Table.ExpandTableColumn(GroupBy, "Tbl", {"CATÉGORIE", "CONTRATS"}, {"CATÉGORIE", "CONTRATS"}),
    Pivot = Table.Pivot(Expand, List.Distinct(Expand[CATÉGORIE]), "CATÉGORIE", "CONTRATS")
in
    Pivot
Dans le fichier joint, un clic droit dans le Tableau final, "Actualiser", ou en cliquant sur le bouton "Actualiser tout" du ruban "Données" pour mettre à jour
Bonne fin d'apm, et bon W-E
Edit, code et fichier modifiés, petite erreur de ma part....
 

Pièces jointes

  • PQ_RECHERCHE DANS ÉNUMÉRATION.xlsx
    20.4 KB · Affichages: 1
Dernière édition:

annieginette

XLDnaute Nouveau
Yes c'est génial, excactement ce que je veux... par contre tu comprends que ce tableau exemple n'est pas le vrai, si je veux reproduire cette solution dans mon vrai tableau, comment je fais pour créer la fonction ListeContrat ?
Merci j'ai réussi (tant bien que mal) à adapter la formule dans mon vrai tableau, ça fonctionne. c'est génial. Mais petite question, comment faire pour actualiser, rafraichir automatiquement? je m'explique, je dois cliquer au bout de la formule et faire 'enter' pour que le no. de la commande apparaisse, j'ai plus de 575 lignes et 50 colonnes alors pas évident. Merci encore
 

annieginette

XLDnaute Nouveau
Bonjour,
Bonjour Sylvanu
Une autre solution, n'utilisant pas VBA, mais Power Query, en natif dans ta version d'Excel
Le code :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ModType = Table.TransformColumnTypes(Source,{{"CONTRATS", type text}}),
    Fract = Table.ExpandListColumn(Table.TransformColumns(ModType, {{"VILLE", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "VILLE"),
    GroupBy = Table.Group(Fract, {"VILLE"}, {{"RESP.", each Text.Combine([#"RESP."],",")}, {"Tbl", each _, type table [#"RESP."=text, CATÉGORIE=text, CONTRATS=nullable text, VILLE=nullable text]}}),
    Expand = Table.ExpandTableColumn(GroupBy, "Tbl", {"CATÉGORIE", "CONTRATS"}, {"CATÉGORIE", "CONTRATS"}),
    Pivot = Table.Pivot(Expand, List.Distinct(Expand[CATÉGORIE]), "CATÉGORIE", "CONTRATS")
in
    Pivot
Dans le fichier joint, un clic droit dans le Tableau final, "Actualiser", ou en cliquant sur le bouton "Actualiser tout" du ruban "Données" pour mettre à jour
Bonne fin d'apm, et bon W-E
Edit, code et fichier modifiés, petite erreur de ma part....
C'est super ce que peut offrir les tableaux PQ, faudrait vraiment que je m'y mette ! Dans ton tableau, mon enjeu est quand il y 2 contrats pour la même ville, ça me créé 2 lignes, exemple J'ai ajouter FRANCIS contrat 333 de ménage pour la ville CAP, dans le tableau on voit ceci
VILLE RESP. DÉNEIGEMENT MÉNAGE
CAP FRANCIS 123
CAP FRANCIS 333

Or, j'aimerais qu'une ligne
CAP FRANCIS 123 333

Est-ce possible?
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 504
Membres
112 765
dernier inscrit
SIDIANW