[excel] Recherches multicritéres
Résolu
Lilau
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- [excel] Recherches multicritéres
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
6 réponses
Salut,
Essaye avec la formule sommeprod.
J'ai fais un exemple em me basant sur ton post : http://cjoint.com/?iqnRnkUgx5
A+
Essaye avec la formule sommeprod.
J'ai fais un exemple em me basant sur ton post : http://cjoint.com/?iqnRnkUgx5
A+
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.
==> 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.
;-) 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
;-)
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
;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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+
Voici mon mail lilau1@free.fr En te remerciant