Lorsque vous ouvrez un classeur, la feuille de calcul sur laquelle vous étiez avant la dernière fois que vous avez enregistré le classeur est activée. Dans l’image suivante, vous disposez d’un classeur contenant exactement douze feuilles de calcul. Celles-ci sont appelées de Feuil1 à Feuil10.
Une seule feuille de calcul est réservée pour chaque mois. Lorsque le classeur est ouvert, Excel doit automatiquement activer la feuille de calcul correcte en fonction de la date actuelle.
Private Sub Workbook_Open() Dim MoisNr As Integer Const FeuilNom = "Feuille" MoisNr = Month(Now()) On Error GoTo ErreurA Sheets(FeuilNom & MoisNr).Activate Exit Sub ErreurA: MsgBox "Il n'y a pas de feuille avec le nom" _ & FeuilNom & MoisNr End Sub
Commentaires :
■ En conjonction avec les fonctions Month et Now, vous déterminez le mois en cours et l’enregistrez dans la variable MoisNr.
■ Activez maintenant la feuille de calcul que vous recherchez en assemblant le nom de la table à partir de la constante FeuilNom et de la variable MoisNr.
■ N’oubliez pas d’inclure l’instruction On Error. Dans le cas de Un message s’affiche à l’écran indiquant qu’une feuille de calcul correspondante est introuvable dans le classeur.
Voici une autre tâche similaire : Imaginez que vous ayez une table dans laquelle la colonne A est remplie avec des valeurs de date. La tâche consiste maintenant à placer le pointeur de la souris sur la cellule contenant la date actuelle. Ce processus doit avoir lieu automatiquement et immédiatement après l’ouverture du classeur. La solution à ce problème se trouve dans la macro suivante :
Private Sub Workbook_Open() Dim PlageCell As Range For Each PlageCell In ActiveSheet.UsedRange If PlageCell.Value = Date Then PlageCell.Select Exit Sub End If Next PlageCell End Sub
Avant cela, vous utilisiez l’événement Workbook_Open pour vous positionner sur une feuille de calcul souhaitée. Une autre possibilité de toujours être sur la bonne feuille de calcul après l’ouverture du classeur est de s’assurer que la feuille de calcul souhaitée est activée immédiatement avant de fermer le classeur. Pour ce faire, utilisez l’événement Workbook_BeforeClose.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Worksheets(1).Activate End Sub ou: Private Sub Workbook_BeforeClose(Cancel As Boolean) Worksheets("Feuil1").Activate End Sub
Commentaires :
■ Les deux macros ne doivent pas nécessairement avoir le même résultat. La première variante active la feuille de calcul qui est disposée en première position dans le classeur. Cela ne doit pas nécessairement être la Feuil1. Dans la deuxième variante, la feuille de calcul portant le nom Feuil1 est activée, quel que soit son emplacement dans le classeur.
■ Par mesure de sécurité, vous pouvez également inclure une instruction On Error ici pour vous assurer qu’il n’y a pas de messages d’erreur de macro.
Pour tester l’événement Workbook_Open, vous n’avez pas besoin de fermer le classeur, puis de l’ouvrir à nouveau. Vous pouvez également démarrer cet événement directement dans l’environnement de développement en plaçant le pointeur de la souris sur la première ligne d’événement et en appuyant sur la touche | F5 | actionner.