Rapport de message :*
 

Re: Optimiser mes macros en VBA

Titre du sujet : Re: Optimiser mes macros en VBA
par Mth le 06/09/2010 22:44:33

Bonsoir zorbrax,

Tu as peut-être fait une mauvaise manip, mais de loin comme ça on ne peut pas savoir. Du coup, j'ai tenté de reconstituer un TCD à partir de ton fichier Excel et de ton Doc Word avec une zone nommée.

Tu la trouveras dans le fichier joint, elle s'appelle ZoneTCD, et la formule qui la calcule est (n'oublie pas les signes $):
=DECALER(Feuil1!$E$1;;;NBVAL(Feuil1!$E:$E);66)

Ensuite j'ai créé un TCD dans l'onglet TCD1 qui je l'espère ressemble à peu près aux tiens, et j'ai indiqué cette zone dans la source de données, comme ceci:
 



Ensuite, j'ai mis 2 boutons dans l'onglet Menu, un PACA et un Rhône Alpes, qui dirigent tous deux vers l'onglet TCD1, mais modifient le filtre de la région, en utilisant cette macro simple par exemple pour le bouton PACA:

Sub PACA()

    Sheets("TCD1").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Régions"). _
        CurrentPage = "Région PACA"
   
End Sub
Cette façon de faire permet de n'avoir qu'un seul TCD au lieu de 9 (reste à voir ceci dit si cela correspond à l'utilisation de ton fichier ou pas ...)

Pour continuer, tu verras que j'ai créé une autre zone nommée dynamique, NumEntrepot:
=DECALER(Correspondances!$K$2;;;NBVAL(Correspondances!$K:$K)-1;)

 J'utilise cette zone dans les formules de la colonne M de l'onglet Feuil1 afin de ne pas avoir à utiliser l'itégralité des colonnes K à M sur 65000 lignes:

=DECALER(Correspondances!$K$1;EQUIV(L2;NumEntrepot;0);2;;)

Voilà zorbrax, j'espère que ces éléments pourront t'aider, si non dis nous ...

Bonne soirée et à bientôt,

Mth