Microsoft 365 Comment synthétiser des données concaténer

Carine972

XLDnaute Nouveau
Bonjour à tous,

Je me trouve dans une impasse. Je dois générer automatiquement des parcours (présence semaines/villes pour différentes missions). J'ai créé un cadencier où chaque acteur se positionne. La fonction concaténer m'a permis de regrouper les informations que je voulais, à savoir les présences semaines/villes en fonction du nom du parcours. Le problème c'est l'affichage des parcours. Je veux une synthèse des parcours par colonne et non un affichage comme dans les onglets "parcours IT 1" et "parcours IT 2". Je ne sais pas si je suis très claire. Pour plus de compréhension je mets le fichier en PJ.
J'espère que quelqu'un pourra m'aider ! Merci d'avance !
 

Pièces jointes

  • Outil de travail ITI - Parcours - V2.xlsx
    268.8 KB · Affichages: 2

Eric KERGRESSE

XLDnaute Occasionnel
Votre fichier a d'abord été transformé en .xlsm pour contenir des macros.
Votre tableau de données a ensuite été transformé en tableau structuré pour simplifier le travail de la macro ci-dessous qui vient reconstruire le tableau dans l'onglet Parcours sur clic du bouton Actualiser.
A partir du tableau dans Parcours, j'ai créé un Tcd pour visualiser les données par agent et ajouté un segment pour changer l'agent plus facilement.

Si votre tableau doit "glisser"sur 2024, il vous faudra penser à mettre l'année avant la semaine, si vous voulez avoir les semaines toujours dans l'ordre.

VB:
Sub ListerLesParcours()

Dim AireVilles As Range, AireSemaines As Range
Dim I As Integer, J As Integer
Dim LigneParcours As ListRow
Dim TabParcours As ListObject


    Set TabParcours = Sheets("Parcours").ListObjects("t_Parcours")
    Set AireVilles = Range("t_SemainesVilles[Villes]")
    Set AireSemaines = Range("t_SemainesVilles[#headers]")
    
    With TabParcours
        If .ListRows.Count > 0 Then
            .DataBodyRange.Delete
            Debug.Print .ListRows.Count
        End If
    End With
    
    For I = 1 To AireVilles.Count
        With AireVilles(I)
             For J = 2 To AireSemaines.Count
                 If .Offset(0, J - 1) <> "" Then
                 '   Debug.Print .Value & " : " & .Offset(0, J - 1) & ", " & AireSemaines(J)
                    Set LigneParcours = TabParcours.ListRows.Add
                    With LigneParcours
                         .Range(1, 1) = AireVilles(I).Value
                         .Range(1, 2) = AireSemaines(J)
                         .Range(1, 3) = AireVilles(I).Offset(0, J - 1)
                    End With
                    Set LigneParcours = Nothing
                 End If
             Next J
        End With
    Next I
    
    With Sheets("TCD parcours")
         .Activate
         .PivotTables("Tcd_Parcours").PivotCache.Refresh
    End With

    ActiveWorkbook.SlicerCaches("Segment_IT").PivotTables("Tcd_Parcours").PivotCache.Refresh

    
    Set AireVilles = Nothing:  Set AireSemaines = Nothing
    Set TabParcours = Nothing:  Set LigneParcours = Nothing
    
    


End Sub
 

Statistiques des forums

Discussions
314 862
Messages
2 113 631
Membres
111 926
dernier inscrit
vec440