Bonjour a tous,
Je cherche a resoudre un problème de performance dans un process. Après quelques analyses j'arrive a la conclusion que : lors de ma manipulation de tableau croisé dynamique, l'objet Pivot envoie des évènements. Jusque là rien de fou. Seulenement, il se trouve que pour un evenement particulier, il y a un code lourd et non optimisable.
Du coup, je voulais savoir si pour un objet précis ou une liste d'evenements on pouvait "éteindre" ou arrêter momentanément l'envoie des évènements? ou sa gestion?
L'evenement incriminé dans mon cas est : "Worksheet_PivotTableUpdate".
J'ai regardé du coté de Raise Event et de doEvents sans succes.
J'ai bien essayé une petite astuce du genre :
Code Astuce tentée : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Dim lCol As Long, lRow As Long If ActiveSheet.name = Target.Parent.name Then lCol = ActiveWindow.ActivePane.ScrollColumn: lRow = ActiveWindow.ActivePane.ScrollRow Application.ScreenUpdating = False Call UnFreezePane(Target) Call FreezePane(Target) ActiveWindow.ActivePane.ScrollColumn = lCol: ActiveWindow.ActivePane.ScrollRow = lRow Application.ScreenUpdating = True End If End Sub
Si vous avez des idées je suis preneur!
Partager