XL 2013 Macro positionnée dans le code d'un feuille

Yvan1

XLDnaute Occasionnel
Bonjour,
J'ai mis du code dans la feuille d'un classeur, de façon à ce qu'à chaque changement effectué dans un TCD, des formules soient mises à jour.
Mais la macro ne s'active pas après un changement.
Voici le code :

Private Sub SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)


Application.ScreenUpdating = False

With Sheets("CA").PivotTables("TCD1").TableRange1
.Range("E20:E500").Clear 'RAZ
.Columns(3).Copy .Columns(4) 'pour les formats
.Columns(4) = "=if(iserror((D20-C20)/C20)=true,,(D20-C20)/C20)"
.Cells(1, 4) = "Prog. %"
.Columns(4).NumberFormat = "# %"
End With

With Sheets("CA").PivotTables("TCD2").TableRange1
.Range("J20:J500").Clear 'RAZ
.Columns(3).Copy .Columns(4) 'pour les formats
.Columns(4) = "=if(iserror((I20-H20)/H20)=true,,(I20-H20)/H20)"
.Cells(1, 4) = "Prog. %"
.Columns(4).NumberFormat = "# %"
End With

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

Le fichier de base étant très volumineux, je ne peux l'insérer.

Quelqu'un a-t-il une idée sur l'erreur ?

Merci d'avance,

Yvan
 
C

Compte Supprimé 979

Guest
Bonjour

XLD vous offre une panoplie d'outils pour mettre en forme votre post et notamment
1694011543718.png


Alors merci de vous en servir SVP

A+
 

Dranreb

XLDnaute Barbatruc
Notez que votre intention n'était peut être de le faire. En particulier si vous êtes dans un module d'objet Worksheet, vous pouvez sélectionner 'Worksheet' dans la liste de gauche (Objet) qui surmonte la fenêtre de code, et dans celle de droite (Procédure) vous trouverez alors 'PivotTableUpdate'. En cliquant dessus vous implanterez une procédure de prise en charge de l'évènement qui était peut être en fait votre intention …
 

Yvan1

XLDnaute Occasionnel
A présent que j'ai allégé mon fichier, c'est plus simple à expliquer.
Comme vous pourrez le constater, il y a une formule dans les colonnes E et J, qui se dupliquent en fonction de la taille du TCD.
A chaque changement dans un segment, je souhaite qu'avec la mise à jour du TCD, il y ait la mise à jour de cette formule, notamment dans le nombre de lignes dupliquées.
Et comme vous pourrez le constater, la formule ne se met pas à jour correctement...
Le code se trouve dans la feuille CA, avec la modification que vous m'avez indiquée.
Et c'est donc là que j'ai besoin de votre aide.
J'ai par ailleurs penser créer un champ calculé plutôt que mettre une formule, mais je n'arrive pas à le définir.
Je suis donc dans l'attente de votre aide.
Au plaisir de vous lire...
 

Pièces jointes

  • Suivi Annuel de CA Marge et Stock pour Excel Download.xlsm
    970.5 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Bonjour.
Je n'utilise pas les TCD alors je ne sais pas. Mais en mettant simplement ça, y a-t-il du mieux ? :
VB:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
   Target.TableRange1.Columns(4).FormulaR1C1 = "=IFERROR((RC[-1]-RC[-2])/RC[-2],"""")"
   End Sub
 

Discussions similaires

Réponses
13
Affichages
2 K
Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
314 761
Messages
2 112 587
Membres
111 611
dernier inscrit
downex