Développer les lignes d'un TCD sous conditions

Bonjour à tous,

J'utilise plusieurs TCD dans le cadre de mon activité.

J'essaie tant bien que mal, de développer des améliorations en vba bien que je n'ai aucune notion d'informatique.

Soyez svp indulgents même si ma question peut vous paraître simple

Mon tableau est organisé par dates (Mois puis semaines). Il y a un 3ème niveau de ligne appelé OS.

Je souhaiterais pouvoir développer les lignes "Semaines" de mon tableau, mais seulement lorsque les lignes "OS" ne sont pas vides.

J'ai pour l'instant réussi à développer les lignes "Mois". Dans l'exemple j'ai décidé de masquer les mois à partir de juillet car je ne souhaite afficher que le premier semestre.

Je pourrais aussi développer l'ensemble des lignes "Semaines", mais comme la plupart sont vides, cela n'a pas d'intérêt.

Voici le descriptif de mon code :

Sub Synthèse_1()

Dim TCD As PivotTable

       ' Affiche le détail et supprime les mois non désirés

    For Each TCD In ActiveSheet.PivotTables
        TCD.PivotFields("Mois").ShowDetail = True
        With TCD.PivotFields("Mois")
            .PivotItems("Juillet").Visible = False
            .PivotItems("Août").Visible = False
            .PivotItems("Septembre").Visible = False
            .PivotItems("Octobre").Visible = False
            .PivotItems("Novembre").Visible = False
            .PivotItems("Décembre").Visible = False
        End With

     Next

Je vous joins 3 photos :

  • La première montre le tableau à l'état standard
  • La seconde c'est ce que je voudrais obtenir
  • La troisième correspond à ce que j'aurai en développant toutes les semaines (donc que je ne veux pas).

Merci par avance pour votre aide !

Maxime

Bonjour,

Ta question a un caractère original .. qui la rend sympathique ...

Tu pourrais envisager une boucle qui teste tes 52 semaines pour déterminer si tu les affiches ... ou pas ...

Bonjour James,

Merci pour ton retour.

Comment ferais-tu le test ? Avec un For / Next ?

Je viens de me rendre compte que les photos ne se sont pas chargées. Je les remets, ça peut éventuellement aider à mieux comprendre.

capture1 capture2 capture3

Merci !

Bonjour Maxime,

Je t'avoue que je n'ai jamais croisé ce problème ...

Peux-tu joindre ton fichier ... car malheureusement des photos restent des objets inertes ... et inutilisables ...

Voici le fichier !

4tpe-slb.xlsm (75.27 Ko)

Attention j'enregistre le fichier en Excel et PDF dans un dossier sur le réseau interne. Certaines macros risquent de ne pas fonctionner.

Merci d'avance !

Re,

Merci pour le fichier ...

Dès que j'ai un petit moment ... je vais creuser ton sujet ...

Bonjour,

Bon, gérer du vide avec en sus l'utilisation de tableaux structurés !?

Une proposition qui a pour but de consolider les données pour un nouveau TCD.

ALT F8, exécuter la procédure CreateTable.

A te relire.

Cdlt.

3tpe-slb.xlsm (76.17 Ko)

Bonjour Jean-Eric,

Merci pour ton retour.

Je sais bien que laisser des cases vides dans mon tableau structuré n'est pas terrible.

Le problème, c'est que j'ai besoin aussi de l'information "jours travaillés" dans ma synthèse pour le client.

Ton tableau est bien, mais il ne reprend pas les jours travaillés. Or il me faut le détail pour chaque semaine...

Merci

Re,

Tu dois préciser l'objectif que tu veux :

Je souhaiterais pouvoir développer les lignes "Semaines" de mon tableau, mais seulement lorsque les lignes "OS" ne sont pas vides.

J'ai crée un tableau avec ce que j'ai compris pour envisager un TCD.

Tu auras compris qu'il faut faire le ménage dans tes données (Crap data).

Que faudrait il réellement consolider et sous quelle forme ?

Cdlt.

Re,

Désolé si je n'ai pas été assez clair.

L'idée correspond aux photos que j'ai postées.

Je souhaiterais avoir un tableau récap, qui synthétise pour chaque semaine le nombre de jours travaillés ainsi que le montant des TPE (Travaux et Prestations Exceptionnels).

Si un montant est présent dans la case TPE, il me faut le numéro d'OS associé.

Le problème est que mon TCD m'affiche "(vide)" dès que je n'ai pas de numéro d'OS. Je souhaiterais donc que lorsque la ligne est (vide), elle reste réduite dans le TCD.

En gros il faudrait que les étiquettes "Semaines" du TCD ne soient développées seulement lorsque les étiquettes "OS" ne sont pas vides. En revanche, il faut que les étiquettes "Mois" soient toutes développées afin d'avoir en visu le nombre de jours travaillés.

Je ne sais pas si c'est plus clair. Je pense que les photos peuvent aider.

Merci,

Re,

Tu pourrais tester la macro suivante :

Sub Developper()
' Développer sous condition  :  Tableau croisé dynamique1
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

    Set pt = ActiveSheet.PivotTables("Tableau croisé dynamique1")
    On Error Resume Next
    For Each pf In pt.VisibleFields
        pf.ShowDetail = True
    Next pf

    For Each pi In pt.PivotFields("SEMAINE").PivotItems
        If pi.DataRange.Offset(1, -1).Value = "(vide)" Then pi.ShowDetail = False
    Next pi

End Sub

En espèrant que cela t'aide

Re,

Merci pour ton aide, cela fonctionne à merveille !

Il faut juste modifier l'offset en (0, -1).

Encore merci !

Content que cela puisse t'aider ..

Merci pour tes remerciements

Rechercher des sujets similaires à "developper lignes tcd conditions"