création d'evenement à l'aide d'une macro

  • Initiateur de la discussion Initiateur de la discussion david
  • 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 !

D

david

Guest
Voila, je voulais savoir s'il était possible à l'aide d'une macro de modifier ou de créer un evenement.

Dans chacune de mes feuille j'ai un évenement comme ci dessous, ce qui me permet de pouvoir envoyer des informations aux feuilles voulues a partir du sommaire (information qui peuvent etre modifiées dans les onglets si l'utilisateur le souhaite)

Option Explicit
Private Sub Worksheet_change(ByVal Target As Range)
If Target.Address = '$E$9' Then Feuil17.Range('d13') = Feuil1.Range('e9')
If Target.Address = '$D$13' Then Feuil1.Range('e9') = Feuil17.Range('d13')
End sub

Le problème est que je doit modifier un certain nombre d'informations à chaque création de feuille (nom de la feuille et les cellules).

Est ce que c'est possible ou pas??

Merci

David
 
Bonjour david.

Ceco pourra t'aider, je l'ai trouvé dans les page wiki de MichelXld.

Merci de nous tenir au courant si ça fonctionne comme tu veux en joignant ton exemple une fois finalisé (ça m'interesse).


Créer une macro évènementielle au niveau de la feuille (Feuil1) , par macro


Sub creationMacro()
Dim X As Integer
'creation procedure dans la Feuil1
'activer la reference Microsoft Visual Basic for Applications Extensibility 5.3
'si la procedure ne fonctionne pas
With activeWorkbook.VBProject.VBComponents('Feuil1').codeModule
X = .countOfLines
.insertLines X + 1, 'Private Sub workSheet_Calculate()'
.insertLines X + 2, ''bla bla bla'
.insertLines X + 3, 'msgBox ''Calcul effectué . '',,''Message'' '
.insertLines X + 4, 'End Sub'
End With
End Sub
 
Merci Coco_lapin et par la meme occasion merci également à toi MichelXld.


Je bloque sur un point.
Lorsque je marque :
If Target.Address = '$e$16' Then Feuil22.Range('d13') = Feuil1.Range('e16')
Il n'y a pas d'erreur et ca marche très bien.

Par contre dès que je le met avec insertlines devant il me met qu'il y a une erreur au niveau de '$e$16'.

.InsertLines X + 3, 'If Target.Address = '$e$16' Then Feuil22.Range('d13') = Feuil1.Range('e16')'

Merci pour votre aide.

David

PS: dès que j'ai fini j'envoi mon exemple.
 
Bonjour David et coco_lapin 🙂

David, regarde bien l'exemple de MichelXld que t'a copié coco_lapin. Pour obtenir des guillemets, tu dois les doubler dans ta macro :

'If Target.Address = ''$e$16'' Then Feuil22.Range(''d13'') = Feuil1.Range(''e16'')'

A+
 
Voila coco-lapin je te met le code en qestion, je peux pas mettre l'exemple (beaucoup trop lourd), désolé

Code:
Dim X As Integer
'creation de l'évenement
'activer la reference Microsoft Visual Basic for Applications Extensibility 5.3

Sheets(Sheets.Count - 2).Select

'déclare le tableau de valeur Tval
Dim Tval(1) As Variant
Tval(0) = ActiveSheet.CodeName
    
With ActiveWorkbook.VBProject.VBComponents(Tval(0)).CodeModule
X = .countOfLines
.InsertLines X + 1, 'Option Explicit'
.InsertLines X + 2, ''Pour nouveau produit'
.InsertLines X + 3, 'Private Sub Worksheet_change(ByVal Target As Range)'
.InsertLines X + 4, 'If Target.Address = '$e$16' Then Feuil2.Range('d13') = Feuil1.Range('e16')'
.InsertLines X + 5, 'If Target.Address = '$D$13' Then Feuil1.Range('e16') = Feuil22.Range('d13')'
.InsertLines X + 6, 'If Target.Address = '$F$16' Then Feuil2.Range('d12') = Feuil1.Range('f16')'
.InsertLines X + 7, 'If Target.Address = '$D$12' Then Feuil1.Range('f16') = Feuil22.Range('d12')'
.InsertLines X + 8, 'End Sub'
End With
End Sub

Il me marque une erreur a partir du .insertlines X+4 jusqu'au X+7.
Il n'accepte pas le $.



David
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
784
Réponses
4
Affichages
732
Réponses
8
Affichages
780
Réponses
4
Affichages
586
Retour