Changer de Plage de recherche dans la Fonction sans le faire manuellement

0

Bonjour,
Si ma plage de recherche est B:B dans la fonction equiv, comment faire pour qu'en glissant la formule vers le bas, la plage de recherche devient C:C ? et ainsi de suite ...

    Posté le 6 mai, 15:29
    par Axel
    Répondre
    0

    Bonjour Axel,

    ce que tu demandes n'est pas possible.

    c'est en glissant la formule vers la droite, non pas vers le bas,
    que B:B peut devenir C:C, D:D, E:E, et ainsi de suite...

    sans voir ton fichier, sans savoir quelles sont tes données,
    et sans savoir ce que tu veux faire au juste : difficile de
    te répondre autre chose.

    peut-être que ce que tu veux est possible par formule ?
    si oui, la fonction INDIRECT() te servira peut-être ?

    peut-être qu'il faudrait utiliser VBA ?

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    si tu veux joindre ton fichier : mets-le sur le site de partage de
    fichiers cjoint.com, puis mets le lien de téléchargement dans
    ton prochain post du forum.

    il faudra aussi que tu expliques ce que tu veux faire au juste.

    rhodo

    rhodo Posté le 6 mai, 18:40
    par rhodo
    0

    Bonjour Rhodo,
    Merci de ta réponse :) 
    Ci joint voici un petit exemple du fichier à traiter, j'ai essayé de la rendre très visuel pour qu'il soit plus simple à comprendre : https://www.cjoint.com/c/NEhhSqbT5Hc

    Objectif voulu : Associer une marque au montant réalisé.
    Càd, si en Semaine1 j'ai réaliser 3000 avec produit x, dans la catégorie 1.
    J'aimerai en ressortir la Marque associé à ce montant.
    Les colonnes à remplir sont dans la colonne N, P et R. 

    Au plaisir, 
    Axel 

    Posté le 7 mai, 09:56
    0

    Bonjour Axel,

    merci pour avoir transmis ton fichier.  :)

    bonne nouvelle : j'ai très bien compris ce que tu veux,
    j'ai réussi à faire ton exo, et le fichier est prêt.  :)

    rhodo

    rhodo Posté le 8 mai, 08:05
    par rhodo
    0

    @Axel

    j'ai trouvé une meilleure solution ; le nouveau fichier Excel
    est dans mon post du 10 mai à 03:32.

    regarde aussi la solution de Chris, post du 9 mai à 11:39.

    rhodo

    rhodo Posté le 8 mai, 12:54
    par rhodo
    0

    erreur ; ce post peut être supprimé.

    rhodo Posté le 8 mai, 14:06
    par rhodo
    0

    Bonjour Axel et Rhodo

    Voici une façon de faire :

    https://www.cjoint.com/c/NEjjJo20eD0

    Il y a quelques explications en fin de tableaux.  Si plus d'explications nécessaires n'hésites pas à me revenir.

    Bonne continuation

    Chris

    CHRIS1945 Posté le 9 mai, 11:39
    par CHRIS1945
    0

    Bonjour Axel et Chris,

    j'ai amélioré ma solution ; c'est pourquoi j'ai supprimé le lien
    de mon fichier précédent ; voici un nouveau lien :

    https://www.cjoint.com/c/NEkbFHJPxt0

    ------------------------------------------------------------------------------------

    le petit tableau technique est maintenant en S2:V7 ; plus tard,
    tu pourras masquer les colonnes R:V.

    * Ctg est l'abréviation de "Catégorie"
    * L1 = première ligne de la catégorie
    * L2 = dernière ligne de la catégorie
    * Adr est l'abréviation de "Adresse"

    * formule en T3 : =EQUIV(S3;B$4:B$23;0)+3
    tirée vers le bas jusqu'en ligne 7.

    * formule en U3 : =T4-1
    tirée vers le bas jusqu'en ligne 6.

    * en U7 : nombre saisi manuellement : 23
    il n'y a donc pas de formule.

    * formule en V3 : ="C" & T3 & ":C" & U3
    tirée vers le bas jusqu'en ligne 7.

    ------------------------------------------------------------------------------------

    A) exemples de formules pour GRANDE.VALEUR(...)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    a) formules pour Cat 1

    * en M3 : =GRANDE.VALEUR(DECALER(INDIRECT(V$3);0;DROITE(K3));1)

    * en O3 : =GRANDE.VALEUR(DECALER(INDIRECT(V$3);0;DROITE(K3));2)

    * en Q3 : =GRANDE.VALEUR(DECALER(INDIRECT(V$3);0;DROITE(K3));3)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 8.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) formules pour Cat 2

    * en M13 : =GRANDE.VALEUR(DECALER(INDIRECT(V$4);0;DROITE(K3));1)

    * en O13 : =GRANDE.VALEUR(DECALER(INDIRECT(V$4);0;DROITE(K3));2)

    ces 2 formules sont tirées vers le bas jusqu'en ligne 18.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) formules pour Cat 3

    * en M23 : =GRANDE.VALEUR(DECALER(INDIRECT(V$5);0;DROITE(K3));1)

    * en O23 : =GRANDE.VALEUR(DECALER(INDIRECT(V$5);0;DROITE(K3));2)

    * en Q23 : =GRANDE.VALEUR(DECALER(INDIRECT(V$5);0;DROITE(K3));3)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 28.

    ------------------------------------------------------------------------------------

    B) exemples de formules pour INDEX(...;EQUIV(...))

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    a) formules pour Cat 1

    * en L3 :
    =INDEX(INDIRECT(V$3);EQUIV(M3;DECALER(INDIRECT(V$3);0;DROITE(K3));0);1)

    * en N3 :
    =INDEX(INDIRECT(V$3);EQUIV(O3;DECALER(INDIRECT(V$3);0;DROITE(K3));0);1)

    * en P3 :
    =INDEX(INDIRECT(V$3);EQUIV(Q3;DECALER(INDIRECT(V$3);0;DROITE(K3));0);1)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 8.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) formules pour Cat 2

    * en L13 :

    =INDEX(INDIRECT(V$4);EQUIV(M13;DECALER(INDIRECT(V$4);0;DROITE(K3));0);1)

    * en N13 :
    =INDEX(INDIRECT(V$4);EQUIV(O13;DECALER(INDIRECT(V$4);0;DROITE(K3));0);1)

    ces 2 formules sont tirées vers le bas jusqu'en ligne 18.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) formules pour Cat 3

    * en L23 :
    =INDEX(INDIRECT(V$5);EQUIV(M23;DECALER(INDIRECT(V$5);0;DROITE(K3));0);1)

    * en N23 :
    =INDEX(INDIRECT(V$5);EQUIV(O23;DECALER(INDIRECT(V$5);0;DROITE(K3));0);1)

    * en P23 :
    =INDEX(INDIRECT(V$5);EQUIV(Q23;DECALER(INDIRECT(V$5);0;DROITE(K3));0);1)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 28.

    ------------------------------------------------------------------------------------

    C) remarques

    a) dans toutes les formules, c'est volontairement que j'ai laissé K3 sans adapter
    le numéro de ligne, car en colonne K : c'est les mêmes données "S1" à "S6"
    pour : K3:K8 ; K13:K18 ; K23:K28 ; K33:K38 ; K43:K48.

    avantage : après avoir copié / collé une formule, ça t'évite de devoir adapter K3.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) les formules GRANDE.VALEUR(...) n'ont plus besoin d'être conditionnelles
    puisqu'elles utilisent la plage adéquate d'une catégorie (selon colonne V "Adr").

    avantage : les formules GRANDE.VALEUR(...) peuvent être plus courtes.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) une formule avec INDEX(...;EQUIV(...)) qui utilise INDIRECT(...) cherche
    uniquement dans les lignes d'une catégorie donnée ; exemple : pour Cat3,
    ça cherche uniquement dans les lignes 10 à 15, car en V5, y'a C10:C15.

    d) la même formule INDEX(...;EQUIV(...)) qui utilise aussi DECALER(...)
    cherche uniquement dans une seule colonne : celle de la semaine qui
    est concernée ; donc par exemple pour S5 la colonne H.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    e) en cas d'ex-aequo, il peut y avoir un résultat erroné ; selon les 2 remarques
    précédentes c) et d), ça arrivera seulement pour une catégorie donnée et pour
    la semaine concernée ; c'est-à-dire que pour les lignes de cette catégorie, si y'a
    un ex-aequo dans une autre semaine que la semaine concernée, y'aura pas
    d'incidence.

    exemple pour Cat2, semaine S5 :

    * en M17 : 96 ; ça cherche 96 dans H8:H9 ; en L17 : M2000 ; c'est exact :
    c'est bien la marque qui correspond au 1er 96.

    * en O17 : 96 ; ça cherche 96 dans H8:H9 ; en N17 : M2000 ; c'est faux ;
    ça devrait être M88 : la marque du 2ème 96.

    je ne connais pas de moyen d'y remédier ; à moins de faire par VBA
    tout le travail de GRANDE.VALEUR(...) ; on pourra savoir le numéro
    de ligne du résultat trouvé, puis l'utiliser pour retourner la marque
    correcte ; cependant, je crois que "le jeu n'en vaut pas la chandelle".

    donc je propose de laisser comme c'est ; il faut juste être conscient
    de ce problème, qui survient uniquement en cas d'ex-aequo dans
    la semaine concernée d'une catégorie donnée.

    j'ai regardé la solution de Chris ; y'a le même problème avec la
    très longue formule qui utilise RECHERCHEX(...).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    f) si tu veux ne pas voir les traits horizontaux et verticaux du
    quadrillage, c'est inutile de mettre une couleur blanc pour la
    couleur d'arrière plan (couleur du fond) : il te suffit de faire
    ceci : onglet Affichage, groupe Afficher, ☐ Quadrillage
    (la case doit être décochée).

    ------------------------------------------------------------------------------------

    je te laisse vérifier tous les résultats ; si y'en a des erronés,
    ça devrait être uniquement pour ce qui a déjà été indiqué
    en remarque e).

    à te lire pour avoir ton avis (si tu reviens sur ce sujet).  :)

    rhodo

    rhodo Posté le 10 mai, 03:32
    par rhodo
    0

    Bonjour Rhodo et Chris,
    Je suis agréablement ravi, merci beaucoup :)

    cela m'a fortement aidé à tout automatiser mon fichier et grace à votre aide je gagne un temps monstre.

    Encore merci et bonne continuation :) 
    Axel 



    Posté le 14 mai, 14:17
    0

    Bonjour, 
    Un Nouveau PB, je pense une manip simple mais je n'arrive pas à trouver...

    J'aimerai que le fichier se divise en deux parties, dans un onglet La base de donnée et de l'autre et de l'autre les formules... 

    Avez une idée de la manip à réliser SVP ?
    Axel

    Posté le 15 mai, 14:03
    par Axel
    0

    Bonjour Axel,

    je trouve, comme toi, que tu as bien raison de préférer mettre
    en 2 feuilles séparées ; c'est fait dans ce fichier joint :

    https://www.cjoint.com/c/NEpwWPJIFU0

    * la feuille qui contient la base de données s'appelle "Data Base".
    * la feuille qui contient les formules s'appelle "Résultats".

    toute la suite de ce post est pour "Résultats".

    ------------------------------------------------------------------------------------------

    les données techniques sont maintenant en J2:M10 ;
    plus tard, tu pourras masquer les colonnes i:M.

    * en J3 : nom de la feuille de la Base de Données : Data Base

    * formule en K6 : =EQUIV(J6;INDIRECT("'"&J$3&"'!B4:B23");0)+3
    tirée vers le bas jusqu'en ligne 10.

    * formule en L6 : =K7-1
    tirée vers le bas jusqu'en ligne 9.

    * en L10 : nombre saisi manuellement : 23
    il n'y a donc pas de formule.

    * formule en M6 : ="'"&J$3&"'!C" & K6 & ":C" & L6
    tirée vers le bas jusqu'en ligne 10.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    SI plus tard tu voudras changer le nom de la 1ère feuille :
    fais-le, puis modifie uniquement le texte de J3.

    tu n'auras aucun autre changement à faire.  :)

    ------------------------------------------------------------------------------------------

    A) exemples de formules pour GRANDE.VALEUR(...)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    a) formules pour Cat 1

    * en D4 : =GRANDE.VALEUR(DECALER(INDIRECT(M$6);0;DROITE(B4));1)

    * en F4 : =GRANDE.VALEUR(DECALER(INDIRECT(M$6);0;DROITE(B4));2)

    * en H4 : =GRANDE.VALEUR(DECALER(INDIRECT(M$6);0;DROITE(B4));3)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 9.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) formules pour Cat 2

    * en D14 : =GRANDE.VALEUR(DECALER(INDIRECT(M$7);0;DROITE(B4));1)

    * en F14 : =GRANDE.VALEUR(DECALER(INDIRECT(M$7);0;DROITE(B4));2)

    ces 2 formules sont tirées vers le bas jusqu'en ligne 19.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) formules pour Cat 3

    * en D24 : =GRANDE.VALEUR(DECALER(INDIRECT(M$8);0;DROITE(B4));1)

    * en F24 : =GRANDE.VALEUR(DECALER(INDIRECT(M$8);0;DROITE(B4));2)

    * en H24 : =GRANDE.VALEUR(DECALER(INDIRECT(M$8);0;DROITE(B4));3)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 29.

    ------------------------------------------------------------------------------------------

    B) exemples de formules pour INDEX(...;EQUIV(...))

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    a) formules pour Cat 1

    * en C4 :
    =INDEX(INDIRECT(M$6);EQUIV(D4;DECALER(INDIRECT(M$6);0;DROITE(B4));0);1)

    * en E4 :
    =INDEX(INDIRECT(M$6);EQUIV(F4;DECALER(INDIRECT(M$6);0;DROITE(B4));0);1)

    * en G4 :
    =INDEX(INDIRECT(M$6);EQUIV(H4;DECALER(INDIRECT(M$6);0;DROITE(B4));0);1)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 9.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) formules pour Cat 2

    * en C14 :
    =INDEX(INDIRECT(M$7);EQUIV(D14;DECALER(INDIRECT(M$7);0;DROITE(B4));0);1)

    * en E14 :
    =INDEX(INDIRECT(M$7);EQUIV(F14;DECALER(INDIRECT(M$7);0;DROITE(B4));0);1)

    ces 2 formules sont tirées vers le bas jusqu'en ligne 19.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) formules pour Cat 3

    * en C24 :
    =INDEX(INDIRECT(M$8);EQUIV(D24;DECALER(INDIRECT(M$8);0;DROITE(B4));0);1)

    * en E24 :
    =INDEX(INDIRECT(M$8);EQUIV(F24;DECALER(INDIRECT(M$8);0;DROITE(B4));0);1)

    * en G24 :
    =INDEX(INDIRECT(M$8);EQUIV(H24;DECALER(INDIRECT(M$8);0;DROITE(B4));0);1)

    ces 3 formules sont tirées vers le bas jusqu'en ligne 29.

    ------------------------------------------------------------------------------------------

    C) remarques

    a) dans toutes les formules, c'est volontairement que j'ai laissé B4 sans adapter
    le numéro de ligne, car en colonne B : c'est les mêmes données "S1" à "S6"
    pour : B4:B9 ; B14:B19 ; B24:B29 ; B34:B39 ; B44:B49.

    avantage : après avoir copié / collé une formule, ça t'évite de devoir adapter B4.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    b) les formules GRANDE.VALEUR(...) n'ont plus besoin d'être conditionnelles
    puisqu'elles utilisent la plage adéquate d'une catégorie (selon colonne M "Adr").

    avantage : les formules GRANDE.VALEUR(...) peuvent être plus courtes.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    c) une formule avec INDEX(...;EQUIV(...)) qui utilise INDIRECT(...) cherche
    uniquement dans les lignes d'une catégorie donnée ; exemple : pour Cat3,
    ça cherche uniquement dans les lignes 10 à 15 (de la feuille "Data Base")
    car en M8, y'a une formule qui retourne : 'Data Base'!C10:C15.

    d) la même formule INDEX(...;EQUIV(...)) qui utilise aussi DECALER(...)
    cherche uniquement dans une seule colonne : celle de la semaine qui est
    concernée ; exemple : pour S5 la colonne H (de la feuille "Data Base").

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    e) en cas d'ex-aequo, il peut y avoir un résultat erroné ; selon les 2 remarques
    précédentes c) et d), ça arrivera seulement pour une catégorie donnée et pour
    la semaine concernée ; c'est-à-dire que pour les lignes de cette catégorie, si y'a
    un ex-aequo dans une autre semaine que la semaine concernée, y'aura pas
    d'incidence.

    exemple pour Cat2, semaine S5 :

    * en D18 : 96 ; ça cherche 96 dans H8:H9 (de la feuille "Data Base") ;
    en C18 : M2000 ; c'est exact : c'est bien la marque qui correspond
    au 1er 96.

    * en F18 : 96 ; ça cherche 96 dans H8:H9 (de la feuille "Data Base") ;
    en E18 : M2000 ; c'est faux ; ça devrait être M88 : la marque du
    2ème 96.

    je ne connais pas de moyen d'y remédier ; à moins de faire par VBA
    tout le travail de GRANDE.VALEUR(...) ; on pourra savoir le numéro
    de ligne du résultat trouvé, puis l'utiliser pour retourner la marque
    correcte ; cependant, je crois que "le jeu n'en vaut pas la chandelle".

    donc je propose de laisser comme c'est ; il faut juste être conscient
    de ce problème, qui survient uniquement en cas d'ex-aequo dans
    la semaine concernée d'une catégorie donnée.

    ------------------------------------------------------------------------------------------

    je te laisse vérifier tous les résultats ; si y'en a des erronés,
    ça devrait être uniquement pour ce qui a déjà été indiqué
    en remarque e).

    rhodo

    rhodo Posté le 16 mai, 00:51
    par rhodo
    0

    Bonjour, 
    Un grand Merci pour toutes vos réponses.
    J'ai de nouveau un PB, quand je veux étendre la formule pour les semaines suivantes (jusqu'à S52 = une année).
    A chaque dizaine, ça repart de 0. Càd quand je suis à la S10, le résultat obtenu est "NOMBRE#!" et pour la S11, le résultat sera le même que la S1... :/
    Je vous joint le fichier pour que ce soit plus parlant :

    https://www.cjoint.com/c/NEur4mdnM0Y

    Encore merci 
    Bonne fin de soirée
    Axel





    Posté le 20 mai, 19:58
    par Axel
    0

    Bonjour Axel,

    je suis bien content que tu apprécies mes solutions.  :)

    lien fichier : https://www.cjoint.com/c/NEvb0GI3ob0

    rhodo

    rhodo Posté le 21 mai, 03:54
    par rhodo
    0

    Un grand merci pour ton aide Rhodo, tu m'as apporté de très bonne solution :)

    Posté le 22 mai, 09:31
    par Axel

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :