Dates en colonnes (et pas en lignes) > Cmt les regrouper en mois dans 1 TCD

Bonjour,

J'ai un soucis à créer un groupement (par mois/semaine) dans un TCD.
Je vous met un fichier avec un exemple simple sur janvier et février en PJ.

Ma base de données contient :
- Une colonne (Projet)
- Une colonne (métier)
- 365 colonnes de dates courtes (qui représentent 365 jours de l'année)
- Charge travaillée pour chaque métier pour chaque projet par jour

(Voir onglet 1 dans fichier exemple en pj)

Lorsque je fais un TCD, j'obtiens des colonnes avec mes 365 jours, et il m'est impossible de les regrouper en mois ou en semaine. Je n'ai pas su comment régler ce problème.

(Voir onglet TCD dans fichier exemple en pj)

Sinon, j'ai également essayé de mettre toutes les dates dans une seule colonne "Date" comme ceci :
- Une colonne (Projet)
- Une colonne (Métier)
- Une colonne (Date)
- Une colonne (Charge)

Ca marche bien, je peux regrouper les dates car elles sont toutes mises dans la colonne (Date) en lignes, mais mon fichier contient ENORMEMENT de données, et il est vraiment pas du tout pratique de passer mon temps à copier coller les données pour chaque date.

Svp, avez-vous une solution pour remédier à cela ? Aidez-moi :(

Bonjour à tous,

Une proposition via Power Query (complément à télécharger pour votre version Excel. Nativement intégré à partir d'Excel 2016.....).

Passer par Power Query permet de transformer votre source en table synthétisable via un TCD.

Je pense que j'aurais organisé l'onglet 1 différemment. Pour les colonnes "Date" "Plombier" "Menuisier" etc,. Avec un champs date excel sait grouper les dates selon les semaines , les mois, et les années dans les TCD.
Désolé je n'avais pas vu la proposition de JFL

JFL : Je vous remercie pour votre retour. Malheureusement mon ordinateur est un PC de travail et je dois avoir les droits admin pour chaque téléchargement (jamais accepté -_- !). Sinon avec mon perso je n'ai plus la licence Microsoft :(

fcyspm30 : Si je comprends bien ce que vous proposez est bien ce que j'ai voulu faire dans mon dernier onglet, mais c'est complètement fastidieux, j'ai trop de lignes dans mon vrai document, je dois copier coller toutes les dates à chaque fois pour chaque projet et chaque métier, cela me prendra une éternité.

Je ne peux pas changer l'organisation du tableau car c'est une extraction d'un logiciel.

:(

Bonjour de nouveau,

Je ne peux pas changer l'organisation du tableau car c'est une extraction d'un logiciel.

:(

Un spécialiste VBA vous permettra certainement , via un code approprié, de transformer votre tableau initial en plage exploitable via un TCD....

Bon courage !

Bonjour,
Une réponse VBA pour travailler avec un TCD.
Cdlt.

Public Sub Main()
Dim wb As Workbook
Dim wsData As Worksheet, wsTable As Worksheet
Dim tbl As Variant, arr() As Variant
Dim lo As ListObject
Dim lastCol As Long, lastRow As Long, I As Long, J As Long, k As Long
Dim r As Range

    Set wb = ThisWorkbook
    Set wsData = wb.Worksheets("Onglet 1")
    Set wsTable = wb.Worksheets("Onglet 2")
    Set lo = wsTable.Range("t_Données").ListObject

    With lo
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set r = .InsertRowRange.Cells(1)
    End With

    With wsData
        lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        tbl = .Cells(1).Resize(lastRow, lastCol)
    End With

    For I = 2 To UBound(tbl)
        For J = 3 To UBound(tbl, 2)
            If tbl(I, J) <> "" Then
                ReDim Preserve arr(4, k + 1)
                arr(0, k) = tbl(I, 1)
                arr(1, k) = tbl(I, 2)
                arr(2, k) = CLng(tbl(1, J))
                arr(3, k) = tbl(I, J)
                k = k + 1
            End If
        Next J
    Next I

    If k > 0 Then r.Resize(k, 4).Value = Application.Transpose(arr)

    wsTable.PivotTables(1).RefreshTable

End Sub

Jean-Eric > Merci infiniment, c'est exactement ce que je voulais. Maintenant il va falloir que je fasse l'exercice en transposant ça sur ma vraie base. Pourrai-je vous contacter en cas de blocage ?

Merci encore une fois.

Bonjour à tous

...Avec un champs date excel sait grouper les dates selon les semaines , les mois, et les années dans les TCD

Si on utilise un regroupement par mois, il n'est pas possible de regrouper par semaine sauf à dupliquer la date dans la source ou a y avoir calculé le numéro de semaine.

Une solution utilisant

  • VBA pour dupliquer par un filtre avancé le tableau source (nommée Data par formule) puis créer une unique colonne Métier-Projet remplaçant les 2 colonnes
  • un TCD bâti sur la copie nommée DataS avec le vieil assistant TCD

Quitte à utiliser VBA on pourrait aussi décroiser une copie du tableau et calculer la semaine mais j'ai fait au plus simple...

Que des entreprises utilisent des versions vieilles de 8 ans est un choix mais de là à refuser d'installer les add on Microsoft qui bien que gratuits permettraient de gagner du temps et donc de l'argent, la logique m'échappe...

25tcd-assist.xlsm (50.66 Ko)

EDIT : j'arrive après la bataille. Jean-Eric a tiré plus vite que mon ombre

Bonjour de nouveau,

Que des entreprises utilisent des versions vieilles de 8 ans est un choix mais de là à refuser d'installer les add on Microsoft qui bien que gratuits permettraient de gagner du temps et donc de l'argent, la logique m'échappe...

[s=co-31859b][/s]

Je plussoie.....mille fois !

Rechercher des sujets similaires à "dates colonnes pas lignes cmt regrouper mois tcd"