VBA - MACRO: comment désigner un pivotfields en colonne?

Bonjour,

Je cherche à modifier les informations entourées en rouge. Les données se trouvent en colonne G de mon fichier.

En fait parce que le nom de la colonne change tous les mois, j'ai besoin de traduire que la macro doit prendre en compte la colonne G et la colonne appelée "2022-05".

image

Merci d'avance pour votre aide.

Bonjour,

Chaque mois, vous rebaptisez le nom de la colonne par "Mois en cours", et vous rebaptisez l'ancienne par son vrai nom.

Ou bien chaque mois, vous copiez la colonne de votre mois, sur une colonne qui s'appelle "Mois en cours".

Bonjour,

Merci pour votre réponse réactive.

J'ai mal expliqué mon problème, il s'agit en fait d'un tableau sur une année complète.

Au 1er jour du nouveau mois, la cellule G4 change de nom pour être intitulée "mois en cours" et le mois précédent est donc supprimé.

Par contre les mois ne correspondent pas aux mois calendaires c'est à dire du 1er au 30, la clôture du mois se fait plus tôt.

C'est donc pour ça que je me demande s'il est possible d'indiquer au pivotfields de rechercher les infos en colonne G.

J’espère être clair.

Merci pour votre aide.

forum vba

Avez-vous la possibilité de mettre en ligne un fichier sans données confidentielles avec le modèle de tcd souhaité ?

J’espère que ça vous parlera

Merci encore.

3forum-xcel.xlsx (33.11 Ko)

La mise à jour du TCD est faite à partir du bouton vert dans la barre d'accès rapide.

Bonjour Eric,

Merci beaucoup pour vote aide et votre fichier.

Par contre j'ai essayé toute la matinée de l'adapter à mon cas mais je n'y arrive pas.

En fait j'aurai besoin de créer le TCD sur le fichier "no inv" à partir des données du fichier "laetitiadusiecle...".

Si vous pouvez vérifier mon code STP, Je vous joins ma macro, et les 2 autres fichiers.

Merci, excellente fin de journée.

3macro-essai.xlsm (20.83 Ko)
3no-inv.xlsx (8.21 Ko)

De mon point de vue, le plus simple est de conserver l'onglet TCD dans le fichier existant et copier l'onglet à chaque mise à jour dans le fichier no_inv.

Option Explicit

Sub Transfert()

Dim Chemin As String, NomSituation As String
Dim WbSource As Workbook, WbCible As Workbook

    Chemin = Range("CheminNoInv")
    Set WbSource = ThisWorkbook
    Set WbCible = Workbooks.Open(Filename:=Chemin)
    With WbSource.Sheets("TCD")
         NomSituation = Split(.PivotTables(1).TableRange1.Cells(1), "Somme de")(1)
        .Copy After:=WbCible.Sheets(WbCible.Sheets.Count)
    End With
    With WbCible
         If OngletExistant(WbCible, NomSituation) = False Then
            .Sheets(WbCible.Sheets.Count).Name = NomSituation
         Else
             .Sheets(WbCible.Sheets.Count).Name = NomSituation & " (" & Format(WbCible.Sheets.Count, "00") & ")"
         End If
         .Save
         .Close
    End With

     Set WbSource = Nothing: Set WbCible = Nothing

End Sub

Function OngletExistant(ByVal Wb As Workbook, ByVal NomOnglet As String) As Boolean

Dim I As Integer

   OngletExistant = False
   With Wb
        For I = 1 To .Sheets.Count
            If .Sheets(I).Name = NomOnglet Then
               OngletExistant = True
            End If
        Next I
   End With

End Function

Bonjour Eric,

Effectivement j'opte pour la solution la plus simple, elle fonctionne bien.

Merci beaucoup pour votre aide.

Je vous souhaite une excellente journée.

Rechercher des sujets similaires à "vba macro comment designer pivotfields colonne"