Enrichir TCD avec Table externe
Bonjour à tous,
Je suis étudiant et profite du calme qu'offre cette année.... particulière pour me former un peux plus à Excel et au VBA à partir de problèmes que j'ai pu rencontrer lors de précédants TD ou Stage et que je n'avais pas le temps de creuser, et je suis tombé sur un os (enfin, qui en est un pour moi).
L'exercice que je me suis fixé est le suivant :
1. Récupérer des données issues d'une extraction vers Excel d'une Base De Données "Principale" (ici un ERP par exemple)
| Code Magasin | Code Article | Rayon | Volume Vente |
| 01 | 123 | Chasse | 456 |
| 01 | 456 | Pêche | 322 |
| 01 | 456 | Chasse | 233 |
| 02 | ... | ... | ... |
2. Créer un Tableau Croisé Dynamique pour synthétiser ces données (ici, recouper les ventes des code article en fonction du magasin et du rayon)
| Code Article | Chasse | Peche | Total |
| 456 | 322 | 233 | 555 |
| .... | ... | ... | ... |
| Total | 1253 | 8956 | 10209 |
3. Enrichir ce TCD avec une seconde Base de Données "Secondaire" (ici un fichier Excel crée par le directeur du magasin qui associe un Code article à un "vendeur" )
| Code Article | Vendeur |
| 123 | Victor |
| 456 | Sylvie |
| ... | ... |
Le fichier exemple est joint à ce post.
Pour cela (comme pour tous mes "exercices", j'essaie dans un premier temps de le faire "à la main" , puis quand j'ai réussi, j'essaie d'automatiser avec une macro en VBA, en poussant de plus en plus loin l'automatisation au fur et à mesure)
Les points 1. et 2. ne me posent aucun problème (en manuel comme en VBA) , mais je bloque pour le troisième en manuel et en VBA
J'ai essayé de rajouter une colonne en dehors de mon TCD, sur la même feuille, en faisant un "RECHERECHE()" qui prend dans mon TCD le "Code Article", va regarder dans ma base Secondaire ce même code et retourne le Chef de Produit concerné. Ca marche, mais si je change le filtre du magasin depuis mon TCD, comme la plage est dynamique, ma colonne "rajoutée à la main" disparait.
J'ai d'abord pensé à modifier directement la feuille contenant ma base de données principale, mais comme elle peut être très grande (imaginons.... 50 000 lignes) , cela ferait calculer à Excel un champ supplémentaire pour TOUTE la base de données alors que seulement quelques lignes (env. 100) m'interessent --> perte de temps. De plus, mon extract doit rester intact pour servir de référence au besoin. 2nd problème avec cette méthode est la visualisation des données , qui n'est pas pratique. Je voudrais donc eviter, mais ne sait pas comment faire.
Je fais donc appel à votre aide pour m'aider à débloquer ma situation, et pouvoir ensuite essayer d'automatiser tout cela par une Macro (je reviendrais ici si je n'y arrive décidément pas) .
Je suis ouvert à toute proposition , y compris celles qui permettent d'éviter l'usage d'un TCD tout en restant "pratique".
Merci beaucoup par avance ,
Peha_2
PS: il s'agit de mon premier post ici, j'ai bien pris le temps de regarder si le sujet avait été résolu ailleurs, mais n'ai pas trouvé.
Hello,
Si je comprends bien tu veux savoir qui est le chef de produit par article et par magasin ?
Si oui, moi j'ajouterai une colonne dans ma base de donnée avec une rechercheV
Bonjour à tous
Sinon tu utlises PowerQyery, totalement intégré à Excel, pour
- récupérer les données de l'extraction directement dans le fichier (pas besoin de l'ouvrir ni copier coller de données)
- croiser à l'autre tableau pour en faire un source TCD
@Rag0207 , merci de ta réponse ! Pas tout à fait¨, j'ai peut être mal exprimé mon besoin. L'objectif final de mon tableau est de pouvoir visualiser rapidement :
- Le volume de vente d'un produit dans un magasin , avec le détail par rayons, et associer ce chiffre avec le nom du vendeur associé (et donc voir quel produit n'a pas de vendeur attitré)
- Une fois l'association Vente-Vendeur faite, pouvoir créer une synthèse des ventes par vendeur (pour calculer des primes par exemple)
J'aimerais vraiment éviter le RechercheV dans la Base de Données , qui est un fichier de "reférence" et que j'aimerais garder intact (mes tableaux viennent piocher des infos dans mes Bases de Données, mais ne les modifient pas )
La solution de @78chris se rapproche beaucoup de ce que j'aimerais faire (et m'éviterait des Copier Coller inutiles, gourmands en cache) . Je ne connais pas du tout PowerQyery , je vais me renseigner pour voire comment s'en servir. Sais tu s'il est possible de faire tourner des macros à partier de Power Qyery ?
RE
PowerQuery est totalement intégré à Excel depuis la version 2016
Donc dans un même classeur tu peux avoir des requêtes POwerQuery et du code VBA (dont PowerQuery peut remplacer une partie dans bien des cas)