Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,

Je ne connait absolument rien en VBA je maitrise plus les formules sous excel mais là j'ai besoin d'aide. En effet dans mon fichier j'ai un onglet "Fiches ITK" qui est constitué de plusieurs TCD afin de synthétiser les informations pour une même "CULTURE"

J'aimerai en fait qu'à partir de la cellule C7, qui est une liste déroulante, que toute les TCD se synchronisent. car pour l'instant je suis obligé manuellement de changer les cellules C15, C33 et C56 pour avoir les bonnes info.

Pourriez vous m'indiquer la signification de chaque code afin que je comprenne le VBA à moins que l'information existe déjà mais je n'ai pas trouvé. J'ai testé quelques codes que j'ai trouvé sur internet. Mais après les avoir recopié dans "thisworkbook" rien ne fonctionne. Je ne sais même pas si je le fait correctement et si le l'enregistre.

Je suis ouvert avec toutes propositions pour informations complémentaires et pour essayer de progresser dans le domaine.
 

Pièces jointes

  • Gestrials v 2.1.xlsx
    220.4 KB · Affichages: 45

camarchepas

XLDnaute Barbatruc
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonsoir Scoubidou et bienvenue sur XLD,

La premiére chose à faire serait de nous donner le mot de passe ,

si tu utilises Excel 2010 , les segment sont là pour ça entre autre.

Bon , y'a plein d'onglets , hormi la base tous le reste c'est des TCD ?
 

scoubidou35

XLDnaute Occasionnel
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour Camarchepas

Désolé j'ai oublié d'ôter la protection des cellules. Le mot de passe est toujours le même : scoubidou.
En fait il n'y a qu'une partie du fichier il y a bien plus mais pour l'onglet "Fiches ITK" il ne va chercher les données sauf erreur de ma part, que dans les onglets que présent. Toute les feuilles du classeur excel seront protégé car il y a beaucoup de formule et je ne voudrais pas d'un incident.

Pour ma fiche ITK il y aura que les 3 TCDs plus quelques info que je rajouterai plus tard sous forme de formule ou de liens hypertext mais là je pense gérer.

J'ai essayé les segments mais comme les informations sont issu de 2 bases de données : BD ITK et BD phyto je n'arrive pas à synchroniser.

Je ne sais pas comment enregistrer une vba. J'ai fait divers test mais comme je vous le dit je n'y connais rien. c'est pour cela que demande de l'aide ;-)
 

JCGL

XLDnaute Barbatruc
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour à tous,
Salut CMP,

Peux-tu essayer ceci APRES avoir mis les TCDs côte à côte plutôt que l'un en dessous de l'autre.

Dans la feuille des TCDs :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$7" Then
        ActiveSheet.PivotTables("TCD5").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("TCD5").PivotFields("CULTURE").CurrentPage = Range("C7").Text
        ActiveSheet.PivotTables("TCD2").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("TCD2").PivotFields("CULTURE").CurrentPage = Range("C7").Text
        ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique9").PivotFields("CULTURE").CurrentPage = Range("C7").Text
    End If
End Sub

A+ à tous
 

scoubidou35

XLDnaute Occasionnel
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour JCGL

Ben impressionnant la rapidité d'action sur ce forum...C'est super je ne m'y attendais pas du tout.

Merci pour ton aide

Voici le code que j'ai utilisé car avec le tiens je ne sais pas pourquoi ca bug:


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0
If Target.Address(0, 0) = "C7" Then
ActiveSheet.PivotTables("TCD5").PivotFields("CULTURE"). _
CurrentPage = Range("C7").Value
ActiveSheet.PivotTables("TCD2").PivotFields("CULTURE"). _
CurrentPage = Range("C7").Value
ActiveSheet.PivotTables("TCD1").PivotFields("CULTURE"). _
CurrentPage = Range("C7").Value
Range("C7").Select
ActiveWorkbook.RefreshAll
End If
End Sub

Avec ce code ca marche mais j'ai un bug quand l'un des 3 tableaux n'a pas d'informations encore enregistré pour une année donnée. Il plante. Il y t'il un moyen pour que quand il n'y a pas l'année d'enregistré dans le filtre "culture" dans l'un des tableaux il ne mets rien ou juste un tableau vide avec uniquement la ligne d'intitulé?

