Créer évènement

[Fermé]
Signaler
Messages postés
192
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
19 janvier 2013
-
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
-
Bonjour à tous et meilleurs voeux.

Merci de me dire comment procéder pour créer un code évènement. Je suis souvent handicapé de ne pas savoir faire.

4 réponses

Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Bonsoir Tessel75,

Pourquoi un code évènement:
Un code évènement peut être créé, par exemple sur un bouton, à l'activation d'un feuille, au changement d'une cellule dans une feuille, à l'ouverture d'un classeur, etc.

Comment faire un code évènement:

' à l'ouverture du classeur
Private Sub Workbook_Open()
	code
End Sub

' à l'activation d'une feuille
Private Sub Worksheet_Activate()
	code
End Sub

' au changement de valeur d'une cellule
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
	code
End Sub

' au click sur un bouton
Private Sub Button1_Click(ByVal Index As Integer)
	code
End Sub


Un code évènement est une procédure qui réagit à la suite d'une action.
On y met du code adapté à l'évènement
Messages postés
192
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
19 janvier 2013
22
Merci Heliote, cela répond parfaitement à ma question.
Alors, 2ème partie de la question que j'avais oubliée, comment attacher ce code à l'évènement?
Précision, j'ai récemment inséré un bouton sur une feuille (Le code m'avait été gracieusement été écrit par Eriiic), et la procédure Excel d'insertion du bouton m'a demandé en se déroulant le nom de la macro (ou du code) que je souhaitais y attaché. Parfait! Mais quid des autres évènements ?
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
6 932
Bonjour à tous,

pour compléter la réponse d'heliotte.
Dans vbe à gauche tu as ton projet, subdivisé en modules.
Dans un module feuille (double-clic sur un pour afficher son code) tu auras les évènements worksheet.
Si worksheet est sélectionné dans la liste de gauche en haut, celle de droite te liste les évènements accessibles.
Si tu cliques sur l'un d'entre eux vbe te prépare le code de l'évènement avec les paramètres reçus.
Par exemple pour Change tu reçois Target, dont les propriétés sont utilisables dans la procédure : Target.value (celle par défaut si tu tapes seulement Target), Target.row (ligne la cellule ayant déclenché l'évènement), Target.Address etc
Pour BeforeDoubleClick tu recevra en plus le paramètre Cancel. Il te permet de dire à excel 'oublie le double-clic et ne passe pas en édition de la cellule avec : Cancel=True

Si tu regardes ThisWorkbook tu as les évènements Classeur.
Par exemple Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
En plus de Target tu reçois Sh : la feuille ayant déclenché l'évènement Change (Sh.name pour l'identifier)

Revenons à la feuille...
Tu peux déposer des objets de 2 types dessus.
Type Formulaire : pas de vba
Type Activex : gérés par vba
Dépose un combobox ActiveX sur la feuille, double-clic dessus, tu vas dans vbe avec combobox1 présélectionné (liste de gauche). Et dans la liste de droite tous les évènements qu'il peut déclencher. Cliquer sur celui qui t'intéresse.

Le bouton que tu as déposé est un bouton Formulaire, pas activeX.
Sur un clic-droit dessus tu n'as pas Propriétés ni Visualiser le code, tu peux seulement le lier à un code existant.

eric

Messages postés
192
Date d'inscription
lundi 17 décembre 2012
Statut
Membre
Dernière intervention
19 janvier 2013
22
Bonsoir Eric, Merci pour ce cours particulier.
Je comprends bien tout ce que tu écris mais malheureusement je ne retrouve pas tout ça en regardant VBA. Je connais pas trop mal VBA pour avoir écrit pas mal de macros mais toutes déclenchées par des boutons sur la barre d'outils, mais aucune par des évènements comme vous décrivez Heliote et toi.
Je viens à l'instant de regardé le code VBA du fichier que j'ai adressé à Cathy62142 auquel tu peux avoir accès. Je ne retrouve pas les évènements prédéfinis dont tu me parles, ou bien faut-il les écrire par des mots-code prédéfinis par le VBA lui-même.
Et si c'est le cas, c'est bien ce qui me manquait. Parce que j'ai beaucoup plus travaillé sur Access avec lequel tous les évènements sont proposés pour tous les formulaires, tous les champs et tous les états. C'est un autre monde.
Messages postés
24200
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2021
6 932
Une feuille avec les 2 types de boutons t'éclairera mieux je pense.
Met-toi en mode création (icone 'regle-crayon-équerre) avant de cliquer-droit ou double-cliquer sur le bouton ActiveX.
Une fois dans VBE déroule la liste en haut à droite (ou il y a Click). Si tu choisis un évènement le private sub s'écrit tout seul.
https://www.cjoint.com/c/CAgcrjMcKzR

Sur 2003 'affichage / barres d'outils / boite à outils contrôles' pour accéder aux activeX

eric