changer le champ calculé dans un tableau croisé dynamique par macro ou autre

leptosto

XLDnaute Nouveau
bonjour

j'ai un tcd avec un champ calculé avec une formule du type :

Formule : = TOTAL/9

je désire changer automatiquement ( macro vba) le 9 en 8 par exemple...mais dépendant de la valeur d'une cellule dans ma feuille....le 8 serait dans la cellule "A1" que l'utilisateur peut modifier.

y-a-t-il une astuce

par exemple j'ai la macro suivante :

ActiveSheet.PivotTables("Tableau croisé dynamique1").CalculatedFields( _
"%OBJECTIFMOIS").StandardFormula = "=TOTAL/9"

je désire changer le 9 en 8 où 8 est dans cellule "A1" que je lis dans la macro

merci d'avance
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : changer le champ calculé dans un tableau croisé dynamique par macro ou autre

Bonsoir leptosto et bienvenue sur le forum.

Rien de tel qu'un fichier exemple pour être sûr d'avoir une réponse adaptée, comme cela est spécifié dans la Lien supprimé que je t'invite à lire.

Cependant, je pense que tu peux essayer cette syntaxe pour répondre à ta problématique :
VB:
ActiveSheet.PivotTables("Tableau croisé dynamique1").CalculatedFields("%OBJECTIFMOIS").StandardFormula = "=TOTAL/" & [A1]

A+
 

leptosto

XLDnaute Nouveau
Re : changer le champ calculé dans un tableau croisé dynamique par macro ou autre

bonsoir

merci beaucoup ça fonctionne super bien....encore une petite question si tu peux :)

une fois que l'utilisateur change la cellule y-t-il une méthode pour refresh le tcd une fois la cellule validée....ou faut -il passer par une macro....

j'ai déjà la macro de refresh quand on sélectionne la feuille mais pas quand on change une cellule de la feuille

encore super merci pour la première réponse

++
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : changer le champ calculé dans un tableau croisé dynamique par macro ou autre

Re-bonsoir

Tu peux faire une macro évènementielle sur le changement de la valeur en "A1". Un truc du style :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [A1]) And Target.Count = 1 Then ActiveWorkbook.RefreshAll
End Sub

A placer dans le code de la feuille qui contient le TCD + la cellule A1 en question.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19