pb mise à jour simultanée plusieurs tcd

domtom38

XLDnaute Nouveau
Bonjour au fil,

J'ai un souci avec un fichier excel 2007 ds lequel se trouve 3 tcd.
ces 3 tcd ont commefiltre de rapport principal le numéro du mois.
Ce que j'aimerais trouver , c'est lorsque je modie le numéro du mois
de mon premier tcd, cela modifie automatiquement les 2 autres tcd.
Ou alors un bouton macro qui demanderais le numéro du mois mais ca je ne sais pas faire en vba.

merci d'avance pour vos solutions

Dom
 

Pièces jointes

  • RR.zip
    38.4 KB · Affichages: 37
  • RR.zip
    38.4 KB · Affichages: 36
  • RR.zip
    38.4 KB · Affichages: 33

mth

XLDnaute Barbatruc
Re : pb mise à jour simultanée plusieurs tcd

bonsoir,

Ci-joint un essai, en espérant que cela t'aidera,

@ +

mth
 

Pièces jointes

  • RR.zip
    48.6 KB · Affichages: 76
  • RR.zip
    48.6 KB · Affichages: 77
  • RR.zip
    48.6 KB · Affichages: 83

domtom38

XLDnaute Nouveau
Re : pb mise à jour simultanée plusieurs tcd

Bonjour et merci à mth

c'est exactement ce qu'il me fallait; cela va m'aider grandement.
Par contre , comme j'y connais rien en vba, comment dois je faire pour mettre en place cette liste déroulante et les codes qui la commandent?
Après , il me suffira de régler un problème de rafraichissement des données pour les colonnes norm et rec.
merci encore

Bon Dimanche à tous


bonsoir,

Ci-joint un essai, en espérant que cela t'aidera,

@ +

mth
 

mth

XLDnaute Barbatruc
Re : pb mise à jour simultanée plusieurs tcd

Bonjour domtom38,

Pour la liste déroulante: tu te places sur ta cellule en G1, puis dans le menu tu cliques sur "Données", puis validation de données.
Dans la fenêtre qui s'ouvre tu choisis l'onglet options, puis Autoriser "Liste" et dans sources j'ai saisi les 12 nombres des 12 mois de l'année, séparés par un ; puis tu termines en cliquant sur ok. Là, ta liste déroulante est installée.



Pour placer le code:

1: sélection de l'onglet "TCD_RR2008", clic doit sur le nom de l'onglet puis choisir "Visualiser le code".

Là, tu vois apparaître le code qui est attaché à l'onglet:​
Code:
[LEFT]Private Sub Worksheet_Change(ByVal Target As Range)
Dim Choix As Byte
If Target.Address = "$G$1" Then
 Choix = Target.Value
 Sheets("TCD_RR2008").PivotTables("Tableau croisé dynamique1").PivotFields("MOIS").CurrentPage = Choix
End If
End Sub[/LEFT]

Private Sub Worksheet_Change(ByVal Target As Range) signifie que cette procédure va se lancer à chaque fois qu'il y aura une modification dans cet onglet​

Dim Choix As Byte est une variable créée pour l'occasion qui va servir à capturer la valeur de la cellule G1​

If Target.Address = "$G$1" Then la procédure ne s'intéresse qu'à la cellule G1, les autres modifications dans les autres cellules ne déclencheront pas la procédure​

Choix = Target.Value choix est alimenté par la nouvele saisie de la cellule G1​

Sheets("TCD_RR2008").PivotTables("Tableau croisé dynamique1").PivotFields("MOIS").CurrentPage = Choix: Tableau croisé dynamique1 est le nom du TCD de cet onglet (pour le voir tu cliques sur ton TCD puis sur "Option du tableau croisé dynamique", et tu vois son nom dans la fenêtre qui s'affiche)​

Mois est le nom du champ qui nous intéresse, tu vois son nom exact dans la liste des champs de ton TCD)​

Pour placer cette procédure dans ton fichier d'origine, tu copies le code ci dessus, et par le même chemin (clic droit/visauliser le code) tu le copie dans ton fichier.​

2: sélection de l'onglet "TCD_Normale", Même procédure, où tu copie cette fois ce code​
Code:
[LEFT]Private Sub Worksheet_Activate()
Dim Choix As Byte
Choix = Sheets("TCD_RR2008").Range("G1")
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("NUM_MOIS"). _
     CurrentPage = Choix
End Sub[/LEFT]

Private Sub Worksheet_Activate() signifie que la procédure va se lancer à chaque fois que tu vas activer ton onglet​


2: sélection de l'onglet "TCD_record", tu procèdes de la même manière avec la procédure "activate" comme dans l'onglet précédant.​

Voilà, j'espère que cela te convient pour t'y retrouver, et te souhaite une bonne journée,​

mth​
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : pb mise à jour simultanée plusieurs tcd

Re,

je m'aperçois que je suis passée à coté te cette question:

Citation: Après , il me suffira de régler un problème de rafraichissement des données

Peut-être que dans les procédures "Deactivate" de tes onglets "Recordmens" ou "Normale700" ou encore "RR2008", ou dans les procédures "Activate" de tes onglets TCD, peux-tu placer cette instruction?

ActiveWorkbook.RefreshAll

Elle permet d'actualiser d'un coup toutes les données de tout le classeur.

@ +

mth
 

domtom38

XLDnaute Nouveau
Re : pb mise à jour simultanée plusieurs tcd

Bonjour Mth,

Merci pour le tuto sur la site déroulante et les macros qui vont bien; j'aurais jamais trouvé cela tt seul...J'ai réussi à l'installer ds mon fichier complet et cela fonctionne.
Pour le rafraichissement j'ai essayé ta solution mais cela prend un peu trop de temps. Je lme suis apercu par contrequ'en chaneant de feuille et en revanant sur ma feuille maître; le rafraîchissement s'était opéré.
J'ai donc rajouté ds le code de la feuille TCD_RR2008.
Sheets("TCD_record").Select
Sheets("TCD_Normale").Select
Sheets("TCD_RR2008").Select
et du coup cela me met tous les champs issus des 3 tcd à jour.

Merci encore et bonne semaine.
Dom



Re,

je m'aperçois que je suis passée à coté te cette question:



Peut-être que dans les procédures "Deactivate" de tes onglets "Recordmens" ou "Normale700" ou encore "RR2008", ou dans les procédures "Activate" de tes onglets TCD, peux-tu placer cette instruction?

ActiveWorkbook.RefreshAll

Elle permet d'actualiser d'un coup toutes les données de tout le classeur.

@ +

mth
 

Discussions similaires

Statistiques des forums

Discussions
312 610
Messages
2 090 208
Membres
104 452
dernier inscrit
hamzamounir