Académique Documents
Professionnel Documents
Culture Documents
Vous décidez de mettre de l'ordre dans vos CD de musique. Il s'agit de créer un programme de gestion de CD…
Vous avez à disposition un fichier qui se nomme Gestion CD 01 (état brut).xls. Ce fichier contient plusieurs feuilles d
Compositeurs (nom, prénom, année de naissance, année de décès, type de musique, remarques)
Instrumentation (chœur, chœur et orchsetre, violon solo, clavecin etc.)
Interprétation
Type de musique (baroque, impressioniste, Renaissance, etc.)
Appréciation (excellent, bon, médiocre, etc.)
Opera Omnia (regroupe toutes les informations ci-dessus, pour affichage ou pour impression)
Vu que la suppression de la ligne de menu ainsi que des barres d'outils doit se faire lors de l'initialisation du classeur, v
d'écrire le code dans la procédure Workbook_Open() de la feuille ThisWorkbook.
Mais vu que vous ne connaissez pas bien le langage (du moins, nous le supposons), vous allez saisir une nouvelle ma
tout simplement a afin de pouvoir la lancer plus rapidement. Dans cette macro, vous allez désactiver les boîtes à outils
la ligne d'édition ou barre de formule ainsi que la barre d'état, les onglets, les barres de défilement et faire un affichage
Puis, vous vous rendez dans le code VBA (Alt-F11), et vous inspéctez le code "pondu" par VBA dans le module nouve
qui devrait s'appeler Module1. Après avoir enlevé les commentaires automatiques, vous devriez obtenir environ le cod
La propriété Visible
o Sub a()
o Application.CommandBars("Standard").Visible = False
o Application.CommandBars("Formatting").Visible = False
o Application.CommandBars("Worksheet Menu Bar").Visible = False
o With ActiveWindow
o .DisplayHorizontalScrollBar = False
o .DisplayVerticalScrollBar = False
o .DisplayWorkbookTabs = False
o .DisplayGridlines = False
o .DisplayHeadings = False
o End With
o Application.DisplayFullScreen = True
o End Sub
Toutefois, une chose devrait vous surprendre: vous avez beau éliminer la barre de menu : elle est toujours visible. Si v
de Microsoft pour la propriété Visible, il y est dit que "Vous devez affecter la valeur True à la propriété
avant d'affecter True à sa propriété Visible." Cela laisse supposer que la propriété Enabled est d'un niveau hiérarc
propriété Visible. Essayons maintenant de changer toutes les propriétés Visible en Enabled et changeons également l
l'instruction With :
La propriété Enabled
o Sub a()
o With Application Que dit Microsoft de la p
o .CommandBars("Standard").Enabled = False
o .CommandBars("Formatting").Enabled = False Dans le cas d'un contrôle p
o .CommandBars("Worksheet Menu Bar").Enabled = False valeur True à la propriété
détermine son état ; si vou
o .DisplayFullScreen = True
False, la propriété est dés
o End With
o
o With ActiveWindow
o .DisplayFormulaBar = False
o .DisplayStatusBar = False
o .DisplayHorizontalScrollBar = False
o .DisplayVerticalScrollBar = False
o .DisplayWorkbookTabs = False
o .DisplayGridlines = False
o .DisplayHeadings = False
o End With
o End Sub
o Sub a()
o With Application
o .CommandBars("Standard").Enabled = False
o .CommandBars("Formatting").Enabled = False
o .CommandBars("Worksheet Menu Bar").Enabled = False
o .DisplayFullScreen = True
o .ActiveWindow.DisplayFormulaBar = False
o .ActiveWindow.DisplayStatusBar = False
o .ActiveWindow.DisplayHorizontalScrollBar = False
o .ActiveWindow.DisplayVerticalScrollBar = False
o .ActiveWindow.DisplayWorkbookTabs = False
o .ActiveWindow.DisplayGridlines = False
o .ActiveWindow.DisplayHeadings = False
o End With
o End Sub
C'est exactement le contenu de la sous-routine ci-dessus que vous devez copier à l'intérieur de la routine
ThisWorkbook.
de musique, remarques)
e ou pour impression)
La fermeture est décidée par l'utilisateur. C'est la première chose à laquelle il faut penser en plaçant un premier bouton sur
votre pagede menu. Il nous faut par conséquent insérer un bouton afin de fermer soit le programme, soit l'application.
Insertion d'objet dans la feuille de calcul ; ces objets se Insertion d'objet dans le classeur ; ces objets ne se retrouvent
retrouvent dans le listing des objets énumérés dans le pas dans le listing des objets énumérés dans le code rattaché
code rattaché à la feuille respective. à la feuille respective. Toutefois, comme dans le cas ci-contre
à gauche, ces objets peuvent eux aussi déclancher des macros.
Ces objets peuvent être placés sur une feuille ou dans
un formulaire du type UserForm. Ne sont placé que sur une feuille de calcul.
Revenez à la feuille de garde et double-cliquez sur le bouton pour qu'il vous place au bon endroit dans le code ;
supprimer le code devenu inutile.
La méthode Close
Le code ci-dessus ferme le classeur. Bien entendu, Excel va vous demander si vous désirez sauvegarder votre fichier, à moins que
vous n'ayez pensé à cela dans la procédure Workbook_BeforeClose() décrite ci-dessous.
La méthode Quit
La méthode Quit est plus radicale. Elle est directement rattachée à l'application et non au classeur comme dans la méthode Close
Faites attention lors de l'utilisation de cette méthode : rien n'est plus agaçant pour l'utilisateur de se voir forcé à quitter Excel, un programme
qu'il aime tant, tout simplement parce qu'un programmeur novice n'a pas pensé que l'utilisateur désire peut-être continuer le travail sous
Excel !
Maintenant, il faut garantir que tout sera remis en place lorsque le programme sera fermé. Pour cela, il suffit de remettre à True
tout ce qui est False et à False tout ce qui est True. On insère ce code dans la procédure Workbook_BeforeClose() de
la feuile ThisWorkbook.
Remarquez que nous avons tenu à sauvegarder les changements opérés sans en avertir l'utilisateur avec la ligne suivante:
o ActiveWorkbook.Close SaveChanges:=True
Une méthode plus élégante de terminer : la création d'une boîte de dialogue spécialement pour quitter
Il serait préférable de demander à l'utilisateur s'il tient à fermer le fichier ou s'il tient vraiment à quitter l'application. D'autre part,
vous offrez en même temps la possibilité à l'utilisateur de changer d'avis au dernier moment et de rester malgré tout dans votre
programme. En bref, lorsque l'utilisateur va cliquer sur le bouton Quitter, une boîte de dialogue va s'ouvrir lui demandant
exactement ce qu'il désire faire.
De plus, il serait bien plus élégant de supprimer toutes les boîtes de dialogue préalablement affichées, qu'elles soient personnalisées ou non
et de restituer le tout à l'utilisateur dès qu'il aura quitté votre application !
Cette façon de faire demande une refonte complète de la façon de concevoir le programme lors de son ouverture et lors de sa fermeture.
Ainsi, la sous-routine Workbook_BeforeClose(Cancel As Boolean) est complètement supprimée et la sous-routine Workbook_Open()
est remplacée par le code qui suit :
Attention : l'affectation du bouton Quitter du menu principal doit être changé ! Voici le code :
Notez que le fait d'appuyer sur le bouton Annuler revient au même que de choisir d'activer le bouton d'option indiquant que
l'on veut continuer à travailler sur le même programme.
La sous-routine (à mettre dans un module qui se nommera FonctionnementClasseur) comporte les lignes suivantes :
o Sub FermerClasseur()
o Dim strBar As String
o Dim Lin As Integer
o
o Application.ScreenUpdating = False
o
o 'Au cas où la feuille "Tem$$$p£££" n'existerait pas
o On Error Resume Next
o
o 'On affiche à nouveau le classeur hyper-invisible
o Sheets("Tem$$$p£££").Visible = xlSheetVisible
o Sheets("Tem$$$p£££").Select
o
o Lin = 1
o strBar = Sheets("Tem$$$p£££").Cells(Lin, 1).Value
o 'Insertion des différentes boîtes à outils
o Do While strBar <> ""
o Application.CommandBars(strBar).Visible = True
o Lin = Lin + 1
o strBar = Sheets("Tem$$$p£££").Cells(Lin, 1)
o Loop
o
o 'pour ne pas devoir confirmer la suppression de la feuille dans l'instruction suivante
o Application.DisplayAlerts = False
o Sheets("Tem$$$p£££").Delete
o Application.DisplayAlerts = True
o
o 'On veut à nouveau l'affichage des erreurs possibles
o On Error GoTo 0
o
o Application.ScreenUpdating = True
o
o 'on s'occupe du reste de ce qui a été désactivé
o With Application
o .CommandBars("Worksheet Menu Bar").Enabled = True
o .DisplayFormulaBar = True
o With .ActiveWindow
o .DisplayHorizontalScrollBar = True
o .DisplayVerticalScrollBar = True
o .DisplayHeadings = True
o .DisplayGridlines = True
o .DisplayWorkbookTabs = True
o End With
o End With
o
o 'Sauvegarde automatique du classeur
o ActiveWorkbook.Save
o End Sub
enre de discussion
et désavantages
objets ne se retrouvent
s dans le code rattaché
me dans le cas ci-contre
si déclancher des macros.
a méthode Close.
ter Excel, un programme
ntinuer le travail sous
nt personnalisées ou non,
t lors de sa fermeture.
routine Workbook_Open()
après l'autre
### Création d'une feuille de menu avec des boutons
Dans la feuille de menu, nous allons changer le fond en insérant une image de fond qui se nomme musicback.gif ou toute autre
image de votre choix.
Nous allons ensuite désactiver les en-têtes de lignes et de colonnes ainsi que le quadrillage et insérer les 4 boutons suivants :
Ces boutons de commande font appel aux formulaires suivants que nous détaillerons dans la suite du cours :