Partager via

Formule pour récupérer informations depuis un catalogue et une colonne variable

Anonyme
2025-03-06T19:29:39+00:00

Bonjour,

Je suis entrain de créer un tableau de commandes (orders) et j'aimerais qu'il récupère automatiquement les prix depuis le catalogue en fonction de la référence (id ordered) et du client.

Je pensais faire une RECHERCHEX mais je ne vois pas comment récupérer la bonne colonne en fonction du client

Dans le catalogue il y environ 1000 lignes et les colonnes "prix client A", "prix client B" et "id" sont espacés par plusieurs clients

Dans mon exemple il n'y a que 2 clients mais en réalité il y a plutôt une dizaine.

Est-ce que quelqu'un verrais un moyenne comment faire ceci ?

j'aimerai également que la formule s'adapte si on ajouté un client supplémentaire sans devoir modifier la formule

La formule sera ensuite répliqué sur environ 1000 commandes pour les prix, et le nom, du coup j'aimerais qu'il soit la plus optimisé que possible

Microsoft 365 et Office | Excel | Pour les entreprises | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

7 réponses

  1. Hecatonchire 53,700 Points de réputation Modérateur bénévole
    2025-03-06T23:31:53+00:00

    Pas sur d'avoir tout compris

    S'il n'y a pas trop de client la partie rouge pourrait être remplacée par une recherche du n° de colonne dans un tableau annexe

    =JOINDRE.TEXTE(" ; ";

               VRAI; 
    
               CHOISIRCOLS(FILTRE(A$1:AH$6;A$1:A$6=F12;"Pas trouvé"); 
    
                           **INDEX({8;19;34};EQUIV(G12;{"A";"B";"C"}))** ))
    

    JOINDRE.TEXTE est la pour ne générer qu'une ligne de réponse si plusieurs correspondances

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2025-03-06T22:56:45+00:00

    les colonnes n'ont pas de périodicité régulier malheureusement

    je me suis également rendu compte que j'avais de produits (name) mutualisés donc je me retrouve avec 2 lignes avec la même name ... mais du coup je vais donc prendre le max des 2 ligne

    je me retrouve donc avec ceci (extrait du fichier réel):

    =MAX(FILTRE(FILTRE(FILTRE(CATALOGUE!AI$2:CI$639;ESTNUM(CHERCHE("Chiffrage";CATALOGUE!AI$2:CI$2)));ESTNUM(TROUVE(CATALOGUE!AI2;PRENDRE(FILTRE(CATALOGUE!AI$2:CI$639;ESTNUM(CHERCHE("Chiffrage";CATALOGUE!AI$2:CI$2)));1))));CATALOGUE!C2:C639=DASHBOARD!A5))

    je sais que je peut l'optimiser avec LET mais il dois bien avoir un moyen plus simple de le faire plutôt que 3 filtres

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,700 Points de réputation Modérateur bénévole
    2025-03-06T22:08:30+00:00

    >Si les colonnes Price ont périodicité régulière (toujours le même nombre de colonnes intercalaires), tu peux jouer la dessus ainsi que l'utilisation de la syntaxe multizone d'Index (forme référentielle INDEX(référence; no_lig; [no_col]; [no_zone]) )

    >Plutôt que d'extraire la fin de "price client A" pour faire la recherche de "client A", il serait plus simple de chercher "Price" & client A.

    =INDEX(C$4:D$7; EQUIV(I4;A$4:A$7;0); EQUIV(**"Price " & K4;**C$3:D$3;0) )

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2025-03-06T21:47:32+00:00

    bonjour,

    merci de ton retour

    j'avais aussi trouvé ceci :

    =RECHERCHEX(I4;$A$4:$A$7;INDEX($C$4:$D$7;;EQUIVX(1;--ESTNUM(CHERCHE(K4;$C$3:$D$3))));"--")

    et

    =RECHERCHEX(I4;$A$4:$A$7;INDEX(ASSEMB.H($C$4:$C$7;$D$4:$D$7);;EQUIVX(1;--ESTNUM(CHERCHE(K4;$C$3:$D$3))));"--")

    mais dans tout les cas j'ai peur que la taille de la plage ralenti vachement l'excel

    voici à quoi ressemble l'excel catalogue plus en réalité, pour laquelle il faut compter environ 1000 lignes

    ![](https://learn-attachment.microsoft.com/api/attachments/e7d797fc-ab1d-4184-9306-8164fc4ab195?platform=QnA

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Hecatonchire 53,700 Points de réputation Modérateur bénévole
    2025-03-06T21:36:05+00:00

    Bonjour,

    Le plus simple est d'utiliser INDEX/EQUIV

    =index(C$4:D$7; equiv(I4;A$4:A$7;0) ; equiv(K4;droite(C$3:D$3);0) )

    Formule non testée

    (erratum I4 remplace H4)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire