JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES.
EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN
QUELQU 'UN POURRAIT IL M 'AIDER ?
MERCI
Exemple avec un tableau en colonne A:B en Feuil1
Insertion > Noms > Définir >
Nom dans le classeur : tu l'appelles par ex
"tablo" > Fait référence à :
=Feuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B))
Ceci permet de
"rendre dynamique" la plage du tableau
Ensuite tu fais ton TCD avec
l'assistant .
* dans l'étape 2, plage données > tu saisis = tablo
* dans
l'étape 3, disposition > tu positionnes tes champs .Options > nom >
tu saisis =
monTCD
Ensuite pour l'actualiser auto à la saisie :
Dans le module attaché à
la feuille (clic droit sur l'onglet > visualiser le
code) :
Private Sub
Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
ActiveSheet.PivotTables("monTCD").RefreshTable
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Denis,
voici une procédure qui fait le travail :
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub
Bonjour Denis,
voici une procédure qui fait le travail :
'---------------------------------
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
'---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" <DENIS@discussions.microsoft.com> a écrit dans le message de news: 5A7869DF-DE44-4414-BD08-E4EA30FD0DE3@microsoft.com...
JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES.
EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN
QUELQU 'UN POURRAIT IL M 'AIDER ?
MERCI
Exemple avec un tableau en colonne A:B en Feuil1
Insertion > Noms > Définir >
Nom dans le classeur : tu l'appelles par ex
"tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B))
Ceci permet de
"rendre dynamique" la plage du tableau
Ensuite tu fais ton TCD avec
l'assistant .
* dans l'étape 2, plage données > tu saisis = tablo
* dans
l'étape 3, disposition > tu positionnes tes champs .Options > nom >
tu saisis monTCD
Ensuite pour l'actualiser auto à la saisie :
Dans le module attaché à
la feuille (clic droit sur l'onglet > visualiser le
code) :
Private Sub
Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
ActiveSheet.PivotTables("monTCD").RefreshTable
End Sub
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub
DENIS
oui effectivement cela fonctionne très bien dans la même feuille... Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ? En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis > monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub
oui effectivement cela fonctionne très bien dans la même feuille...
Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ?
En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles
différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'---------------------------------
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
'---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" <DENIS@discussions.microsoft.com> a écrit dans le message de news: 5A7869DF-DE44-4414-BD08-E4EA30FD0DE3@microsoft.com...
JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES.
EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN
QUELQU 'UN POURRAIT IL M 'AIDER ?
MERCI
Exemple avec un tableau en colonne A:B en Feuil1
Insertion > Noms > Définir >
Nom dans le classeur : tu l'appelles par ex
"tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B))
Ceci permet de
"rendre dynamique" la plage du tableau
Ensuite tu fais ton TCD avec
l'assistant .
* dans l'étape 2, plage données > tu saisis = tablo
* dans
l'étape 3, disposition > tu positionnes tes champs .Options > nom >
tu saisis > monTCD
Ensuite pour l'actualiser auto à la saisie :
Dans le module attaché à
la feuille (clic droit sur l'onglet > visualiser le
code) :
Private Sub
Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
ActiveSheet.PivotTables("monTCD").RefreshTable
End Sub
oui effectivement cela fonctionne très bien dans la même feuille... Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ? En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis > monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub
michdenis
Bonjour Denis,
Essaie ceci :
Ceci devrait mettre à jour tous les TCD de toutes les feuilles du classeur.
ATTENTION : Ces TDC doivent avoir le même tableau source de données si ce n'est pas le cas... il faudra modifier la procédure en étant un peu plus précis.
Pas testé ! à toi de jouer !! '--------------------------------- Sub MiseAjour()
Dim Sh As Worksheet Dim Pt As PivotTable, Adr As String Dim Pi As PivotItem, Pf As PivotField
Application.ScreenUpdating = False 'La feuille et la plage de cellules contenant le tableau des données With Worksheets("Feuil1") ' à déterminer Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row) Adr = .Name & "!" & Rg.Address End With
For Each Sh In Worksheets For Each Pt In Sh.PivotTables 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 Next Next
End Sub '---------------------------------
Salutations!
"DENIS" a écrit dans le message de news: oui effectivement cela fonctionne très bien dans la même feuille... Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ? En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis > monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub
Bonjour Denis,
Essaie ceci :
Ceci devrait mettre à jour tous les TCD de toutes les feuilles du classeur.
ATTENTION : Ces TDC doivent avoir le même tableau source de données
si ce n'est pas le cas... il faudra modifier la procédure en étant un peu plus précis.
Pas testé ! à toi de jouer !!
'---------------------------------
Sub MiseAjour()
Dim Sh As Worksheet
Dim Pt As PivotTable, Adr As String
Dim Pi As PivotItem, Pf As PivotField
Application.ScreenUpdating = False
'La feuille et la plage de cellules contenant le tableau des données
With Worksheets("Feuil1") ' à déterminer
Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
Adr = .Name & "!" & Rg.Address
End With
For Each Sh In Worksheets
For Each Pt In Sh.PivotTables
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
Next
Next
End Sub
'---------------------------------
Salutations!
"DENIS" <DENIS@discussions.microsoft.com> a écrit dans le message de news: 3B668CB9-61D4-447B-A2D6-DE9A01A43EC6@microsoft.com...
oui effectivement cela fonctionne très bien dans la même feuille...
Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ?
En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles
différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'---------------------------------
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
'---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" <DENIS@discussions.microsoft.com> a écrit dans le message de news: 5A7869DF-DE44-4414-BD08-E4EA30FD0DE3@microsoft.com...
JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES.
EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN
QUELQU 'UN POURRAIT IL M 'AIDER ?
MERCI
Exemple avec un tableau en colonne A:B en Feuil1
Insertion > Noms > Définir >
Nom dans le classeur : tu l'appelles par ex
"tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B))
Ceci permet de
"rendre dynamique" la plage du tableau
Ensuite tu fais ton TCD avec
l'assistant .
* dans l'étape 2, plage données > tu saisis = tablo
* dans
l'étape 3, disposition > tu positionnes tes champs .Options > nom >
tu saisis > monTCD
Ensuite pour l'actualiser auto à la saisie :
Dans le module attaché à
la feuille (clic droit sur l'onglet > visualiser le
code) :
Private Sub
Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
ActiveSheet.PivotTables("monTCD").RefreshTable
End Sub
Ceci devrait mettre à jour tous les TCD de toutes les feuilles du classeur.
ATTENTION : Ces TDC doivent avoir le même tableau source de données si ce n'est pas le cas... il faudra modifier la procédure en étant un peu plus précis.
Pas testé ! à toi de jouer !! '--------------------------------- Sub MiseAjour()
Dim Sh As Worksheet Dim Pt As PivotTable, Adr As String Dim Pi As PivotItem, Pf As PivotField
Application.ScreenUpdating = False 'La feuille et la plage de cellules contenant le tableau des données With Worksheets("Feuil1") ' à déterminer Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row) Adr = .Name & "!" & Rg.Address End With
For Each Sh In Worksheets For Each Pt In Sh.PivotTables 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 Next Next
End Sub '---------------------------------
Salutations!
"DENIS" a écrit dans le message de news: oui effectivement cela fonctionne très bien dans la même feuille... Mais c est possible d 'avoir la même chose sur 2 ou plusieurs feuilles ? En fait à partir d 'un tableau je crée 6 TCD situé dans des feuilles différentes.
merci
Bonjour Denis,
voici une procédure qui fait le travail :
'--------------------------------- 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 '---------------------------------
Et à cette adresse, tu peux retrouver un classeur exemple de AV qui correspond à la méthode que tu cites.
http://cjoint.com/?jDpDcEEPAi
Salutations!
"DENIS" a écrit dans le message de news: JE SOUHAITE ACTUALISER MON TCD LORS DE LA SAISIE DES DONNEES. EN ALLANT SUR QUELQUES SITES J AI FINI PAR TROUVER CECI MAIS EN VAIN QUELQU 'UN POURRAIT IL M 'AIDER ? MERCI
Exemple avec un tableau en colonne A:B en Feuil1 Insertion > Noms > Définir > Nom dans le classeur : tu l'appelles par ex "tablo" > Fait référence à :
þuil1!$A$1:DECALER(Feuil1!$B$1;0;0;NBVAL(Feuil1!$B:$B)) Ceci permet de "rendre dynamique" la plage du tableau Ensuite tu fais ton TCD avec l'assistant . * dans l'étape 2, plage données > tu saisis = tablo * dans l'étape 3, disposition > tu positionnes tes champs .Options > nom > tu saisis > monTCD Ensuite pour l'actualiser auto à la saisie : Dans le module attaché à la feuille (clic droit sur l'onglet > visualiser le code) : Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then ActiveSheet.PivotTables("monTCD").RefreshTable End Sub