IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Recherche sur plusieurs colonnes [XL-365]


Sujet :

Excel

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 270
    Points : 239
    Points
    239
    Par défaut Recherche sur plusieurs colonnes
    Bonjour à toutes et tous,

    J'ai un tableau "Tab_Recettes" dans lequel colonne A (Nom) on trouve la liste des recettes et colonnes B (Ingré1) & C (Qté In1) à colonnes T (Ingré10) & U (Qté In10) dans lesquelles on trouve les différents ingrédients et leur quantité.
    J'ai un tableau "Tab_Ingrédients" dans lequel colonne A (Nom) on trouve la liste des ingrédients présents dans le frigo et les placards, colonne B (Qté) & C (unité).

    Ce que je cherche à faire c'est de trouver à partir d'un ingrédient (ici le beurre) quelles sont les recettes qui en ont besoin.
    J'ai essayé avec un TCD sans succès.
    J'ai essayé avec PowerQuery mais je tourne en rond.

    Dans la cellule D3 du tableau "Tab_Ingrédients", avec cette formule, la recherche aboutie mais elle est figée sur une seule colonne (ici Ingré4).
    INDEX(Tab_Recettes[Nom];EQUIVX($A3;Tab_Recettes[Ingré4];0;1))

    De plus dans cette colonne [Ingré4 l'ingrédient recherché apparait 2 fois.
    INDEX(Tab_Recettes[Nom];EQUIVX($A3;Tab_Recettes[Ingré4];0;-1))

    Et l'ingrédient recherché est aussi en colonne Ingré6
    Nom : Recherche recettes.png
Affichages : 92
Taille : 34,6 Ko

    Comment puis-je faire pour que la recherche se fasse sur l'ensemble des 10 colonnes Ingré1 à Ingré10 ?

    Voici le tableau "Tab_Ingrédients" :
    Nom : Table ingrédients.png
Affichages : 90
Taille : 19,3 Ko

    Peut-être que je suis mal parti quant à l'organisation de mes données.

    Merci pour votre aide et vos conseils.

    Philippe

  2. #2
    Membre expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 513
    Points : 3 099
    Points
    3 099
    Par défaut
    Bonjour

    "Peut-être que je suis mal parti quant à l'organisation de mes données."
    Personnellement, c'est ce que je pense.

    Ce qui est difficile, dans ce cas, est, d'effectivement, de chercher dans plusieurs colonnes. On peut y arriver (pour le challenge ou le plaisir), mais la formule risque d'être assez complexe.

    Cela sera beaucoup plus facile si le tableau "Tab_Recettes" est constitué de seulement 3 colonnes : Recette, Ingrédient, Quantité.
    Cela impliquera de mettre le même nom de recette plusieurs fois (en fait une fois par ingrédient), mais il sera ensuite facile de faire des recherches (par INDEX/EQUIV, RECHERCHEX ou par le filtre).

    On pourra aussi facilement réaliser des TCD si besoin par ingrédient ou par recette.

    En espéra que cela aide

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 526
    Points : 16 463
    Points
    16 463
    Par défaut
    Bonjour

    EDIT : Je partage l'avis de Pierre que je salue, mais si on garde cette structure

    Je te conseille de lister tous les ingrédients possibles dans Tab_Ingrédients et de mettre 0 ou rien dans Qté quand tu n'en as pas...

    Un TCD ne peut fonctionner avec un tableau à double entrée surtout avec des couples de colonnes

    Il faut décroiser les données de Tab_Recettes, puis le recroiser dans l'autre sens avec PowerQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    let
        Source = Excel.CurrentWorkbook(){[Name="Tab_Recettes"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Nom", type text}, {"Ingré1", type text}, {"Qté In1", Int64.Type}, {"Ingré2", type text}, {"Qté In2", Int64.Type}, {"Ingré3", type text}, {"Qté In3", Int64.Type}, {"Ingré4", type text}, {"Qté In4", Int64.Type}, {"Ingré5", type any}, {"Qté In5", type any}, {"Ingré6", type any}, {"Qté In6", type any}, {"Ingré7", type any}, {"Qté In7", type any}}),
        #"Index ajouté" = Table.AddIndexColumn(#"Type modifié", "Index", 1, 1, Int64.Type),
        #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Index ajouté", {"Index","Nom"}, "Attribut", "Valeur"),
        PStep = Table.SplitColumn(#"Supprimer le tableau croisé dynamique des autres colonnes", "Attribut", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Attribut", "Ing"}),
        #"Type modifié1" = Table.TransformColumnTypes(PStep,{{"Ing", Int64.Type}}),
        #"Lignes triées" = Table.Sort(#"Type modifié1",{{"Ing", Order.Ascending}, {"Index", Order.Ascending}, {"Attribut", Order.Ascending}}),
        #"Colonne dynamique" = Table.Pivot(#"Lignes triées", List.Distinct(#"Lignes triées"[Attribut]), "Attribut", "Valeur"),
        #"Colonnes supprimées" = Table.RemoveColumns(#"Colonne dynamique",{"Index"})
    in
        #"Colonnes supprimées"
    Il faut ensuite mettre les deux tables en relation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let
        Source = Excel.CurrentWorkbook(){[Name="Tab_Ingrédients"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Nom", type text}, {"Qté", Int64.Type}, {"Unité", type text}}),
        #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each [Qté] <> null and [Qté] <> ""),
        #"Requêtes fusionnées" = Table.NestedJoin(#"Lignes filtrées", {"Nom"}, Tab_Recettes, {"Ingré"}, "Tab_Recettes", JoinKind.Inner),
        #"Tab_Recettes développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "Tab_Recettes", {"Nom", "Qté In"}, {"Recette", "Qté Nécessaire"}),
        #"Lignes triées" = Table.Sort(#"Tab_Recettes développé",{{"Nom", Order.Ascending}, {"Recette", Order.Ascending}})
    in
        #"Lignes triées"
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 270
    Points : 239
    Points
    239
    Par défaut
    Bonjour à toutes et tous,

    Merci pour vos réponses.

    Pierre,
    Je m'en doutais que mon organisation n'était pas bonne.
    Je vais donc partir sur ta proposition dans un premier temps, puis je ferai également avec la proposition de Chris (pour ne pas mourir idiot).

    Chris,
    Je ne comprends pas "Il faut décroiser les données de Tab_Recettes".

    Philippe

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 526
    Points : 16 463
    Points
    16 463
    Par défaut
    Bonjour
    Citation Envoyé par Phil333250 Voir le message
    Chris,
    Je ne comprends pas "Il faut décroiser les données de Tab_Recettes".
    Un tableau à double entrée (il faut chercher la ligne et la colonne pour trouver une info) complique l'exploitation.

    Depuis que POwerQuery est là, on peut néanmoins transformer les données sans toucher à la source.

    Au lieu d'avoir n colonnes, on en a une pour les ingrédients : c'est ce qu'on appelle décroiser

    Exemple : la 1ere requête te donne ce type de résultat
    Images attachées Images attachées  
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2018
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 270
    Points : 239
    Points
    239
    Par défaut
    Chris,

    Merci pour cette explication.

    Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. faire une recherche sur plusieurs colonne
    Par B55176 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/12/2016, 09h00
  2. [XL-2010] Premiere ligne vide // recherche sur plusieurs colonnes
    Par boldair67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/03/2016, 17h33
  3. [WD16] Recherche sur plusieurs colonnes d'une table
    Par WDKyle dans le forum WinDev
    Réponses: 2
    Dernier message: 04/06/2012, 14h17
  4. [XL-2003] Modification d'un code pour rechercher sur plusieurs colonnes au lieu d'une
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2011, 15h10
  5. [VBA-E] Recherche sur plusieurs colonnes ?
    Par Kokito dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo