Modifier champ calculé TCD via VBA - problème d'actualisation

Bonjour à tous,

Je cherche à calculer une moyenne pondérée via un TCD. Après quelques recherches, j'ai compris que le champ calculé d'un TCD ne peux pas inclure une cellule extérieure. De ce fait, je me suis tourné vers un code VBA pour modifier la feuille. Le résultat est concluant sur la période que j'ai choisie mais l'actualisation ne se fait pas sur les période antérieures. (ex: sur juin je prends le total des pondérés divisé par 6 pour juin mais si je me mets sur mai, le vba fait le total des pondérés de mai divisé par 6 au lieu de 5 pour mai)

Je vous joins un fichier allégé avec le code de la feuille et le TCD qui me pose problème.

En résultat je devrait avoir sur 2021 en Juin : 28,5 en Mai : 28,5 et non 23,8 en Avril : 29,1 et non 19,4

La cellule K1 est une formule qui prend le dernier mois du filtre du TCD (pour faire la pondération)

Auriez vous des pistes pour que ma formule s'actualise correctement en prenant la cellule K1?

Merci d'avance pour votre aide

Bonjour,

Pour faire suite à ma demande. J'ai essayé ce code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
If Target.Address = "$K$1" Then
PivotTables("Tableau croisé dynamique2").CalculatedFields("Champ1").StandardFormula = "='Montant'/" & Target
PivotTables("Tableau croisé dynamique4").PivotFields("Mois").ClearAllFilters
PivotTables("Tableau croisé dynamique4").PivotFields("Mois").CurrentPage = Range("K1").Text
End If
End Sub

Cela répond à mon besoin SAUF que je suis obligé d'aller sur ma cellule K1 (formule matricielle), de rentrer dans la formule et de faire entrer pour que les formules et TCD s'actualisent correctement

L'idée serait que je n'ai plus cette action à faire

Auriez vous des pistes ?

Merci pour votre aide et votre implication

Bonjour,

J'ai du mal à voir pourquoi c'est aussi galère ici .. M'enfin tu peux faire un truc du genre. C'est pas l'idéal mais ça peut dépanner. Si jamais ça n'est pas à jour, un double clic dans une cellule vide met à jour ce que tu veux.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 2 Then Exit Sub
If Range("J11") <> Range("K11") Then
    PivotTables("Tableau croisé dynamique2").CalculatedFields("Champ1").StandardFormula = "='Montant'/" & Range("K1")
    PivotTables("Tableau croisé dynamique4").PivotFields("Mois").ClearAllFilters
    PivotTables("Tableau croisé dynamique4").PivotFields("Mois").CurrentPage = Range("K1").Text
End If
End Sub

Bonjour,

Qu'est ce que tu trouves galère? Ma demande?

En tout cas, je te remercie. Certes ce n'est pas l'idéal comme tu le dis mais c'est toujours mieux que ce que je devais faire, c'est plus "naturel". Cela me convient

Merci pour ton aide et pour la réponse rapide.

Rechercher des sujets similaires à "modifier champ calcule tcd via vba probleme actualisation"