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

  • Initiateur de la discussion Initiateur de la discussion Yvan1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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 …
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
906
Réponses
2
Affichages
1 K
Réponses
4
Affichages
843
Réponses
13
Affichages
2 K
Réponses
1
Affichages
1 K
Retour