Macros-commandes VBA/Exercices/Procédures et événements automatiques
Introduction
[modifier | modifier le wikicode]Afin que vous vous rendiez compte de l’utilité que peut procurer les procédures/événements automatiques (chapitre 16) voici un exemple :
Vous occupez la fonction de contrôleur de gestion dans une PME.
On sait bien que les ressources financières de ces petites et moyennes entreprises sont allouées à d’autres projets que l’achat de logiciel.
C’est pourquoi votre supérieur hiérarchique qui vous a recruté notamment au vu des compétences informatiques que vous avez mentionné sur votre CV souhaite les tester.
Il vous demande d’insérer dans le fichier Excel que vous lui transmettez chaque matin un message lui souhaitant le bonjour.
Créer un message souhaitant automatiquement la bienvenue
[modifier | modifier le wikicode]1) Ouvrez un document Excel puis créez une procédure automatique qui souhaite le bonjour à chaque ouverture du tableur
Private Sub Workbook_Open()
MsgBox "Bonjour, monsieur HEINSENBERG"
End Sub
- Il ne faut pas oublier que les procédures et événements automatiques sont sensibles au lieu où ils sont placés. Ici c’est dans : ThisWorkbook.
Vous avez réussi la première étape voici un élément plus complexe.
Première contrainte : l'automatisation
[modifier | modifier le wikicode]2) Que faire si ce même document devait être transmis à d'autres personnes. Comment pourriez automatiser le nom ?
Private Sub Workbook_Open()
MsgBox "Bonjour, monsieur " & Application.UserName
End Sub
- Application.UserName est une fonction VBA prédéfinie.
Deuxième contrainte : le temps
[modifier | modifier le wikicode]3) (Bonus) Personnalisez-la en distinguant le matin de l’après-midi
Private Sub Workbook_Open()
Dim Msg As String
If Time < 0.5 Then
Msg = MsgBox ("Bonjour, monsieur HEISENBERG")
'Msg = ou au choix : MsgBox = "Bonjour, monsieur " & Application.UserName
End If
If Time >= 0.5 And Time < 0.75 Then
Msg = MsgBox ("Bon après-midi, monsieur HEISENBERG")
'Msg = ou au choix : MsgBox = "Bon après-midi, monsieur " & Application.UserName
End If
If Time >= 0.75 Then
Msg = MsgBox ("Bonsoir, monsieur HEISENBERG")
'Msg = ou au choix : MsgBox = "Bonsoir, monsieur " & Application.UserName
End If
MsgBox Msg
End Sub
- Ici hormis la boucle If-Then et la fonction Time qu’il faut connaître, il faut savoir que 0.5 correspond à 12h00 (une demi-journée) et 0.75 à 18h00 (eh oui trois quart d'un jour).
Annexes
[modifier | modifier le wikicode]Bibliographie
[modifier | modifier le wikicode]- John Walkenbach, 2013, Programmation VBA pour Excel Pour Les Nuls, FIRST
Liens internes
[modifier | modifier le wikicode]Liens externes
[modifier | modifier le wikicode]