Lancer une macro après modification d'un tableau croisé?

Lancer une macro après modification d'un tableau croisé? - VB/VBA/VBS - Programmation

Marsh Posté le 25-04-2005 à 11:23:44    

Bonjour,  
 
j'ai un tableau croisé dynamique, dont un des champs est 'sorti', c'est à dire il est juste au dessus du tableau lui-même, sous forme de liste déroulante: il permet de restreindre les données du tableau. Je ne sais pas si je me fait bien comprendre?  
 
J'aimerais pouvoir lancer une macro à chaque fois que l'on change la valeur de ce champ...  
 
Pourriez vous m'aider?  
 
Merci  
 
Edit: Résolu  
Tout simplement avec le lancement d'une macro par la méthode worksheet.calculate  
 
Pour ceux à qui cela pourrait servir...
 
Edit 2: Finalement, ca ne me satisfait pas vraiment, parcecque le code peut s'effectuer 2 ou 3 fois d'affilée à cause de recalculs en cascade...
Vous auriez un autre idée + efficace??
 
Merci


Message édité par Gusdabo le 16-06-2005 à 12:30:10
Reply

Marsh Posté le 25-04-2005 à 11:23:44   

Reply

Marsh Posté le 16-06-2005 à 13:08:55    

up!...

Reply

Marsh Posté le 20-06-2005 à 17:25:47    

up...

Reply

Marsh Posté le 20-06-2005 à 17:27:41    

désactive le recalcul automatique lorsque tu lance la macro.
réactive le apres.

Reply

Marsh Posté le 23-06-2005 à 01:21:28    

knakes a écrit :

désactive le recalcul automatique lorsque tu lance la macro.
réactive le apres.


 
Ca ne marche pas, j'ai pourtant essayé... Il recalcul quand même certaines choses, je ne sais pas lesquelles.

Reply

Marsh Posté le 23-06-2005 à 05:18:24    

Et l'événement _Change sur ton TCD en interceptant la cellule que tu modifies, ça marche pas?


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 23-06-2005 à 14:10:19    

AlainTech a écrit :

Et l'événement _Change sur ton TCD en interceptant la cellule que tu modifies, ça marche pas?


Je connais pas..
 
Ca marche comment?

Reply

Marsh Posté le 23-06-2005 à 14:31:22    

Je cherche mais ne trouve rien..


Message édité par Gusdabo le 23-06-2005 à 14:31:47
Reply

Marsh Posté le 23-06-2005 à 14:34:59    

Dans VBA, tu fais un double clic sur la feuille TCD.
En haut de la page de code, tu as 2 listes déroulante.
Dans celle de gauche, tu choisis Worksheet et dans celle de droite, tu choisis Change.
 
Dans la procédure créée, tu remplis pour obtenir qqch de similaire à ceci:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address = "$A$1" Then
    TaFonctionDeCalcul  
  End If
End Sub


J'ai mis la cellule A1 mais tu peux mettre la référence de la cellule que tu veux surveiller.
Attention, les $ sont obligatoires.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 23-06-2005 à 14:44:12    

Ah, oui, très bon...
Je vais voir avec cela!!
 
Edit:
Marche pô!..
Sur mon tableau crois, ca donne cela
http://gusdabo.free.fr/Clipboard02.jpg
 
C'est la case C4 que je modifie, mais elle n'est pas sélctionnée au moment du changement, donc la target.adress est fausse...


Message édité par Gusdabo le 23-06-2005 à 15:14:20
Reply

Marsh Posté le 23-06-2005 à 14:44:12   

Reply

Marsh Posté le 23-06-2005 à 16:40:44    

Il te faut donc écrire:

 If Target.Address = "$C$4" Then



---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 29-06-2005 à 16:16:33    

Oui oui, jusque là je maîtrise, j'avais bien mis
If Target.Address = "$C$4" Then
 
Cependant, le probème, c'est que, mettons que la cellule A5 soit sélectionnée.
Si je lance la liste déroulant en C4, la cellule C4 ne sera pas sélectionnée après le choix, je serai toujours en A5, donc la macro ne se lance pas!...
 
Si tu as une idée...
 
Merci!


Message édité par Gusdabo le 29-06-2005 à 16:17:14
Reply

Marsh Posté le 09-08-2005 à 09:35:34    

Est-ce que c'est possible de remplacer une cellule (par exemple A1) par un ensemble de cellule (un range de cellule quoi) ??  
C'est à dire définir pour une plage donnée une opération ou une macro par exemple ?

Reply

Marsh Posté le 09-08-2005 à 10:39:04    

Oui, avec la fonction Intersect.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed