> Tous les forums > Forum Bureautique
 Déclanchement d'une macro ExcelSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
TheCrow
  Posté le 20/08/2014 @ 14:53 
Aller en bas de la page 
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é
ferrand
 Posté le 20/08/2014 à 23:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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.

TheCrow
 Posté le 21/08/2014 à 15:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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)
If Target.Address = Range("C16").Address Then
Call Module2.AAAA
End If
End Sub

Sub AAAA()
'
' AAAA Macro
'
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
'
End Sub

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

ferrand
 Posté le 21/08/2014 à 19:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Et avec : ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable ?

TheCrow
 Posté le 21/08/2014 à 19:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Non malheureusement, jai aussi essayé ca

(Dans la feuille du TCD j'ai mis ce code)
Private Sub Worksheet_PivotTableAfterValueChange(ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range)
If Target.Address = Range("c16").Address Then


Call Module2.AAAA
End If
End Sub

(Dans le module 2 j'ai mis ce code)

Sub AAAA()
'
' AAAA Macro
'
ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
'
End Sub

Pourtant quand je fais clique dans "Outils de tableau croisé dynamique/Options/Actualiser" ca fonctionne a la perfection..

Merci

ferrand
 Posté le 21/08/2014 à 20:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Private Sub Worksheet_PivotTableAfterValueChange(ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range)
If Target.Address = Range("c16").Address Then

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.

TheCrow
 Posté le 22/08/2014 à 13:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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

ferrand
 Posté le 22/08/2014 à 23:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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.

TheCrow
 Posté le 24/08/2014 à 01:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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é
TheCrow
 Posté le 27/08/2014 à 22:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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(<a href=https://forum.pcastuces.com/emotions/smile_top.gif" width="25" height="18" />) j'ai fait la macro mais malheureusement elle ne semble pas vouloir s'enclencher.

Je veux absolument que peut importe qu'il y ait des données ou non, que les 12 mois apparaissent dans le rapport final.

http://cjoint.com/?0HBwALePzy4

TheCrow
 Posté le 29/08/2014 à 17:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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)
If Target.Address = Range("C16").Address Then
Call Module2.AAAA
End If
End Sub


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?

ferrand
 Posté le 29/08/2014 à 21:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A2:C45")) Is Nothing Then Me.PivotTables(1).RefreshTable
End Sub

A priori, besoin de rien d'autre pour mettre à jour TCD lors de modification de la plage source.

TheCrow
 Posté le 31/08/2014 à 17:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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...

TheCrow
 Posté le 02/09/2014 à 18:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
ferrand a écrit :

Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A2:C45")) Is Nothing Then Me.PivotTables(1).RefreshTable
End Sub

A priori, besoin de rien d'autre pour mettre à jour TCD lors de modification de la plage source.


J'ai retesté ce code et ca fait buggé mon Excel...c'est bizarre...ca roule pendant quelques minutes et pouf excel ne répond plus, pourtant je n'ai pas d'autres macros ou quoique ce soit...

ferrand
 Posté le 03/09/2014 à 00:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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...

TheCrow
 Posté le 03/09/2014 à 23:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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...

ferrand
 Posté le 04/09/2014 à 12:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

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é
TheCrow
 Posté le 04/09/2014 à 19:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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.

TheCrow
 Posté le 07/09/2014 à 15:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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...

ferrand
 Posté le 08/09/2014 à 11:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

j'ai tenté de forcer les mois manquants dans la BD ce qui fonctionne

C'est ce que j'allais suggérer !

TheCrow
 Posté le 08/09/2014 à 17:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
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

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
294,96 €Mini PC T-BAO TBOOK MN27 (Ryzen 7 2700U, 16Go RAM, 512Go SSD NVME) à 298,48 € avec le code BGSPTB27
Valable jusqu'au 22 Janvier

Banggood propose actuellement le mini PC T-BAO TBOOK MN27 à 298,48 € (avec livraison et assurance comprises) avec le code promo BGSPTB27. Ce mini PC au format NUC d'Intel possède un processeur Ryzen 7 2700U avec chip graphique Vega 10, 16 Go de RAM DDR4 et un SSD NVME de 512 Go. Il dispose d'une connectique complète : un emplacement 2,5 pouces libre (pour ajouter un disque dur ou un SSD supplémentaire, le WiFi5, le bluetooth 4.1, 4 ports USB 3.0, 2 ports USB 2.0, un port HDMI 2.0, un DisplayPort, un port Ethernet Gigabit et tourne sous Windows 10 que vous pourrez mettre en français. Ce mini PC fait 12,8 x 12,8 x 5 cm et pèse 1,2 kg. Il est livré avec une alimentation européenne. Branchez ce mini PC sur une TV ou un écran et vous avez un ordinateur discret et performant.

Ce marchand sérieux se trouvant en Chine, la livraison peut prendre une vingtaine de jours. Vous pouvez payer par carte bancaire ou par Paypal (conseillé pour bénéficier de la garantie Paypal).


> Voir l'offre
139,99 €Alimentation modulaire Corsair RM750X 80+ Gold à 139,99 €
Valable jusqu'au 20 Janvier

Amazon propose actuellement l'alimentation modulaire Corsair RM750X à 139,99 € livrée gratuitement. Cette alimentation de 750W est certifiée 80+ Gold et est garantie 10 ans. Entièrement modulaire, vous pourrez brancher uniquement les câbles (fournis) dont vous avez besoin. On la trouve ailleurs à partir de 170 €. 


> Voir l'offre
54,99 €Clavier Logitech G213 Prodigy RVB à 55,99 €
Valable jusqu'au 21 Janvier

Amazon fait une promotion sur le clavier Logitech G213 Prodigy RVB qui passe à 55,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 69 €. Ce clavier RVB à membranes est conçu aussi bien pour le jeu que pour l'activité professionnelle, résiste aux liquides, aux miettes et à la saleté pour un nettoyage aisé.


> Voir l'offre

Sujets relatifs
Macro Excel 4
2 pages par feuille dans macro excel
Creation d' une boucle macro dans fichier EXCEL pour impression
besoin d'une macro excel 2007
Macro Excel. Mes colonnes disparaissent.
libre Office : macro Excel présente et non active
[Excel 2007] Macro : Sélection d'un tableau selon sa longueur variable
Macro couleur séries graphique excel 2010
excel 2007 macro mise en page, quadrillage, filtre
Excel 2007 macro rajouter tri + cellule en surbrillance à chaque changement
Plus de sujets relatifs à Déclanchement d''une macro Excel
 > Tous les forums > Forum Bureautique