Afficher les détails d'un TCD en permanence

J'ai un tableau croisé dynamique issue d'une base de données comportant des milliers de ligne et une vingtaine de colonnes

J'aurais besoin d'afficher en permanence dans un onglet les détails d'une cellule du tableau croisé dynamique (une cellule faisant partie de la ligne total général)

Manuellement je peux le faire en cliquant sur boutton droit, afficher les détails , ou avec le code vba (Selection.ShowDetail = True), ca m'ouvre bien un nouvel onglet avec ma base de données filtrés..

Comment faire pour que les détails de cet onglet s'actualise en permanence avec ttes modifications du Tableau croisé dynamique ??? Et l'actualisation doit tjrs se faire dans le meme onglet

Un fichier juste pr l'exemple ci joint

20testdetails.xlsx (13.98 Ko)

je voudrais que l'onglet qui s'ouvre quand on clique sur afficher les détails s'actualise en permanence à ttes modifications du TCD !

Bonjour

Fournir un exemple aussi pauvre et manifestement sans aucun rapport avec la réalité n'aide pas...

Il n'existe aucun lien entre l'extrait et le TCD donc pas d'actualisation possible.

Je repose donc les mêmes questions que dans la 1ère mouture de ta demande : entre 2 extractions qu'est ce qui change ?

bonjour, on a pas de choix, un détail est toujours dans une nouvelle feuille, alors, il faut copier&coller le contenu de cette feuille dans "Détails" ...

Sub TCD_Detail()
     With Sheets("Base de données et TCD").PivotTables(1).TableRange1
          .Cells(.Rows.Count, .Columns.Count).ShowDetail = True     'detail du Total
     End With

     Set c = ActiveSheet.Range("A1").CurrentRegion     'les détails dans une nouvelle feuille
     With Sheets("Détails")     'votre feuille "Details"
          .Range("A1").Resize(, c.Columns.Count).EntireColumn.Clear     'vider x colonnes
          c.Copy .Range("A1")     'copier les détails
     End With

     Application.DisplayAlerts = False
     ActiveSheet.Delete     'delete nouvelle feuille
     Application.DisplayAlerts = False

End Sub

Merci pour le code qui fait exactement ce que je recherchais !

nb j'affiche mon code retouché qui me permet d'avoir des courbes en fonction des filtres du tableau dynamique

Sub graphique()

     For Each Legraph In ActiveSheet.ChartObjects
     Legraph.Delete
     Next

    Sheets("Détails").Select
    Application.DisplayAlerts = False
    ActiveSheet.Delete     'delete nouvelle feuille
    Application.DisplayAlerts = True

     With Sheets("Résultats").PivotTables(1).TableRange1
          .Cells(.Rows.Count, .Columns.Count).ShowDetail = True     'detail du Total
     End With

    Range("AE1").Select
    ActiveCell.FormulaR1C1 = "Cumul"
    Range("AE2").Select
    ActiveCell.FormulaR1C1 = "=SUM(R2C20:RC[-11])"

    Sheets("Résultats").Select

    On Error Resume Next

    ActiveSheet.PivotTables("Tableau SNG").PivotCache.Refresh
    Range("M30").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("Détails").Columns("AE:AE")
    Application.DisplayAlerts = True

    On Error GoTo 0

End Sub

et dans this workbook

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    If ActiveSheet.ListObjects.Count = 0 Then Exit Sub
    If ExistWorkSheet("Détails") = False Then ActiveSheet.Name = "Détails"
End Sub
Function ExistWorkSheet(FEUILLE) As Boolean
'Principe : évalue la formule Feuille!A1 et vérifie si elle renvoie #REF
         ExistWorkSheet = Evaluate("ISREF('" & FEUILLE & "'!A1)")
End Function

voilà alors je ne sais pas si mon code est idéal mais en tt les cas ca marche parfaitement

Merci bcp à tt le monde, je bloquais completement pr afficher des courbes en fonction des filtres de mon tableau dynamique désormais ca marche... (je n'ai aps réussi d'une autre façon)

bonjour,

je ne sais pas exactement ce que vous voulez montrer dans le graphique, mais il faut éviter "Select" & "Activate" dans son code VBA

24testdetails.xlsb (34.19 Ko)
Sub graphique()
     Dim iDétails

     With Sheets("Résultats")     'dans cette feuille se passe presque tout, sauf les détails
          For Each Legraph In .ChartObjects     'les chartobjets dans cette feuille
               Legraph.Delete
          Next

          On Error Resume Next     'continuer si la feuille "Détails" n'existe pas
          Application.DisplayAlerts = False     'no messages
          Sheets("Détails").Delete     'delete l'ancienne feuille "Détails"
          Application.DisplayAlerts = True
          On Error GoTo 0

          With .PivotTables("Tableau SNG") 'ce tableau croisé dynamique dans Résultats
               .PivotCache.Refresh 'actualiser
               With .TableRange1 'dans cette plage
                    .Cells(.Rows.Count, .Columns.Count).ShowDetail = True     'detail de la cellule TOTAL
               End With
          End With

          ActiveSheet.Name = "Détails"     'renommer la nouvelle feuille créé par showdetail
          iDétails = Range("A1").CurrentRegion.Rows.Count - 1     '=nombre de lignes sans l'entête
          Range("AE1").Value = "Cumul"     'sans select
          Range("AE2").FormulaR1C1 = "=SUM(R2C20:RC[-11])"

          Application.Goto .Range("A1") 'retourner vers "Résultat"
          Application.CutCopyMode = False
          Set c = .Range("M20") 'cellule à gauche en haut du graphique
          With ActiveSheet.Shapes.AddChart(xlLine, c.Left, c.Top, 100, 100) 'créer dans cette cellule un graphique xlLine avec ces dimensions
               With .Chart
                      With .FullSeriesCollection(1) 'la première série
                         .Name = Sheets("Détails").Range("D1")     'nom de la série
                         .XValues = Sheets("Détails").Range("A2").Resize(iDétails)     'X-valeurs
                         .Values = Sheets("Détails").Range("D2").Resize(iDétails)     'Y-valeurs
                    End With
               End With
           End With
       End With
End Sub

Merci pr votre code modifié mais il bugg sur

With .FullSeriesCollection(1) 'la première série

bonjour,

votre Excel2010 ne connait pas encore ".FullSeriesCollection", si vous supprimez le "Full", donc ".Seriescollection", ca fonctionne ?

je vois aussi que le graphique est assez petit, vous pouvez changer le largeur et hauteur avec ces 2 derniers chiffres

With ActiveSheet.Shapes.AddChart(xlLine, c.Left, c.Top, 400, 300)

Merci bcp ça fonctionne

Rechercher des sujets similaires à "afficher details tcd permanence"