AFFICHER UNIQUEMENT LES FACTURES RELATIVES A UN FOURNISSEUR (DANS UN MENU DEROULANT)

0

Bonjour à tous, j'ai besoin de votre aide concernant la fonction DECALER sur Excel 

Pour résumer je cherche à créer deux menus déroulant dont le 2e dépend du 1er. 

j'ai un fichier Excel avec deux feuilles. la 1ère feuille "ACHATS" liste des achats de divers produits auprès de divers Fournisseurs. Pour chaque achat on a une facture fournisseur.

Un fournisseur peut donc avoir plusieurs factures différentes.

Ce que je voudrais c'est de pouvoir, dans ma 2è feuille "REGLEMENT DE FACTURE" , choisir une facture fournisseur pour la régler. Avec un menu déroulant, je choisis donc en premier le fournisseur à régler ensuite je voudrais que les factures relatives à ce fournisseur s'affichent uniquement dans le menu déroulant des factures pour que la facture à régler puisse être choisie.

j'ai d'abord pensé à la fonction INDIRECT() mais telles que mes données se présentent la fonction INDIRECT me semble pas très appropriée. 

Mes recherches m'ont conduis vers la fonction DECALER imbriquée avec EQUIV mais comme résultat j'obtiens un menu déroulant avec le nom du fournisseur au lieu de ses factures.

je joins le fichier pour faciliter ma demande.  FICHIER ACHATS

Merci pour votre aide


    matsniper Posté le 17 juillet 2023, 16:58
    par matsniper
    Répondre
    0

    Bonsoir matsniper,

    ton fichier en retour :

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

    à toi de faire les essais.  ;)

    rhodo

    rhodo Posté le 17 juillet 2023, 20:31
    par rhodo
    0

    Bonjour rhodo et merci encore pour la solution proposée. C'est un bon début de solution car effectivement le menu déroulant n'affiche que les factures relatives au fournisseur choisi. 

     j'ai une  question concernant la formule utilisée pour le menu déroulant de la feuille " REGLEMENT FACTURE". 

    en Colonne C6 je vois : DECALER(Infos_achats;EQUIV(B6;CFrs;0)-1;6;NB.SI(CFrs;B6);1)

    le 2e paramètre de la fonction DECALER est normalement le nombre de ligne pris en compte pour décaler la référence. Ici je pense que cela correspond à EQUIV(B6;CFrs;0)-1.

    Moi j'ai toujours pensé que la fonction EQUIV donne un numéro de ligne ou de colonne.

    Elle sert donc aussi à déterminer un nombre de ligne ??

    Une dernière chose : j'ai remarqué aussi que vous avez , d'abord trié (rangé) les fournisseurs de sorte à regrouper leurs factures. 

    Plusieurs achats peuvent etre faits à la même date auprès de fournisseurs differents. On peut donc avoir plusieurs lignes avec des fournisseurs différents. 

    Je voudrais si cela est possible conserver la base des achats sous le format original (non trié) et faire les reglements de factures à partir de cette base.

    Si vous pensez que cela est faisable cela m'aidera beaucoup d'explorer une autre solution de votre part.

    matsniper Posté le 18 juillet 2023, 14:32
    par matsniper
    0

    Bonsoir matsniper,

    tu as écrit : « j'ai remarqué aussi que vous avez d'abord trié (rangé) les fournisseurs
    de sorte à regrouper leurs factures. »

    c'est marrant, car moi je n'ai rien trié du tout !  :D  c'était déjà trié comme ça quand
    j'ai ouvert ton classeur !  ;)  attention : je n'ai fait que modifier un peu la méthode
    que tu as utilisée au départ, et cette méthode n'est valable que si c'est déjà trié
    par ordre des fournisseurs (colonne B de la feuille "ACHATS").

    l'ordre peut être croissant ou décroissant (peu importe), mais il faut impérativement
    que les lignes des mêmes fournisseurs soient contigües ; sinon, ta méthode ne
    peut plus être utilisée.

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

    tu as écrit : « Je voudrais si cela est possible conserver la base des achats sous
    le format original (non trié) et faire les règlements de factures à partir de cette
    base. »

    si la liste n'est pas triée par ordre des fournisseurs, on est obligé de choisir une
    autre méthode, en utilisant un code VBA (macro).

    je veux bien essayer (mais c'est sans garantie) si tu joins UN AUTRE fichier Excel,
    qui sera plus représentatif dans la mesure où la colonne B de la feuille "ACHATS"
    ne sera PAS déjà triée par ordre des fournisseurs (ni un autre tri ➯ non triée).

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

    2ème feuille, en C6, la formule de validation des données est effectivement :

    =DECALER(Infos_achats;EQUIV(B6;CFrs;0)-1;6;NB.SI(CFrs;B6);1)

    EQUIV(B6;CFrs;0)-1 sert à trouver la 1ère ligne du tableau de la feuille "ACHATS"
    dont le Fournisseur (colonne B) est le même que celui que tu as sélectionné en
    B6 de la 2ème feuille "REGLEMENTS DE FACTURES" ; note aussi que c'est B6
    au lieu du B$6 qu'il y avait au départ ; c'est à cause de ton B$6 qu'en C7, avant,
    ça retournait "G-GLIS" au lieu de "SGH SWISS MEDIC CI SARL" alors qu'en B7
    tu avais pourtant bien sélectionné "SGH SWISS MEDIC CI SARL".

    le paramètre suivant est 6 (au lieu du 0 que tu avais mis avant) : sur "ACHATS",
    6 colonnes à droite de la colonne B des "Fournisseurs", ça tombe pile sur la
    colonne H des "N° Facture" ; tu comprends maintenant pourquoi, avec ton 0,
    ça retournait le nom d'un Fournisseur au lieu d'un N° Facture !

    le dernier paramètre est 1 ; c'est lui qui détermine le nombre de colonnes de ce
    qui sera retourné par la fonction DECALER() ; 1 seule colonne, c'est OK : c'est
    bien ce qu'il faut puisqu'on ne veut rien d'autre que le "N° Facture".

    l'avant-dernier paramètre est NB.SI(CFrs;B6) ; c'est lui qui détermine le nombre
    de lignes de ce qui sera retourné par la fonction DECALER() ; c'est OK : c'est ce
    qu'il faut pour prendre en compte toutes les factures d'un fournisseur donné ; et
    c'est où tu peux voir que c'est obligé que les lignes d'un même fournisseur
    doivent être forcément contigües ; car ce 4ème paramètre ne peut pas sauter
    des lignes pour lesquelles ça ne serait pas le même fournisseur.

    si tu as besoin de plus d'infos sur la fonction DECALER(), je te laisse regarder
    l'aide en ligne sur cette fonction.  :)

    rhodo

    rhodo Posté le 18 juillet 2023, 19:36
    par rhodo
    0

    Salut rhodo,

    Merci pour ces éclaircissements, tu es au top !

    Great!

    matsniper Posté le 19 juillet 2023, 01:09
    par matsniper

    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 :