[RESOLU] Mise à jour TCD en vba

Crisky

XLDnaute Junior
Bonjour,

J'ai un fichier excel avec 7 feuilles qui sont chacunes intitulées avec un jour de la semaine
Sur ces 7 feuilles j'ai un tableau identique avec des données differentes

Sur une 8eme Feuille j'ai actuellement mon TCD qui cherche les données sur la feuille du lundi

Sur la feuille ou est le TCD :

J'ai créé une liste de validation avec chaque jour de la semaine

J'aimerai à l'aide d'un bouton qui lance une macro :
rafaichir le TCD avec n'importe quel jour de la semaine en ayant choisi auparavant le jour dans la liste de validation

en vba je sais rafraichir un tcd mais je ne sais pas comment lui dire de chercher les données sur la feuille qui correspond au choix de la liste de validation

Merci d'avance pour votre aide
 
Dernière édition:

Crisky

XLDnaute Junior
Re : Mise à jour TCD en vba

Bonjour DoubleZero

merci pour ta reponse c'est exactement ce que je voulais dans la forme
en parcourant le code j'ai compris ou tu voulais en venir mais je ne suis qu'un jeune padawan en vba et du coup le message d'erreur que ta creation me renvoie me laisse dubitatif

A savoir que je suis sur Excel 2002 (je viens de verifier je croyais 2003 :mad:)

Le message : Erreur de compilation (variable non definie)

Et dans le code il me surligne les zones suivantes, je ne sais pas quoi mettre à la place.
Si je supprime les zones j'ai la msgbox :choisissez un onglet valide

Merci pour ton aide


Sub TCD_du_jour_choisi()
Dim TCD As PivotTable
Dim jour As Variant
Application.ScreenUpdating = False
For Each TCD In ActiveSheet.PivotTables
TCD.TableRange2.Clear
Next

On Error GoTo fin

Set jour = Worksheets(Range("TCD!j1").Value)
jour.Activate
Range("a1").CurrentRegion.Name = "Plage"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Plage", Version:=xlPivotTableVersion12).CreatePivotTable TableDestination _
:="TCD!R1C1", TableName:="Mon_TCD", DefaultVersion:= _
xlPivotTableVersion12
Sheets("TCD").Select
Range("A1").Select
ActiveSheet.PivotTables("Mon_TCD").AddDataField ActiveSheet. _
PivotTables("Mon_TCD").PivotFields("DONNEES1"), _
"Nombre de DONNEES1", xlSum
ActiveSheet.PivotTables("Mon_TCD").AddDataField ActiveSheet. _
PivotTables("Mon_TCD").PivotFields("DONNEES2"), _
"Nombre de DONNEES2", xlSum
ActiveSheet.PivotTables("Mon_TCD").AddDataField ActiveSheet. _
PivotTables("Mon_TCD").PivotFields("DONNEES3"), _
"Nombre de DONNEES3", xlSum
ActiveSheet.PivotTables("Mon_TCD").AddDataField ActiveSheet. _
PivotTables("Mon_TCD").PivotFields("DONNEES4"), _
"Nombre de DONNEES4", xlSum
ActiveSheet.PivotTables("Mon_TCD").AddDataField ActiveSheet. _
PivotTables("Mon_TCD").PivotFields("DONNEES5"), _
"Nombre de DONNEES5", xlSum

With ActiveSheet.PivotTables("Mon_TCD").PivotFields("NOM")
.Orientation = xlRowField
.Position = 1
End With

ActiveWorkbook.Names("Plage").Delete
Range("a3").CurrentRegion.Borders.Value = 1
Range("j1").Select

Exit Sub

fin:
MsgBox "Veuillez sélectionner un onglet valide !"
Application.ScreenUpdating = True
End Sub
 

Crisky

XLDnaute Junior
Re : Mise à jour TCD en vba

Et dans le code il me surligne les zones suivantes, je ne sais pas quoi mettre à la place.
Si je supprime les zones j'ai la msgbox :choisissez un onglet valide

J'ai bien supprimé en faisant attention aux virgules et parentheses.
La macro fonctionne bien mais je me retrouve avec le la message box de la macro
Je ne vois pas ou est l'erreur dans le code
 

Crisky

XLDnaute Junior
Re : Mise à jour TCD en vba

Merci chris

apres quelques modifs cela fonctionne parfaitement
j'ai rajouter des declarations de variables et des attribuer des donnees aux variables
et j'ai placé le code dans la feuille, je ne sais pas si c'est la meilleure solution mais cela fonctionne

merci à tous

Crisky
 

chris

XLDnaute Barbatruc
Re : Mise à jour TCD en vba

Bonjour

Il y a 2 codes dont 1 dans la feuille et les variables étaient déjà déclarées : les seules adaptations à faire sont la référence à J1 (liste déroulante) et la référence à "A1" dans les onglets des jours s'ils ne commencent pas en A1.

Sinon tout est dynamiquement calculé...
 

Crisky

XLDnaute Junior
Re : Mise à jour TCD en vba

Je n'ai pas trouvé dans ton code l'endroit ou tu affectes à 'jour' la valeur de la cellule de validation

Et Range("A1").CurrentRegion : je mettais la ref de la cellule qui se trouve en haut a gauche de mon tableau pour lequel je voulais un dynamique, mais il ne voulais rien savoir

Alors j'ai mis la le Range sui correspondait au tableau et cela fonctionne tres bien

Je crois que pour la fonction CurrentRegion il y a des propriétés particulieres mais je ne mes suis pas penché sur le probleme vu que cela fonctionne bien

Si j'en ai besoin plus tard je regarderais de plus pres la fonction

Merci

Crisky
 

chris

XLDnaute Barbatruc
Re : Mise à jour TCD en vba

Bonjour
Je n'ai pas trouvé dans ton code l'endroit ou tu affectes à 'jour' la valeur de la cellule de validation

Et Range("A1").CurrentRegion : je mettais la ref de la cellule qui se trouve en haut a gauche de mon tableau pour lequel je voulais un dynamique, mais il ne voulais rien savoir

Alors j'ai mis la le Range sui correspondait au tableau et cela fonctionne tres bien

Je crois que pour la fonction CurrentRegion il y a des propriétés particulieres mais je ne mes suis pas penché sur le probleme vu que cela fonctionne bien

Si j'en ai besoin plus tard je regarderais de plus pres la fonction

Merci

Crisky

L'affectation est dans le module de la feuille TCD : Target correspond à la cellule de validation

CurrentRegion c'est l'équivalent d'un CTRL * : cela sélectionne la plage jusqu'à ce qu'il rencontre une ligne ou une colonne entièrement vide dans les 4 directions.
 

Discussions similaires

Réponses
5
Affichages
218

Statistiques des forums

Discussions
312 355
Messages
2 087 552
Membres
103 588
dernier inscrit
Tom59300Tom