[excel] Recherches multicritéres

Résolu
Bonjour,

Je suis à la recherche d’un coup de main pour faire un programme en VBA avec des boucles Recherche probablement.
J’ai un fichier Excel avec 2 feuilles

La feuille 1 contient plusieurs lignes avec plusieurs colonnes (4 colonnes m’intéressent plus particulièrement).Il s’agit des colonnes Produit | Sous produit | Qté à recevoir | Date de réception.
Nous avons plusieurs fois des lignes avec |produit| sous produit| qté a recevoir identiques seule la date de réception change. Il peut également arriver qu’il y est 2 lignes identiques.

Sur la feuille 2 j’ai fait un calendrier avec un jour par colonne (format jj/mm/aaaa)

Dans les colonnes A et B sur chaque ligne j’ai les produits en colonne A et les sous produit en colonne B.

Je recherche donc un moyen de mettre la valeur des quantités à recevoir dans le calendrier qui correspond aux critères (Produit | sous Produit | Date réception) de la feuille 1 tout en additionnant les quantités à recevoir si on a 2 ligne identiques en feuille 1.
Je pense qu’avec une fonction SI à 3 conditions (produit, sous produit, date) et la fonction RECHERCHEV ou RECHERCHEH ça doit pouvoir marcher sinon en VBA.
Merci de votre aide.

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,

    Essaye avec la formule sommeprod.
    J'ai fais un exemple em me basant sur ton post : http://cjoint.com/?iqnRnkUgx5

    A+
    1. Salut,

      Merci de t'etre penché sur mon probleme mais je n'arrive pas a lire ton fichier avec l'exemple. Essaye de voir si tu peux le joindre d'une autres façon.
      A+ et merci
    2. Contributeur
      @LilauSalut,

      Laisse moi une adresse mail et je t'envoie le fichier....Sinon, je ne vois pas le pb, je le récupere sans souci sur cjoint (télécharger le fichier)....

      A+
    3. @tompolsSalut ,

      Voici mon mail lilau1@free.fr En te remerciant
  2. L'idéal est peut-être de faire un tableau croisé dynamique (pas de code vb, pas de formules)

    ==> Mettre Produit, Sous-Produit en Lignes, Date en colonnes, et "Somme de Quantité à recevoir" dans les données.

    Si l'on veut afficher toutes les dates, même celles qui n'ont aucune quantité à recevoir, il suffit d'ajouter des lignes dans la feuille 1 avec seulement la date (pas de produit, pas de sous produit pas de quantité), et sur le TCD, pour le champ "date" cocher l'option "Afficher les éléments dans données.
    1. ;-) Salut !

      L'idéal, je ne sais si ce serait un TCD, cela dépend de la puissance de la bécane (les TCD sont très gourmants en ressources), et si les données évoluent, ça risque de ramer à fond... Mais un TCD, c'est bien quand même ;-)

      Par contre, le rapport poids/puissance de VBA élimine le reste ! Un petit bout de code VBA, c'est hyper léger et superpuissant... Sauf qu'il faut avoir "l'esprit" développeur, ce qui n'est pas donné à tous le monde...

      Le principe, pour résoudre ce petit problème :

      1) Récupérer les N° de lignes/colonnes de la feuille qui contient la source des données
      2) Faire une petite "boucle" avec les calculs...
      3) Ecrire dans la feuille destination

      Normalement, cool à faire ... Simple et rapide

      ;-)
      1. Salut,

        Je vois bien le principe mais c'est justement la ou je bloque pour le code Vba je suis vraiment un debutant en programmation et partir de rien c'est pas facile. Si quelqu'un avait un esprit developpeur ca m'arrangerais bien. Bonne journée a toi et merci
      2. @Lilau;-)

        Bon, allez... Cliques sur mon profil alors, tu auras l'adresse de mon WebSite, et toute l'aide que tu veux en VB/VBA, si tu comptes te lancer la dedans...

        ;-)
    2. Bonjour,

      Y a t il quelqu'un qui peut m'aider pour cette foutue recherche??

      merci
      1. ;-) Bin oui... Mais tu n'as pas avancé d'un poil depuis le temps ?
        1. Bonjour Lilau,

          Je croyais ton problème résolu depuis longtemps !
          Voici une solution sans macros, simple... mais peut-être compliquée à expliquer.

          - Je suppose que dans ta feuille 1, Produit, Sous-Produit, Quantité à recevoir, Date de réception sont dans les colonnes A, B, C, D.
          Ajoute une colonne dans cette feuille. Chaque cellule de cette colonne aura pour formule : A2&B2&D2 (pour la ligne 2, etc), qui crée une chaine unique avec Prod/Sous-Prod/Date.

          - Donne un nom à toute la plage de cette nouvelle colonne (Par exemple, Prévisions).

          - Dans la feuille 1 toujours, donne un nom à la plage des quantités que tu as dans la colonne C (par exemple : Qtés).

          - Dans ta feuille 2, ajoute aussi une colonne. Sur le même principe, crée une chaine : A2&C2 (sans la date) comme dans la feuille 1

          - Donne un nom à la plage correspondante (par exemple : Liste)

          - Toujours dans la feuille 2, donne un nom à la plage que constituent les dates que tu as en entête de colonnes (par exemple : Echéancier).

          Ensuite, mets dans les cellules de ta feuille 2 la formule suivante :
          =SOMME.SI(Prévisions;Liste&Echéancier;Qtés)

          Je t'ai mis un exemple ici :

          http://cjoint.com/?kBoVPvheYs
          1. Merci beaucoup pour ta réponse ca va m 'être d'une trés grande utilité j'ai compris cette fois ci car j'ai pu télécharger ton fichier.

            Merci encore!!!
          2. Bonjour Lilau,

            Petite précision : si tu donnes des noms aux plages de cellules, le plus simple est de donner des noms aux colonnes entières (Prévisions, Liste, Qtés) ou à la ligne entière (Echéancier). C'est plus simple, et ça évite de les redéfinir quand on ajoute des données au début ou à la fin (contrairement à ce que j'ai fait dans le petit fichier).

            Ajx.