Sunteți pe pagina 1din 11

Remplacement du ruban par des menus dans Access 2007

par Jean-Damien GAYOT (Page personnelle)


Date de publication : 02 juillet 2009 Dernire mise jour :

Access 2007 permet d'utiliser les anciens menus pour les bases aux formats MDB ou MDE

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

I - Introduction..............................................................................................................................................................3 I-A - Illustration....................................................................................................................................................... 3 II - Mise en application................................................................................................................................................ 4 II-A - Principes de fonctionnement.........................................................................................................................4 II-B - Application..................................................................................................................................................... 4 II-B-1 - Code Vba..............................................................................................................................................6 II-B-1-a - Module Fonctions.........................................................................................................................6 II-B-1-b - Module Menus............................................................................................................................. 7 II-B-1-c - Code Formulaire Menu Gnral.................................................................................................. 8 II-B-1-d - Code Formulaire 1....................................................................................................................... 9 II-B-1-e - Code Formulaire 2..................................................................................................................... 10 II-B-2 - Options de dmarrage........................................................................................................................10 III - Conclusion...........................................................................................................................................................11 IV - Remerciements................................................................................................................................................... 11

-2Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

I - Introduction
L'une des nouveauts les plus visibles d'Office 2007, a t le remplacement des menus par le ruban. Deux camps se sont aussitt forms : Les inconditionnels ne voulant plus entendre parler de menu. Les rfractaires dconcerts par la place occupe et par le changement de langage ncessaire la personnalisation. du ruban

Or il s'avre que, pour ceux qui le souhaitent, l'on peut tout fait supprimer le ruban dans une application et le remplacer par des menus personnalisables. Cela ne peut fonctionner qu'avec des fichiers .mdb ou .mde. Pour les fichiers au nouveau format 2007 .accdb et .accde, vous devez passer directement la configuration du ruban.

I-A - Illustration
Voici une base d'une version 2000-2003, ouverte avec Access 2007, avec son menu dans l'onglet Complments du ruban.

Voici dans la mme application, le mme menu sans le ruban.

-3Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

II - Mise en application II-A - Principes de fonctionnement


Condition 1 Vos menus doivent tre crs dynamiquement Cela peut sembler premire vue un obstacle, mais en fait aprs avoir lu et assimil l'excellent tutoriel de Philippe JOCHMANS sur le lien suivant http://starec.developpez.com/tuto/barrecommande/. vous vous apercevrez que mme en tant un nophyte comme moi, cela devient tout fait ralisable. Condition 2 Vous devez crer votre barre de menus par code, lors du dmarrage de l'application. Condition 3 Vous devez paramtrer votre application pour qu'elle refuse le Ruban et les menus intgrs, et pour qu'elle accepte votre menu personnalis.

II-B - Application
Pour tayer notre propos nous allons simuler une application avec trois formulaires. - Un formulaire Menu gnral "Frm_Accueil" avec un menu popup "Fichier" et un menu popup "Edition"

-4Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

- Un formulaire N1 "Frm_1" sans menu

- Un formulaire N2 "Frm_2" avec un menu popup "Fichier", des boutons de filtre, tri , recherche et retour sur le menu gnral.

-5Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

II-B-1 - Code Vba


Il faut commencer par s'assurer que la rfrence Microsoft Office 12 Object Library est bien coche, ainsi que Microsoft DAO X.XX Object Library

II-B-1-a - Module Fonctions


Nous allons crer un module appel " Fonctions " dans lequel nous mettrons toutes les fonctions appeler.

Code module Fonctions


Option Compare Database Option Explicit '-----------------------------------------------------------' Tri_croissant '----------------------------------------------------------Public Function Tri_croissant() On Error GoTo Tri_croissant_Err DoCmd.RunCommand acCmdSortAscending Tri_croissant_Exit: Exit Function Tri_croissant_Err: MsgBox Error$ Resume Tri_croissant_Exit End Function '-----------------------------------------------------------' Tri_dcroissant '-----------------------------------------------------------Public Function Tri_decroissant() On Error GoTo Tri_decroissant_Err DoCmd.RunCommand acCmdSortDescending Tri_decroissant_Exit: -6Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

Code module Fonctions


Exit Function Tri_decroissant_Err: MsgBox Error$ Resume Tri_decroissant_Exit End Function '-------------------------------------------------------------'Retour formulaire accueil '-----------------------------------------------------------Public Function Retour() On Error GoTo Retour_Err 'Ferme le formulaire et revient au formulaire d'accueil DoCmd.Close acForm, "Frm_2" Form_Frm_Accueil.SetFocus 'Reconstruit la barre de menus originale Call CreateMenuGen Retour_Exit: Exit Function Retour_Err: MsgBox Error$ Resume Retour_Exit End Function

II-B-1-b - Module Menus


