Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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.
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
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,
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.
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.
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.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.