| ||||||||
Petit astucien | Bonjour, J'aimerais qu'une macro d'actualisation d'un TCD s'active lorsqu'une cellule dans le range A24 a I10000 change...est-ce faisable, la macro d'actualisation est facile a faire mais je sais pas comment l'intégrer dans une macro qui se délencherait automatiquement lorsqu'une des cellule change... Est-ce faisable? Merci de votre aide, Modifié par TheCrow le 20/08/2014 19:44 | |||||||
Publicité | ||||||||
![]() ![]() | Bonsoir, Il semblerait que tu puisses utiliser cet évènement : Private Sub Worksheet_PivotTableAfterValueChange(ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range) Se produit lors de modification ou de recalcul de cellules dans un TCD. Les paramètres transmis par la procédure, TargetPivotTable (le TCD) et TargetRange (plage contenant les cellules modifiées ou recalculées) sont le cas échéant utilisables dans ton code. Procédure dans le module de la feuille concernée. | |||||||
Petit astucien | Salut, ton aide est toujours apprécié malheureusement je n'ai pas pu faire fonctionner ta procédure. J'ai écrit celle-la...
Private Sub Worksheet_Change(ByVal Target As Range) Sub AAAA()
J'ai du faire une erreur a quelque part car elle ne déclanche pas l'actualisation du TCD...probablement une erreur stupide en plus | |||||||
![]() ![]() | Et avec : ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable ? | |||||||
Petit astucien | Non malheureusement, jai aussi essayé ca (Dans la feuille du TCD j'ai mis ce code)
(Dans le module 2 j'ai mis ce code) Sub AAAA() Pourtant quand je fais clique dans "Outils de tableau croisé dynamique/Options/Actualiser" ca fonctionne a la perfection.. Merci
| |||||||
![]() ![]() |
Target n'est pas un paramètre de cette procédure... Il faudrait sans doute lui substituer TargetRange. A essayer sous cette forme : If Not Intersect(TargetRange, Range("C16")) Is Nothing Then Et garder RefreshTable dans AAAAA. | |||||||
Petit astucien | Ouin..je suis sur le point de pleurer... Ca ne fonctionne pas plus...va peut etre falloir que je pense a une autre idée
| |||||||
![]() ![]() | Je ne vois pas très bien ce que tu veux faire exactement mais si tu fournissais un modèle on pourrait y regarder de plus près et tester pour trouver les solutions possibles. | |||||||
Petit astucien | Le probleme vient du fait que je ne peux pas barrer les colonnes d'un TCD. Comme exemple, dans une année il y a 12 mois, mais dans un TCD s'il n'y a pas de ventes au mois de Mars alors la colonne n'apparait pas, ce que je veux c'est que les 12 colonnes soient toujours apparentes meme si au mois de Mars il n'a pas de ventes. Je sais que si la BD est fait en OLAP alors je pourrais rajouter des lignes vides malheureusement ce n'est qu'une BD excel.
Donc ce que j'ai fait, j'ai fait une patch en excel que si il n'y a pas de ventes en Mars alors une ligne automatique se rajoute dans la BD avec +++ au lieu de chiffres. Donc vu que le TCD voit une information pour le mois de Mars alors la colonne reste apparente. La patch fonctionne a la perfection, mais pour ce faire je dois faire manuellement actualiser le TCD.
Le document final doit aller a des gens qui ne sont pas tres habitué avec Excel donc je dois faire en sorte que lorsqu'il clique sur un segment alors ils n'ont rien a faire autre que de cliquer sur le segment. Auparavant ils avaient des rapports tout cuit dans le bec, maintenant je tente de les habitué a des rapports un peu plus dynamiques, mais je dois commencer au départ et faire quelque chose de simple si je veux qu'ils adherent a cette nouvelle facon de travailler.
Donc s'il y a un moyen de barrer les colonne pour qu'elles soient toujours visibles alors pas besoin de macros, mais j'ai essayer a l'endroit, a l'envers, en francais et en chinois et rien fonctionne....d'ou la raison pour laquelle je tente de faire une macro d'actualisation automatique.
| |||||||
Publicité | ||||||||
Petit astucien | Rebonjour, Ci-joint tu trouveras un modele de ce que je tente de faire. -J'ai créé une petite base de données (A14;C45). Pour les produits 222222 et 333333 j'ai "oublié" de mettre du data pour quelques mois. Dans un TCD quand il n'y a pas de données dans une base de données pour un mois alors la colonne disparait du TCD. -Donc j'ai créé une patch (Zone Rouge A2;C13) ou automatiquement lorsqu'un produit est choisi via un segment ca rajoute des "+++" ce qui force le TCD a rajouter des colonnes avec la valeur 0, ce qui ne dérange aucunement le total final. -Malheureusement le TCD ne prend pas a considération la patch a moins de cliquer droit et faire actualisation du TCD, lorsqu'on le fait tout fonctionne a la perfection, malheureusement les gens qui devront travailler avec le rapport ne sont pas habituer avec XLS alors j'aimerais que le TCD ce puisse se mettre a jour automatiquement en prenant en considération la patch. -Suivant tes judicieux conseils( Je veux absolument que peut importe qu'il y ait des données ou non, que les 12 mois apparaissent dans le rapport final.
| |||||||
Petit astucien | J'ai essayé autre chose qui fonctionne mais j'ai besoin d'aide pour changer une partie de la macro... Voici le code: Private Sub Worksheet_Change(ByVal Target As Range)
Par contre dans la cellule C16 ce n'est pas une valeur mais bien la somme d'une série de cellule qui lorsque ca change doit déclencher la macro....J'ai testé en changeant manuellement la veleur de la cellule C16 et elle s'enclenche parfaitement..mais comment faire en sorte que la macro s'enclanche lorsque la valeur de la formule en C16 change??? Est-ce possible? | |||||||
![]() ![]() | Bonsoir, Private Sub Worksheet_Change(ByVal Target As Range) A priori, besoin de rien d'autre pour mettre à jour TCD lors de modification de la plage source.
| |||||||
Petit astucien | Merci...ca fonctionne a moitié...on dirait que la macro part en loop...elle fait pleins de fois des recalcule ensuite une erreur d'execution 28 disant espace pile insuffisant... | |||||||
Petit astucien | ferrand a écrit :
| |||||||
![]() ![]() | Bonsoir, Ton fichier modèle : http://cjoint.com/?DIdaqRjt6pR Toute modification dans la plage source, se traduit immédiatement dans le TCD (sans attendre plusieurs minutes...) Si le code pose problème dans ton fichier, il faut voir du côté de l'environnement s'il présente des différences avec le modèle... | |||||||
Petit astucien | Merci ca fonctionne mais j'ai un probleme....si tu essais la macro tu verras que le code de produit 222222 a pas de vente pour le mois de juin et lorsqu'on change de produit via le filtre du TCD le mois de juin n'est pas pris en considération malgré le fait que la patch(zone rouge) doit en rajouter mais si tu clique droit et tu actualises le tcd la colonne du mois de juin se rajoute automatiquement... | |||||||
![]() ![]() | Je comprrends pas bien... ! Si j'insère une ligne dans la zone source pour y introduire Juin sous code 222222 avec une valeur, celle-ci apparaît bien dans le TCD. | |||||||
Publicité | ||||||||
Petit astucien | La dessus tu as tout as fait raison, le probleme c'est que lorsque la BD n'a pas de données pour le mois de Juin je veux que dans le TCD le mois de juin apparaissent quand meme avec le chiffre 0 d'ou la raison pour laquelle j'ai ajouté une section en rouge qui force le mois manquant a apparaitre.
En fin de compte j'aimerais que sur le TCD il y ait toujours 12 colonnes de mois peu importe qu'il y ait des données ou non. Donc pour le mois de Juin pour le code 222222 je voudrais que la colonne Juin indique 0 au lieu d'etre invisible. | |||||||
Petit astucien | Ouf...quel foutu probleme, j'ai beau tenté pleins de trucs mais rien ne fonctionne..j'ai tenté de forcer les mois manquants dans la BD ce qui fonctionne mais qui grossi beaucoup la BD... | |||||||
![]() ![]() |
C'est ce que j'allais suggérer ! | |||||||
Petit astucien | Donc j'ai finalement forcer le data manquant directement dans la BD ce qui fait que la connection est plus lente mais bon ca fonctionne. Merci pour l'aide | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|