Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Evénementiel dans un module?

2 réponses
Avatar
René Delcourt
Bonjour à toutes et à tous,

Une application est (quasi) créée de bout en bout par un module.
Ce module crée un TCD dans un nouvelle feuille
Sur modification du TCD, il doit y avoir une action.
Sur une feuille existante j'utiliserais
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Et sur une nouvelle feuille, comment fait-on?

Merci de vos lumières.
--
René Delcourt

2 réponses

Avatar
AV
La màj du TCD déclenche l'évènement Worksheet_Calculate donc, après avoir
rajouté ta feuille et fait ton TCD, tu peux ajouter une instruction (détails à
définir) de ce genre dans le code du module :

Sub FeuilleEtCode()
Sheets.Add.Name = "TCD"
'création du TCD
For Each F In Worksheets
If F.Name = "TCD" Then
codeNom = F.CodeName
Exit For
End If
Next
leCode = "Private Sub Worksheet_Calculate()" & vbLf & "Msgbox ""Action""" & vbLf
& "End Sub"
Application.VBE.ActiveVBProject.VBComponents(codeNom).CodeModule.AddFromString
(leCode)
End Sub

AV
Avatar
René Delcourt
Merci pour ta réponse.
Comme d'autres calcul s'effectuent, j'ai pensé changer le code en

Sub FeuilleEtCode()
For Each F In Worksheets
If F.Name = Cible Then
codeNom = F.CodeName
Exit For
End If
Next
leCode = "Private Sub Worksheet_PivotTableUpdate(ByVal Target As
PivotTable)" & vbLf & "recap" & vbLf & "End Sub"
Application.VBE.ActiveVBProject.VBComponents(codeNom).CodeModule.AddFromString (leCode)
End Sub

Cependant, ce code fait planter Excel!!!
--
René Delcourt



La màj du TCD déclenche l'évènement Worksheet_Calculate donc, après avoir
rajouté ta feuille et fait ton TCD, tu peux ajouter une instruction (détails à
définir) de ce genre dans le code du module :

Sub FeuilleEtCode()
Sheets.Add.Name = "TCD"
'création du TCD
For Each F In Worksheets
If F.Name = "TCD" Then
codeNom = F.CodeName
Exit For
End If
Next
leCode = "Private Sub Worksheet_Calculate()" & vbLf & "Msgbox ""Action""" & vbLf
& "End Sub"
Application.VBE.ActiveVBProject.VBComponents(codeNom).CodeModule.AddFromString
(leCode)
End Sub

AV