Puis nous crons un autre module "Menus" Code Module Menus
Option Compare Database Option Explicit Public Function CreateMenu() Dim Dim Dim Dim Dim Dim Dim Dim Dim cmb As Office.CommandBar btn As Office.CommandBarButton cmbBtn1 As CommandBarButton cmbBtn2 As CommandBarButton cmbBtn3 As CommandBarButton cmbBtn4 As CommandBarButton cmbBtn5 As CommandBarButton cmbBtn6 As CommandBarButton cmbFic As Office.CommandBarPopup

On Error Resume Next Application.CommandBars("MyMenu").Delete ' On cre la barre de menu Set cmb = Application.CommandBars.Add("MyMenu", msoBarTop, True, False) ' On cre le menu fichier Set cmbFic = cmb.Controls.Add(msoControlPopup) cmbFic.Caption = "&Fichier" 'On Set Set Set ajoute les boutons Apercu, Mise en page et Imprimer btn = cmbFic.Controls.Add(msoControlButton, 247) btn = cmbFic.Controls.Add(msoControlButton, 109) btn = cmbFic.Controls.Add(msoControlButton, 4)

'On Ajoute le bouton Filtre Set cmbBtn1 = cmb.Controls.Add(msoControlButton, 640) -7Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

Code Module Menus

cmbBtn2.BeginGroup = True 'On Ajoute le bouton "Tous les enregistrements" Set cmbBtn2 = cmb.Controls.Add(msoControlButton, 605) ' Ajout sur la barre du bouton "Recherche" Set cmbBtn3 = cmb.Controls.Add(msoControlButton, 141) cmbBtn3.BeginGroup = True ' Ajout sur la barre du bouton "Tri croissant" Set cmbBtn4 = cmb.Controls.Add(msoControlButton) With cmbBtn4 .Style = msoButtonIcon .BeginGroup = True .FaceId = 210 .TooltipText = "Tri croissant" .OnAction = "=Tri_croissant()" End With ' Ajout sur la barre du bouton "Tri dcroissant" Set cmbBtn5 = cmb.Controls.Add(msoControlButton) With cmbBtn5 .Style = msoButtonIcon .BeginGroup = False .FaceId = 211 .TooltipText = "Tri dcroissant" .OnAction = "=Tri_decroissant()" End With ' Ajout sur la barre du bouton "Retour accueil" Set cmbBtn6 = cmb.Controls.Add(msoControlButton) With cmbBtn6 .Caption = "Retour Accueil" .Style = msoButtonIconAndCaption .BeginGroup = True .FaceId = 2151 .TooltipText = "Retour au menu principal" .OnAction = "=Retour()" End With

cmb.Visible = True End Function Public Function CreateMenuGen() ' Cration de la barre de menus du formulaire Dim cmb As Office.CommandBar Dim cmbFic As Office.CommandBarPopup On Error Resume Next Application.MenuBar = "" Application.CommandBars("MyMenu").Delete Set cmb = Application.CommandBars.Add("MyMenu", msoBarTop, True, False) ' ajout du menu popup "fichier" Set cmbFic = Application.CommandBars("Menu Bar").Controls(1) cmbFic.Copy cmb ' ajout du menu popup "Edition" Set cmbFic = Application.CommandBars("Menu Bar").Controls(2) cmbFic.Copy cmb Call CreatePropertyMenu cmb.Visible = True End Function d'accueil

II-B-1-c - Code Formulaire Menu Gnral


Code Frm_Accueil
Option Compare Database -8Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

Code Frm_Accueil

Option Explicit Private Sub Cmd_OpenForm1_Click() On Error GoTo Err_Cmd_OpenForm1_Click Dim stDocName As String DoCmd.RunCommand acCmdWindowHide stDocName = "Frm_1" DoCmd.OpenForm stDocName, acNormal Exit_Cmd_OpenForm1_Click: Exit Sub Err_Cmd_OpenForm1_Click: MsgBox Err.Description Resume Exit_Cmd_OpenForm1_Click End Sub Private Sub Cmd_OpenForm2_Click() On Error GoTo Err_Cmd_OpenForm2_Click Dim stDocName As String 'Ouvre le formulaire Frm_2 Application.Echo False DoCmd.RunCommand acCmdWindowHide stDocName = "Frm_2" DoCmd.OpenForm stDocName, acNormal DoCmd.Maximize 'transforme la barre de menus du formulaire 2 Call CreateMenu Application.Echo True Exit_Cmd_OpenForm2_Click: Exit Sub Err_Cmd_OpenForm2_Click: MsgBox Err.Description Resume Exit_Cmd_OpenForm2_Click End Sub Private Sub Form_Load() 'rend la barre de menus visible l'ouverture DoCmd.ShowToolbar "MyMenu", acToolbarYes End Sub

