Afficher le "top 1" des lignes reliquats

momabchour Messages postés 42 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Donc voila j'ai un tableau de reliquats journalières que dont je souhaite afficher le top 1 des produits avec reliquats.

Exemple: supposons que je suis un vendeur d'articles scolaires et que chaque jour je note sur Excel les reliquats comme suit:

Date Commande Produit en Reliquat Qté
01/01/2016 657457 Stylo 40
01/01/2016 876853 Papiers 50
02/01/2016 198473 Stylo 30
02/01/2016 683652 Ciseaux 20

Le résultat que je souhaite avoir est le suivant après avoir saisi sur deux cellules les bornes des dates (ex. du 01/01 au 02/01):

Classement Produit Total
1 Stylo 70

Une idée comment faire ca?

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    à ajuster:

    cellule X1 borne basse
    cellule X2 borne haute
    cellule X3 le produit
    en X4
    un tableau de A2 à D1000

    =SOMMEPROD($A$2:$A$1000>=$X$1)*($A$2:$A$1000<=$X$2)*($C$2:$C$1000=$X$3)*($D$2:$D$1000)

    ne pas inclure la ligne de titre dans les limites de champ

    ou alors à partir de Excel 2007:

    =SOMME.SI.ENS(D:D;A:A;">="&X1;A:A;"<="&X2;C:C;X3)

    crdlmnt

    La qualité de la réponse dépend surtout de la clarté de la question, merci!
    1
    1. momabchour Messages postés 42 Statut Membre
       
      Bonsoir Vaucluse,

      Je souhaite que la fonction (que je pense sera matricielle) de me donne à elle seule automatiquement le produit avec le plus de reliquats. donc je dois exclure le nom du produit de l'equation.

      Une idée cmt faire ca?
      0
  2. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
     
    Bonjour !

    Ce qu'il vous faudrait en fait, ce serait une base de donnée, du genre MySQL... une requête SQL
    SELECT article.libelle, commande.nb
    FROM article, commande 
    WHERE article.id = commande.idarticle
    AND commande.date is between 01/01/2017 AND 02/01/2017

    répondrait parfaitement à votre besoin ;-)

    Autrement, en excel, mes compétences ne sont pas suffisantes. Je pense qu'il faudrait vous tourner vers les macros, ou alors utiliser la fonction RECHERCHEV...

    Bonne journée !

    Luc

    EDITH : Totalement grilled by @Vaucluse :-)

    Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques sont finies...
    0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour momabchour
    Coucou Vaucluse ;-)

    Pas besoin de chercher une formule, utilise le tableau croisé dynamique qu'Excel met à disposition, exemple :
    http://www.cjoint.com/c/FHubMkJtUlE

    Cdlmnt
    Via

    "L'imagination est plus importante que le savoir."    A. Einstein
    0
    1. momabchour Messages postés 42 Statut Membre
       
      Bonjour via55

      Je ne veux pas utiliser de TCD vu que c'est un tableau de bord customisé, je souhaite que le tableau ce met à jour tout seul, j'ai trouvé une solution mais elle rend mon classeur trop lent.

      J'ai mis la liste des produits dans une autre feuille et j'ai utilisé les fonctions sommeprod() et somme.si.ens() pour calculer les nombres de lignes et qtés par produit, puis la fonction rang() pour avoir le rang de chaque produit (par rapport au nombre de lignes, pas qtés) puis sur le tableau de mon tableau de bord j'ai mis les classements (1, 2, 3 etc) et j'ai utilisé recherchev() pour chercher les rangs et avoir les noms des produits et les autres info. seul inconvénient c'est que mon classeur est devenu très lourd en termes de calcul.

      Une idée comment faire cette procédure direct sur mon tableau de bord?
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Re
      je ne vois pas pour l(instant d'autres solutions par formule que d'utiliser la liste des produits avec SOMME.SI.ENS
      mais on va chercher un peu...sans grand espoir, .à moins qu'un de nos spécialistes de VBA puisse résoudre le problème avec une macro.(ce n'est pas mon cas)

      Evitez SOMME.PROD, ou alors limitez le bien aux hauteurs de plage utile, car le nombre de lignes avec ce code est directement à l'origine du poids du fichier
      Pas de SOMMEPROD((AA=1) ... par exemple, mais SOMMEPROD((A1:A1000=1)
      avec A:A sur excel à partir de 2007 la formule traite plus d'un million de lignes!

      si vous devez aussi compter un nombre de lignes plutôt qu'un total de montants, utilisez de préférence NB.SI.ENS(champ 1;critère;champ 2;critère 2...)

      crdlmnt
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Si tu préfères faire avec des sommeprod() il ne faut pas te plaindre que ce soit plus lent.
      Le TCD conseillé par via est très optimisé, l'actualisation peut se faire lors de l'activation de la feuille. 1 ligne de code que tu auras en utilisant l'enregistreur de macro.
      Aucun intérêt à faire autrement par macro.
      eric
      0