Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mise a jour de la source d'un TDC

5 réponses
Avatar
Yoyo
Bonjour =E0 tous et merci de me lire.

Voil=E0 j'ai plusieurs TDC faisant r=E9f=E9rence =E0 une source de donn=E9e
se trouvant en feuille("donn=E9es globales")
cette source se trouve en colonne A =E0 BA sur n ligne.
Comme je met =E0 jour cette base donn=E9e r=E9guli=E8rement le nombre de
ligne de celle-ci varie. c'est pourquoi je voudrais cr=E9er un bouton
qui me mette =E0 taille de ma source sachant que je ne peut pas
s=E9lectionner toute la feuille vue que dans mes tdc je groupe mes
dates.
je suis capable de savoir le num=E9ros de la derni=E8re ligne avec ce
code :

> Range("A1").select
>Selection.End(xlDown)
>l =3D Selection.Row


Par contre je n'arrive pas cr=E9er ma plage source de mon TDC du style
Range("A1","BA" & l)
J'ai essayer plusieurs code trouver sur le forum mais lorsque je
compile il me trouve un erreur =E0 cette ligne.

Set P =3D Worksheets("donn=E9es globales").PivotTables(1)

Auriez vous un code pouvant r=E9pondre =E0 mon probl=E8me ou m'expliquer
pourquoi cela ne fonctionne pas?

Je vous remercie d'avance

Yo

5 réponses

Avatar
papou
Bonjour
La solution peut consister à définir un nom dynamique pour ta plage de
données.
Dans ton cas, par exemple :
Insertion, Nom, Définir
Nom : Donnees
Fait référence à : =INDIRECT("A1:BA" & NBVAL(Feuil1!A:A))

Puis d'utiliser ce nom pour faire référence à la source de ton TCD.

Cordialement
Pascal

"Yoyo" a écrit dans le message de news:


Bonjour à tous et merci de me lire.

Voilà j'ai plusieurs TDC faisant référence à une source de donnée
se trouvant en feuille("données globales")
cette source se trouve en colonne A à BA sur n ligne.
Comme je met à jour cette base donnée régulièrement le nombre de
ligne de celle-ci varie. c'est pourquoi je voudrais créer un bouton
qui me mette à taille de ma source sachant que je ne peut pas
sélectionner toute la feuille vue que dans mes tdc je groupe mes
dates.
je suis capable de savoir le numéros de la dernière ligne avec ce
code :

Range("A1").select
Selection.End(xlDown)
l = Selection.Row



Par contre je n'arrive pas créer ma plage source de mon TDC du style
Range("A1","BA" & l)
J'ai essayer plusieurs code trouver sur le forum mais lorsque je
compile il me trouve un erreur à cette ligne.

Set P = Worksheets("données globales").PivotTables(1)

Auriez vous un code pouvant répondre à mon problème ou m'expliquer
pourquoi cela ne fonctionne pas?

Je vous remercie d'avance

Yo

Avatar
Yoyo
Merci Pascal pour ton aide

Je vais tester ta solution elle me semble très bien adapter

Bonne journée Yohann
Avatar
Yoyo
Merci Pascal pour ton aide

Je vais tester ta solution elle me semble très bien adapter

Bonne journée Yohann
Avatar
michdenis
Bonjour Yoyo,

Si tu veux la mise à jour par code et tenir compte du fait
que ta plage source de données puisse être redimensionnée,
essaie ceci :

'------------------------------------
Sub MiseAjour()

Dim Pt As PivotTable, Adr As String
Dim Pi As PivotItem, Pf As PivotField

Application.ScreenUpdating = False
With Worksheets("Feuil1")
Set rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
Adr = .Name & "!" & rg.Address
Set Pt = Worksheets("Feuil1").PivotTables(1)
End With
With Pt
.ManualUpdate = False
.PivotCache.SourceData = Adr
.RefreshTable
For Each Pf In Pt.PivotFields
For Each Pi In Pf.PivotItems
If Pi.RecordCount = 0 And _
Not Pi.IsCalculated Then
Pi.Delete
End If
Next
Next
.ManualUpdate = True
.Update
End With

End Sub
'------------------------------------


Salutations!


"Yoyo" a écrit dans le message de news:

Bonjour à tous et merci de me lire.

Voilà j'ai plusieurs TDC faisant référence à une source de donnée
se trouvant en feuille("données globales")
cette source se trouve en colonne A à BA sur n ligne.
Comme je met à jour cette base donnée régulièrement le nombre de
ligne de celle-ci varie. c'est pourquoi je voudrais créer un bouton
qui me mette à taille de ma source sachant que je ne peut pas
sélectionner toute la feuille vue que dans mes tdc je groupe mes
dates.
je suis capable de savoir le numéros de la dernière ligne avec ce
code :

Range("A1").select
Selection.End(xlDown)
l = Selection.Row



Par contre je n'arrive pas créer ma plage source de mon TDC du style
Range("A1","BA" & l)
J'ai essayer plusieurs code trouver sur le forum mais lorsque je
compile il me trouve un erreur à cette ligne.

Set P = Worksheets("données globales").PivotTables(1)

Auriez vous un code pouvant répondre à mon problème ou m'expliquer
pourquoi cela ne fonctionne pas?

Je vous remercie d'avance

Yo

Avatar
Yoyo
Bonjour michdenis,

Merci d'avoir pris le temps de me r^épondre, je vais tester ton code.

Sinon Pascal définir une zone de nom comme plage de donnée marche
bien sauf si je supprime des lignes la plage ne se réduit pas.

Merci à tous les deux pour votre aide

cordialement Yohann