« Macros-commandes VBA/Procédures et événements automatiques » : différence entre les versions

Contenu supprimé Contenu ajouté
Bakope (discussion | contributions)
Bakope (discussion | contributions)
Ligne 263 :
 
=== Activate ===
Excel peut détecter si une feuille est activée ou désactivée et exécuter une macro lorsque l'un ou l'autre de ces événements se produit. Ces procédures d'événement doivent être placées dans la fenêtre Code de l'objet Feuil.
Pour accéder rapidement à la fenêtre de code d'une feuille, cliquez droit sur l'onglet de celle-ci et choisissez la commande Visualiser le code.
L'exemple qui suit montre une procédure simple qui est exécutée chaque fois qu'un feuille donnée est activée. Elle ouvre une boîte de message qui affiche le nom de la feuille active :
 
<source lang=vb>
Private Sub Worksheet_Activate()
MsgBox "Vous venez d'activer la feuille "& ActiveSheet.Name
En Sub
</source>
 
Voici un autre exemple qui rend la cellule A1 courante chaque fois qu'une feuille est activée :
 
<source lang=vb>
Private Sub Worksheet_Activate()
Range("A1").Activate
End Sub
</source>
 
Ces exemples sont très élémentaires, mais une procédure d'événement peut être beaucoup plus complexe.
La procédure qui suit - stockée dans la fenêtre Code de l'objet Feuil1 - utilise l'événement Deactivate pour empêcher l'utilisateur d'activer toute autre feuille du classeur. Lorsque Feuil1 est désactivée (c'est à dire qu'une autre feuille est activée), un message est affiché puis Feuil1 est de nouveau activé :
 
<source lang=vb>
Private Sub Worksheet_Activate()
MsgBox "Vous devez rester dans Feuil1."
Sheets("Feuil1").Activate
End Sub
</source>
 
Pour autant je ne vous conseille pas d'utiliser ce genre de procédure pour essayer de court-circuiter Excel. Cela pourrait être très frustrant et source de confusion pour l'utilisateur d'une part, et d'autre part facile à contourner en désactivant les macros. Il vaut mieux profiter de ces possibilités pour aider vos utilisateurs à se servir correctement de votre application.
 
=== Change ===
Un événement Change se produit chaque fois qu'un cellule de la feuille de calcul est modifiée. Dans l'exemple qui suit, la procédure Worksheet_Change empêche effectivement un utilisateur d'entrer une valeur non numérique dans la cellule A1. Ce listing est stocké dans la fenêtre Code de l'objet Feuil.