Recopier la valeur d'une cellule en fonction de 2 critères

Fermé
Doom07 Messages postés 9 Date d'inscription mardi 9 juillet 2013 Statut Membre Dernière intervention 22 novembre 2013 - 1 août 2013 à 11:39
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 2 août 2013 à 16:16
Bonjour le forum.

Bon, voilà. J'ai un petit souci de programmation sur une des macros que je souhaite réaliser.
En fait, je souhaite afficher dans une cellule la valeur d'une cellule provenant d'un autre classeur en fonction de 2 critères.
En gros :
J'ai un fichier externe (avec un nombre d'onglet classé par semaine) qu'on appellera APPRO.
Selon les semaines, les appro' (viande, fromage, ingrédients) situés en colonne A changent. Autrement dit, la case A1 de ce tableau varie de semaine en semaine et ainsi de suite pour les autres cellules de la colonne A. En colonne B, on retrouve le fournisseur de chaque appro'. Il peut exister 1 ou plusieurs fournisseurs pour chaque appro'. Pour une viande par exemple, je peux avoir 3 fournisseurs différents. Et en colonne F, on retrouve la quantité livrée par semaine.

J'ai maintenant créé un fichier RÉCAP qui me récapitule chaque type d'appro' (viande, fromage, ingrédients...) J'aimerais créer une macro qui selon 2 critères (ingrédients et fournisseur 1), me donne la quantité livrée pour l'ingrédient en question. Car le problème que j'ai est que je peux avoir le même ingrédient mais livré par un fournisseur différent. Il me faut donc ces 2 critères pour être sûr d'avoir l'ingrédient qui m'intéresse.

J'ai d'abord pensé à faire une SUMPRODUCT mais sans succès. J'ai ensuite tenté avec la RECHERCHEV, sans succès non plus. J'en appelle donc à vos connaissances expertes en VBA pour me dépatouiller de cette situation.

En espérant avoir été clair, je vous remercie d'avance de vous pencher sur mon problème.

À très bientôt !

5 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
1 août 2013 à 12:21
Bonjour,

Plutôt que d'avoir à saisir des choses, penche-toi sur les Tableaux Croisés Dynamiques, je pense qu'ils peuvent de servir de bons... récapitulatifs !

A+
0
Doom07 Messages postés 9 Date d'inscription mardi 9 juillet 2013 Statut Membre Dernière intervention 22 novembre 2013
2 août 2013 à 10:40
Bonjour Zoul67.

Tout d'abord, merci de t'être intéressé à mon problème. Concernant les tableaux croisés dynamiques, j'y ai pensé mais je ne peux pas l'adapter à ma situation.
Je ne vois pas du tout comment faire.
Je ne sais pas si la question à déjà été posée mais j'aimerais que si la case A1 de la feuille 1 du classeur 1 est égale à "viande" ET que la case B1 de la feuille 1 du classeur 1 est égale à "BOSCHER" (nom du fournisseur), alors que la case C1 de la feuille 1 du classeur 2 soit égale à la case C1 de la feuille 1 du classeur 1. C'est un peu barbare mais je ne trouve pas meilleure explication.
En espérant avoir été le plus clair possible...

Merci pour votre aide.

Cordialement.
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
2 août 2013 à 11:39
Bonjour,

Peux-tu mettre ton fichier à disposition sur www.cjoint.com ?
Je pense que ta piste de SOMMEPROD était bonne par rapport au fonctionnement que tu décris, mais pense encore qu'un tableau croisé dynamique doit faire l'affaire...

A+
0
Doom07 Messages postés 9 Date d'inscription mardi 9 juillet 2013 Statut Membre Dernière intervention 22 novembre 2013
2 août 2013 à 15:05
Effectivement, j'ai réussi à obtenir le résultat que je voulais avec SOMMEPROD.
Voici ma formule :
=SOMMEPROD(('[APPROMP13-2.xls]34'!$A$4:$A$100=B7)*('[APPROMP13-2.xls]34'!$B$4:$B$100=C7)*('[APPROMP13-2.xls]34'!$F$4:$F$100))

Il va donc chercher dans la plage A4:A100 de l'onglet 34 du classeur APPROMP13-2 la valeur égale à B7 de mon classeur RÉCAP. Il regarde ensuite dans la plage B4:B100 de l'onglet 34 du classeur APPROMP13-2 la valeur égale à C7 de mon classeur RÉCAP. Si les 2 critères sont respectés, alors il fait la somme de la plage F4:F100 de l'onglet 34 du classeur APPROMP13-2.

Maintenant, j'aimerais pouvoir faire varier l'onglet (égal au numéro de la semaine) du classeur APPROMP13-2 selon le numéro de la semaine que je désire entrer dans la case A2 de mon classeur RÉCAP.
Par exemple, si dans mon fichier RÉCAP, je tape 35 en case A2, alors il va me faire la même SOMMEPROD mais sur les plages de l'onglet 35 du classeur APPROMP13-2.

Je pense que l'utilisation d'un programme VBA est indispensable mais je n'ai pas réussi à coder la variation de cet onglet suivant la valeur que je rentre en A2.

Il me manque juste ce petit détail. Si vous avez la réponse à ma question, je suis bien évidemment preneur. Merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
2 août 2013 à 16:16
Je pense qu'il n'y a pas besoin de VBA.
L'utilisation de la fonction "INDIRECT" doit permettre d'apporter cette amélioration.
J'ai fait sur un classeur vierge =INDIRECT("Feuil" & A2 & "!A1") par exemple.

Bon courage !
0