II-B-1-d - Code Formulaire 1


Code Sur Form_Frm1 Code Frm_1
Option Compare Database Option Explicit Private Sub Cmd_Retour_Click() On Error GoTo Err_Cmd_Retour_Click 'On ferme le formulaire DoCmd.Close 'on revient au formulaire d'accueil Form_Frm_Accueil.SetFocus 'On rend visible le menu DoCmd.ShowToolbar "MyMenu", acToolbarYes Exit_Cmd_Retour_Click: Exit Sub Err_Cmd_Retour_Click: MsgBox Err.Description

-9Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

Code Frm_1
End Sub

Resume Exit_Cmd_Retour_Click

Private Sub Form_Load() DoCmd.ShowToolbar "MyMenu", acToolbarNo End Sub

II-B-1-e - Code Formulaire 2


Code Sur Form_Frm_2
Option Compare Database Option Explicit Private Sub Form_Load() 'Rend le menu visible DoCmd.ShowToolbar "MyMenu", acToolbarYes Me.SetFocus End Sub

II-B-2 - Options de dmarrage


Quatre proprits de dmarrage nous intressent plus particulirement. La proprit AllowBuiltInToolbars qui correspond "Autoriser les menus intgrs " La proprit AllowFullMenus qui correspond " Afficher les menus complets " La proprit StartUpMenuBar qui correspond " Barre de Menu " La proprit StartUpForm qui correspond " Afficher le formulaire "

Pour paramtrer ces proprits nous allons ajouter les codes suivants dans le module " Menus " Code Module Menus
Function ModifProp(chNomPropriete As String, varTypeProp As Variant, varValeurProp As Variant) As Integer Dim MyDb As DAO.Database Dim prp As DAO.Property Const conErreurPropNonTrouvee = 3270 'code erreur si proprit non trouve Set MyDb = CurrentDb On Error GoTo Change_Err MyDb.Properties(chNomPropriete) = varValeurProp ModifProp = True Exit Function Change_Err: If Err = conErreurPropNonTrouvee Then 'Cre la proprit Set prp = MyDb.CreateProperty(chNomPropriete, varTypeProp, varValeurProp) MyDb.Properties.Append prp Resume Next Else ModifProp = False Exit Function End If End Function Public Function CreatePropertyMenu() Call ModifProp("AllowBuiltInToolbars", dbBoolean, False) Call ModifProp("AllowFullMenus", dbBoolean, False) Call ModifProp("StartUpMenuBar", dbText, "MyMenu") Call ModifProp("StartUpForm", dbText, "") 'refuse 'refuse 'nom du 'Pas de les menus intgrs les menus complets menu l'ouverture formulaire au dmarrage

- 10 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

Remplacement du ruban par des menus dans Access 2007 par Jean-Damien GAYOT (Page personnelle)

Code Module Menus


End Function

'c'est l'autoexec qui doit le faire.

Crons une procdure lancer au dmarrage. Pour cela un petit module " Load "

Code module Load


Option Compare Database Option Explicit Public Function demarrage() Application.Echo False 'Lance le processus Call CreateMenuGen 'Ouvre le formulaire d'accueil Dim stDocName As String stDocName = "Frm_Accueil" DoCmd.OpenForm stDocName, acNormal DoEvents Application.Echo True End Function

Il ne reste plus qu' crer une macro autoexec lanant la fonction " demarrage () " Voil c'est termin. Vous pouvez ouvrir votre application et voir le rsultat. Ne pas oublier que vous avez la touche Maj au dmarrage pour revenir aux menus normaux.

III - Conclusion
Je n'ai pas cr ce processus pour m'opposer aux adeptes du Ruban (dont je me sers rgulirement), mais simplement pour montrer que l'on peut tout fait opter pour une solution autre que celle impose. Cela s'apparente un peu du bricolage et cela peut sembler compliqu, mais une fois cr quelques menus standards, cela devient presque aussi facile qu'avant. Si les menus sont crs de cette faon dans les versions antrieures, ils pourront tre lus sans problme avec Access 2007 et vous pourrez les modifier votre guise. Vous pouvez ainsi anticiper la transition. Mon regret est bien sr que cela ne fonctionne pas avec les nouveaux formats d'Access. Vous pouvez tlcharger le fichier servant d'exemple A noter que ces applications fonctionnent avec le Runtime.

IV - Remerciements
Je tiens remercier tout particulirement Domi2, Philippe JOCHMANS, Tofalu, Pierre FAUCONNIER et l'quipe des rdacteurs Office pour leur patience et leur accueil.

- 11 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 - Jean-Damien GAYOT. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://jdgayot.developpez.com/tutoriels/access/remplacement-ruban-par-menus-dans-access-2007/

S-ar putea să vă placă și