Merci
 

JCGL

XLDnaute Barbatruc
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour à tous,

Merci de déposer ton fichier car visiblement il n'est pas identique au fichier d'origine.

A+ à tous
 

scoubidou35

XLDnaute Occasionnel
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Si si c'est le même fichier mais j'ai renommé le tableau croisé dynamique 9 en TCD1.
Le problème que j'ai c'est que je peux être amené à remplir le TCD5 avant le TCD2 ou inverse et donc me retrouver avec par exemple des info pour la culture X dans l'un ou l'autre des TCD. J'ai donc un TCD avec la Culture X et rien dans l'autre. J'aimerai que pour ce dernier le TCD affiché soit vide au lieu du bug qui me laisse par défaut la requête précédente. J'espère que mes explications sont clairs :-/
 

scoubidou35

XLDnaute Occasionnel
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Voici donc mon fichier de travail j'ai enlevé les protections, mis le fichier à jour avec le code dans la feuille 17.
Donc si on change la culture avec la cellule C7 quand j'ai des informations pour cette culture dans les 3 TCD tout va bien mais si l'un des tableaux n'a pas encore d'information saisi il plante.

Je ne sais pas comment faire. L'idéal serai que si un tableau n'a pas d'information il ne plante plus et met par exemple un TCD vide.

@+
 

Pièces jointes

  • Fichier ITK.xlsm
    222.2 KB · Affichages: 46

JCGL

XLDnaute Barbatruc
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour à tous,

Comme déjà écrit il faudrait mettre les TCDs côte à cote ou mettre plus de lignes entre deux TCDs...
Respecte aussi mon "travail" en laissant les lignes que j'ai déposées (les ClearAllFilters) : ce n'est pas pour faire joli...


VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$7" Then
    On Error Resume Next
        ActiveSheet.PivotTables("TCD5").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("TCD5").PivotFields("CULTURE").CurrentPage = Range("C7").Text
        ActiveSheet.PivotTables("TCD2").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("TCD2").PivotFields("CULTURE").CurrentPage = Range("C7").Text
        ActiveSheet.PivotTables("TCD9").PivotFields("CULTURE").ClearAllFilters
        ActiveSheet.PivotTables("TCD9").PivotFields("CULTURE").CurrentPage = Range("C7").Text
    End If
End Sub

A+ à tous
 

scoubidou35

XLDnaute Occasionnel
Re : Synchroniser plusieurs TCD de bases différentes mais à partir d'un même filtre

Bonjour à tous,

Merci JCGL de se pencher sur mon problème et en cas de doute de votre part de respecte entièrement votre "travail".
Pour la mise en forme je suis obligé de maintenir la superposition des TCD.

Maintenant j'ai mis votre nouveau code dans mon fichier que j'ai joins. Hélas le problème est toujours là.

Si on regarde dans le fichier, dans la feuille "FICHE ITK"
J'ai une cellule C7 qui me sert a sélectionner ma recherche.

Puis j'ai 3 TCD
si l'on regarde le premier TCD5 tout comme le dernier TCD9 dans le filtre j'ai plusieurs choix : Tous, Automne 2013, Automne 2014, Printemps 2014 et vide.

Et dans le TCD2 j'ai pour le moment : Tous, "", Automne 2012, Automne 2013, Automne 2014, Printemps 2012, Printemps 2013 (1 et 2) et Printemps 2014

Donc le code actuel fonctionne parfaitement si en C7 j'ai sélectionné Automne 2013 et 2014 ainsi qu'avec Printemps 2014 parce que j'ai des informations dans les 3 TCD

Mais où cela ne fonctionne pas c'est pour les autres car si par exemple je sélectionne Printemps 2012 j'ai les bonne info en TCD2 mais pour les 2 autres TCD il me met "tous" par défaut alors qu'il me faudrait mettre "vide".

J'espère, que j'ai été plus clair dans mon souhait et je vous le redis n'étant pas expert en VBA je respect vous et votre travail.

@+
 

Pièces jointes

  • fichier-itk corrigé.xlsm
    222.6 KB · Affichages: 37

Discussions similaires

Réponses
3
Affichages
279

Statistiques des forums

Discussions
312 193
Messages
2 086 058
Membres
103 110
dernier inscrit
Privé