Access : les commandes intégrées des menus

Dominique KIRCHHOFER

Exécution des commandes intégrées des menus et des barres d'outils. Commentez

- Titre : Access : les commandes intégrées des menus

- Auteur : Dominique KIRCHHOFER

- Parution : 27 mars 2010

- Mise à jour : 9 octobre 2010

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2009 Kirchhofer Dominique. Aucune reproduction, même 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Sommaire

- I. Introduction

- II. Utilisation des constantes dans Visual Basic

- II-A. Disponibilité des constantes

- II-B. Syntaxe

- II-C. Erreur 2046

- III. Les commandes et les constantes

- III-A. Menu système de l'application Access

- III-B. Menu de l'objet actif

- III-C. Menu Affichage

- III-D. Menu Aide

- III-E. Menu Édition

- III-F. Menu Enregistrements

- III-G. Menu Fenêtre

- III-H. Menu Fichier

- III-I. Menu Format

- III-J. Menu Insertion

- III-K. Menu Outils

- IV. DoMenuItem vers RunCommand

- V. Conclusion

- VI. Remerciements

- VII. Annexe

I - Introduction

La méthode Runcommand de l'objet DoCmd a été introduite dans Microsoft Access dès la version 97, en remplacement de la méthode DoMenuItem des versions antérieures. Elle permet d'exécuter une commande intégrée de menus ou de barres d'outils.

À chaque commande de menus et de barres d'outils de Microsoft Access est associée une constante, que vous pouvez utiliser avec la méthode RunCommand, pour exécuter celle-ci à partir de Visual Basic.

Il est impossible d'utiliser la méthode RunCommand pour exécuter une commande d'un menu personnalisé ou d'une barre d'outils personnalisée. Cette méthode ne s'applique qu'à des commandes intégrées.

Cependant, rien ne vous empêche de construire vos propres menus. À ce sujet, consultez le tutoriel Personnaliser vos barres de commandes dans Access de Philippe JOCHMANS pour les versions Access 97 à 2003 et celui de Tofalu, Création de rubans personnalisés sous Microsoft Access pour les versions 2007 et 2010. Vous pourrez y associer des procédures ou fonctions qui exécuteront des commandes de votre choix.

L'objectif de cet article est principalement d'indiquer quelles constantes de la méthode RunCommand sont associées aux commandes les plus importantes, et pour les plus utilisées, d'illustrer leur utilisation avec un exemple de code.

II - Utilisation des constantes dans Visual Basic

Avant de commencer, quelques informations sur l'utilisation des commandes dans Visual Basic.

II-A - Disponibilité des constantes

Outre le fait que les constantes des commandes sont proposées automatiquement par l'éditeur après avoir tapé DoCmd.RunCommand, cf. complétion, il peut s'avérer intéressant de vérifier quelles constantes sont disponibles dans la version d'Access utilisée.

Depuis la fenêtre de base de données, passer dans l'éditeur VBA en utilisant le bouton Code du menu Affichage, ou les touches de raccourci Alt+F11.

Puis afficher l'Explorateur d'objets en utilisant la commande du menu Affichage ou la touche de raccourci F2. Cette fenêtre s'affiche alors à l'écran :

Dans la première zone de liste déroulante, vous avez la possibilité de choisir la librairie que vous désirez explorer. Soit laisser Toutes bibliothèques, ou comme ici, sélectionner la bibliothèque Access pour restreindre le choix.

Dans la liste Classes, vous pouvez ensuite sélectionner l'élément recherché, ici acCommand. L'ensemble de ses Membres s'affichent alors dans la liste de droite.

En sélectionnant une constante, les informations y relatives, dont notamment la valeur, s'affichent alors au bas de l'Explorateur d'objets.

II-B - Syntaxe

La méthode RunCommand peut être utilisée avec l'objet Application ou avec l'objet DoCmd. Cet argument est facultatif.

1. Application.RunCommand (Command).

2. DoCmd.RunCommand (Command).

3. RunCommand (Command).

Command étant la constante intrinsèque qui spécifie la commande intégrée de menus ou de barres d'outils à exécuter.

Il est également possible d'utiliser indifféremment le nom de la constante ou sa valeur :

Code

'Affiche la boîte de dialogue A propos de Microsoft Access en utilisant le nom de la constante
Application.RunCommand acCmdAboutMicrosoftAccess
DoCmd.RunCommand acCmdAboutMicrosoftAccess
RunCommand acCmdAboutMicrosoftAccess

'Affiche la boîte de dialogue A propos de Microsoft Access en utilisant la valeur de la constante
Application.RunCommand 35
DoCmd.RunCommand 35
RunCommand 35

Dans les exemples de code, nous utiliserons l'objet DoCmd et le nom de la constante, syntaxe la plus fréquemment utilisée. Considérant que le nom de la constante est beaucoup plus explicite que sa valeur, il s'agit d'une bonne habitude à prendre. Cela facilite d'une part le débogage immédiat de l'application, ainsi que sa maintenance ultérieure.

Il est nécessaire de distinguer plusieurs possibilités d'appel de procédure exécutant la commande.

Soit on l'exécute depuis une commande d'un menu personnalisé (ou d'un bouton du ruban dès la version Access 2007), et dans ce cas, il n'y pas de précautions particulières à prendre.

Soit on appelle la procédure dans l'événement Sur clic d'un bouton placé sur le formulaire lui-même. Dans ce cas, lorsqu'on clique sur le bouton, ce dernier reçoit le focus. Il est donc dans certains cas nécessaire de le redonner au contrôle précédemment sélectionné avant d'exécuter la commande.

Ceci s'applique aussi à l'utilisation d'autres événements, par exemple Sur perte focus d'une zone de texte. Pour illustration, voir le code de la commande Copier.

Dans les exemples de code proposés ci-après, sauf mention contraire, les commandes sont exécutées dans la procédure associée à l'événement Sur clic de boutons placés sur un formulaire.

II-C - Erreur 2046

L'utilisation erronée d'une commande provoque une erreur spécifique, l'erreur 2046. Celle-ci survient lorsqu'on veut faire usage d'une commande qui n'est pas disponible dans le contexte dans lequel on tente de l'utiliser.

Par exemple, si on utilise dans une procédure la commande :

Code

'Affiche l'état avec un grossissement de 100%
DoCmd.RunCommand acCmdZoom100

sans qu'un état soit ouvert en mode Aperçu avant impression, l'erreur suivante se produit :

Il est donc recommandé de prévoir une gestion spécifique de cette erreur. A titre d'exemple, voir le code de la commande Annuler.

III - Les commandes et les constantes

Les commandes sont groupées selon la logique des menus "classiques" des versions Access 97 à Access 2003. Il est important de ne pas perdre de vue que certaines commandes ne sont pas disponibles dans toutes les versions et que, certaines d'entre elles, peuvent se trouver dans des menus différents.

Autre difficulté, les menus et commandes disponibles diffèrent. Par exemple, les commandes à disposition ne sont pas identiques lorsqu'on affiche un formulaire en Mode formulaire ou un état en mode Aperçu avant impression. De même, le menu Débogage n'est disponible que lorsqu'on se trouve dans l'éditeur VBE.

Aussi, afin de faciliter vos recherches, les menus et commandes sont listés dans l'ordre alphabétique, à la suite des menus de la fenêtre de l'application Access et de l'objet actif.

III-A - Menu système de l'application Access

Il s'agit ici de la fenêtre de l'application Access, dont le menu est disponible en cliquant sur l'icône de l'application, en haut à gauche de la fenêtre.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Agrandir

acCmdAppMaximize

10

Oui

Oui

Oui

Oui

Oui

Oui

Déplacer

acCmdAppMove

12

Oui

Oui

Oui

Oui

Oui

Oui

Fermer

acCmdExit

3

Oui

Oui

Oui

Oui

Oui

Oui

Réduire

acCmdAppMinimize

11

Oui

Oui

Oui

Oui

Oui

Oui

Restaurer

acCmdAppRestore

9

Oui

Oui

Oui

Oui

Oui

Oui

Taille

acCmdAppSize

13

Oui

Oui

Oui

Oui

Oui

Oui

Une constante retiendra particulièrement notre attention. Lorsqu'on ouvre une application, il arrive parfois que ce soit dans une fenêtre d'application minimisée, telle qu'elle l'était à la dernière fermeture d'Access. Ceci se produit également lorsqu'on ouvre Access à partir d'un batch.

Dès le lancement de l'application, dans une fonction appelée par une macro AutoExec par exemple, on peut maximiser la fenêtre Access en toute circonstance :

Code

'Maximise la fenêtre de l'application Access
DoCmd.RunCommand acCmdAppMaximize

III-B - Menu de l'objet actif

C'est le menu système des formulaires et états. Le menu est disponible en cliquant sur l'icône de l'objet, en haut à gauche de la fenêtre.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Agrandissement

acCmdDocMaximize

15

Oui

Oui

Oui

Oui

Oui

Oui

Déplacer

acCmdDocMove

16

Oui

Oui

Oui

Oui

Oui

Oui

Fermer

acCmdClose

58

Oui

Oui

Oui

Oui

Oui

Oui

Réduction

acCmdDocMinimize

60

Oui

Oui

Oui

Oui

Oui

Oui

Restauration

acCmdDocRestore

14

Oui

Oui

Oui

Oui

Oui

Oui

Taille

acCmdDocSize

17

Oui

Oui

Oui

Oui

Oui

Oui

On peut donc simuler le comportement de ce menu. Sur un formulaire, on place cinq boutons : cmdRestauration, cmdDeplacer, cmdTaille, cmdAgrandissement et cmdFermer. Puis, sur les événements Sur ouverture du formulaire et Sur clic de chaque bouton, nous ajoutons les codes suivants :

Code

Private Sub Form_Open(Cancel As Integer)
'Désactivation du bouton Restauration
Me.cmdRestauration.Enabled = False
End Sub

Private Sub cmdRestauration_Click()
'Le focus est passé au bouton Fermer pour éviter une erreur
Me.cmdFermer.SetFocus
'Modification du statut des boutons
Me.cmdRestauration.Enabled = False
Me.cmdDeplacer.Enabled = True
Me.cmdTaille.Enabled = True
Me.cmdAgrandissement.Enabled = True
'Exécution de la commande
DoCmd.RunCommand acCmdDocRestore
End Sub

Private Sub cmdDeplacer_Click()
'Exécution de la commande
DoCmd.RunCommand acCmdDocMove
End Sub

Private Sub cmdTaille_Click()
'Exécution de la commande
DoCmd.RunCommand acCmdDocSize
End Sub

Private Sub cmdAgrandissement_Click()
'Le focus est passé au bouton Fermer pour éviter une erreur
Me.cmdFermer.SetFocus
'Modification du statut des boutons
Me.cmdRestauration.Enabled = True
Me.cmdDeplacer.Enabled = False
Me.cmdTaille.Enabled = False
Me.cmdAgrandissement.Enabled = False
'Exécution de la commande
DoCmd.RunCommand acCmdDocMaximize
End Sub

Private Sub cmdFermer_Click()
'Exécution de la commande
DoCmd.RunCommand acCmdClose
End Sub

On notera qu'on a volontairement renoncé à reproduire le comportement de la commande Réduction, les boutons n'étant plus accessibles une fois la fenêtre minimisée.

III-C - Menu Affichage

Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.

Commande

Constante Runcommand

Valeur

97

2000

2002

2003

2007

2010

Actualiser

acCmdRefresh

18

Oui

Oui

Oui

Oui

Oui

Oui

Aligner les icônes

acCmdLineUpIcons

213

Oui

Oui

Oui

Oui

Oui

Oui

Code

acCmdViewCode

170

Oui

Oui

Oui

Oui

Oui

Oui

Détails

acCmdViewDetails

210

Oui

Oui

Oui

Oui

Oui

Oui

Grandes icônes

acCmdViewLargeIcons

209

Oui

Oui

Oui

Oui

Oui

Oui

Liste

acCmdViewList

212

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Formulaires

acCmdViewForms

112

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Macros

acCmdViewMacros

114

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Modules

acCmdViewModules

115

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Rapports

acCmdViewReports

113

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Requêtes

acCmdViewQueries

111

Oui

Oui

Oui

Oui

Oui

Oui

Objets de la base - Tables

acCmdViewTables

110

Oui

Oui

Oui

Oui

Oui

Oui

Pages - Une page

acCmdPreviewOnePage

246

Oui

Oui

Oui

Oui

Oui

Oui

Pages - Deux pages

acCmdPreviewTwoPages

247

Oui

Oui

Oui

Oui

Oui

Oui

Pages - Quatre pages

acCmdPreviewFourPages

248

Oui

Oui

Oui

Oui

Oui

Oui

Pages - Huit pages

acCmdPreviewEightPages

249

Oui

Oui

Oui

Oui

Oui

Oui

Pages - Douze pages

acCmdPreviewTwelvePages

250

Oui

Oui

Oui

Oui

Oui

Oui

Petites icônes

acCmdViewSmallIcons

211

Oui

Oui

Oui

Oui

Oui

Oui

Propriétés

acCmdProperties

287

Oui

Oui

Oui

Oui

Oui

Oui

Réorganiser les icônes - Par date de création

acCmdArrangeIcons
ByCreated

216

Oui

Oui

Oui

Oui

Oui

Oui

Réorganiser les icônes - Par date de modification

acCmdArrangeIcons
ByModified

217

Oui

Oui

Oui

Oui

Oui

Oui

Réorganiser les icônes - Par nom

acCmdArrangeIconsByName

214

Oui

Oui

Oui

Oui

Oui

Oui

Réorganiser les icônes - Par type

acCmdArrangeIconsByType

215

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 10 %

acCmdZoom10

244

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 25 %

acCmdZoom25

243

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 50 %

acCmdZoom50

242

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 75 %

acCmdZoom75

241

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 100 %

acCmdZoom100

240

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 150 %

acCmdZoom150

239

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 200 %

acCmdZoom200

238

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - 500 %

acCmdZoom500

481

Non

Non

Oui

Oui

Oui

Oui

Zoom - Largeur de page

acCmdFitToWindow

245

Oui

Oui

Oui

Oui

Oui

Oui

Zoom - Maximum 1000 %

acCmdZoom1000

482

Non

Non

Oui

Oui

Oui

Oui

En ouvrant un état, on peut l'ajuster à la fenêtre Access et choisir le zoom à appliquer. Il n'est pas possible de le faire depuis l'état, mais à partir de la procédure qui ouvre celui-ci.

Sur un formulaire, on place un bouton, cmdFacture et une liste déroulante, cboZoom. On renseigne les propriétés de cette dernière comme suit :

1. Origine source = Liste valeurs ;

2. Contenu = 50;75;100;150;200 ;

3. Valeur par défaut = 100 ;

4. Limiter à liste= Oui.

Dans l'événement Sur clic du bouton, on écrit le code suivant :

Code

Private Sub cmdFacture_Click()
'Ouvre l'état facture en le maximisant
DoCmd.OpenReport "rptFacture", acViewPreview
DoCmd.Maximize
'Ajustement à la fenêtre Access
DoCmd.RunCommand acCmdFitToWindow
'Applique le zoom sélectionné
Select Case Me.cboZoom
Case 50
DoCmd.RunCommand acCmdZoom50
Case 75
DoCmd.RunCommand acCmdZoom75
Case 100
DoCmd.RunCommand acCmdZoom100
Case 150
DoCmd.RunCommand acCmdZoom150
Case 200
DoCmd.RunCommand acCmdZoom200
End Select
End Sub

Variante : ouvrir l'état en affichant une ou plusieurs pages :

Code

Private Sub cmdFacture_Click()
'Ouvre l'état facture en le maximisant
DoCmd.OpenReport "rptFacture", acViewPreview
DoCmd.Maximize
'Ajustement à la fenêtre Access
DoCmd.RunCommand acCmdFitToWindow
'Affiche le nombre de pages sélectionnées
Select Case Me.cboNbPages
Case 1
DoCmd.RunCommand acCmdPreviewOnePage
Case 2
DoCmd.RunCommand acCmdPreviewTwoPages
Case 4
DoCmd.RunCommand acCmdPreviewFourPages
End Select
End Sub

III-D - Menu Aide

Disponibilité du menu : dans toute l'application.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Aide sur Microsoft Access

acCmdAnswerWizard

235

Oui

Oui

Oui

Oui

Oui

Oui

À propos de Microsoft Access

acCmdAboutMicrosoftAccess

35

Oui

Oui

Oui

Oui

Oui

Oui

Microsoft Office sur le Web

acCmdMicrosoftOnTheWeb

236

Oui

Oui

Oui

Oui

Oui

Oui

On peut par exemple afficher l'aide d'Access :

Code

'Affiche la fenêtre d'aide d'Access
DoCmd.RunCommand acCmdAnswerWizard

Cela se limite cependant à ouvrir la fenêtre, sans pouvoir utiliser un contexte particulier.

Ou ouvrir son navigateur par défaut directement sur le site Office de Microsoft :

Code

'Ouvre le navigateur par défaut sur le site Office de Microsoft
DoCmd.RunCommand acCmdMicrosoftOnTheWeb

III-E - Menu Édition

Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Annuler champ/enregistrement en cours (entrée)

acCmdUndo

292

Oui

Oui

Oui

Oui

Oui

Oui

Atteindre - Dernier

acCmdRecordsGoToLast

68

Oui

Oui

Oui

Oui

Oui

Oui

Atteindre - Nouvel enregistrement

acCmdRecordsGoToNew

28

Oui

Oui

Oui

Oui

Oui

Oui

Atteindre - Précédent

acCmdRecordsGoToPrevious

66

Oui

Oui

Oui

Oui

Oui

Oui

Atteindre - Premier

acCmdRecordsGoToFirst

67

Oui

Oui

Oui

Oui

Oui

Oui

Atteindre - Suivant

acCmdRecordsGoToNext

65

Oui

Oui

Oui

Oui

Oui

Oui

Collage spécial...

acCmdPasteSpecial

64

Oui

Oui

Oui

Oui

Oui

Oui

Coller

acCmdPaste

191

Oui

Oui

Oui

Oui

Oui

Oui

Coller par ajout

acCmdPasteAppend

38

Oui

Oui

Oui

Oui

Oui

Oui

Copier

acCmdCopy

190

Oui

Oui

Oui

Oui

Oui

Oui

Couper

acCmdCut

189

Oui

Oui

Oui

Oui

Oui

Oui

Rechercher...

acCmdFind

30

Oui

Oui

Oui

Oui

Oui

Oui

Remplacer...

acCmdReplace

29

Oui

Oui

Oui

Oui

Oui

Oui

Renommer

acCmdRename

143

Oui

Oui

Oui

Oui

Oui

Oui

Sélectionner l'enregistrement

acCmdSelectRecord

50

Oui

Oui

Oui

Oui

Oui

Oui

Sélectionner tous les enregistrements

acCmdSelectAllRecords

109

Oui

Oui

Oui

Oui

Oui

Oui

Supprimer

acCmdDelete

337

Oui

Oui

Oui

Oui

Oui

Oui

Supprimer l'enregistrement

acCmdDeleteRecord

223

Oui

Oui

Oui

Oui

Oui

Oui

Il est évidemment possible d'annuler les saisies effectuées :

Code

Private Sub cmdAnnuler_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdUndo
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Annuler"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Recréer les boutons de navigation :

Code

Private Sub cmdPremier_Click()
'Premier enregistrement
DoCmd.RunCommand acCmdRecordsGoToFirst
End Sub

Private Sub cmdPrecedent_Click()
'Enregistrement précédent
DoCmd.RunCommand acCmdRecordsGoToPrevious
End Sub

Private Sub cmdSuivant_Click()
'Enregistrement suivant
DoCmd.RunCommand acCmdRecordsGoToNext
End Sub

Private Sub cmdDernier_Click()
'Dernier enregistrement
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub

Private Sub cmdNouveau_Click()
'Nouvel enregistrement
DoCmd.RunCommand acCmdRecordsGoToNew
End Sub

Ces commandes ne reproduisent pas le comportement des boutons de navigation. Si vous désirez désactiver le bouton Précédent lorsque vous êtes sur le premier enregistrement, par exemple, il est nécessaire de recourir à du code supplémentaire.

Intéressante également, la possibilité de pouvoir copier ou couper des données et de les coller dans un autre champ :

Code

Private Sub CmdCopier_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Le point d'insertion est placé au début de la zone à sélectionner
Screen.ActiveControl.SelStart = 0
'Sélection du nombre de caractères contenus dans le contrôle
Screen.ActiveControl.SelLength = Len(Screen.ActiveControl)
'Exécution de la commande
DoCmd.RunCommand acCmdCopy
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Copier"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Private Sub cmdCouper_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Le point d'insertion est placé au début de la zone à sélectionner
Screen.ActiveControl.SelStart = 0
'Sélection du nombre de caractères contenus dans le contrôle
Screen.ActiveControl.SelLength = Len(Screen.ActiveControl)
'Exécution de la commande
DoCmd.RunCommand acCmdCut
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Couper"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Private Sub cmdColler_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdPaste
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Coller"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Une manière simple de dupliquer un enregistrement. Attention, ceci suppose que vous utilisiez un champ de type NuméroAuto comme clé primaire de la table sous-jacente du formulaire :

Code

Private Sub cmdCollerAjout_Click()
On Error GoTo GestionErreurs
'Sélection de l'enregistrement
DoCmd.RunCommand acCmdSelectRecord
'Copie de l'enregistrement
DoCmd.RunCommand acCmdCopy
'Exécution de la commande
DoCmd.RunCommand acCmdPasteAppend
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Coller par ajout"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Suppression d'un enregistrement :

Code

Private Sub cmdSupprimer_Click()
On Error GoTo GestionErreurs
'Désactive l'affichage des messages système
DoCmd.SetWarnings False
If MsgBox("Voulez-vous vraiment supprimer cet enregistrement ?", _
vbQuestion + vbYesNo + vbDefaultButton2, "Suppression") = vbYes Then
'Sélection de l'enregistrement
DoCmd.RunCommand acCmdSelectRecord
'Exécution de la commande
DoCmd.RunCommand acCmdDeleteRecord
End If
Exit_cmdSupprimer:
'Réactive l'affichage des messages système
DoCmd.SetWarnings True
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox _
"La commande ""Supprimer l'enregistrement"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Resume Exit_cmdSupprimer
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
Resume Exit_cmdSupprimer
End Select
End Sub

La sélection préalable de l'enregistrement est facultative si vous utilisez la constante acCmdDeleteRecord.

Elle est par contre obligatoire si vous utilisez simplement la constante acCmdDelete.

Affichage de la fenêtre Rechercher / Remplacer

Code

Private Sub cmdRechercher_Click()
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdFind
End Sub

Private Sub cmdRemplacer_Click()
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdReplace
End Sub

III-F - Menu Enregistrements

Disponibilité du menu : formulaires (formulaire, feuille de données), requêtes (feuille de données), tables (feuilles de données).

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Actualiser

acCmdRefresh

18

Oui

Oui

Oui

Oui

Oui

Oui

Afficher tous les enregistrements

acCmdRemoveFilterSort

144

Oui

Oui

Oui

Oui

Oui

Oui

Appliquer le filtre/tri

acCmdApplyFilterSort

93

Oui

Oui

Oui

Oui

Oui

Oui

Filtrer - Filtre/tri avancé...

acCmdAdvancedFilterSort

99

Oui

Oui

Oui

Oui

Oui

Oui

Filtrer - Filtrer hors sélection

acCmdFilterExcluding
Selection

277

Oui

Oui

Oui

Oui

Oui

Oui

Filtrer - Filtrer par formulaire

acCmdFilterByForm

207

Oui

Oui

Oui

Oui

Oui

Oui

Filtrer - Filtrer par sélection

acCmdFilterBySelection

208

Oui

Oui

Oui

Oui

Oui

Oui

Saisie de données

acCmdDataEntry

78

Oui

Oui

Oui

Oui

Oui

Oui

Sauvegarder l'enregistrement

acCmdSaveRecord

97

Oui

Oui

Oui

Oui

Oui

Oui

Trier - Tri croissant

acCmdSortAscending

163

Oui

Oui

Oui

Oui

Oui

Oui

Trier - Tri décroissant

acCmdSortDescending

164

Oui

Oui

Oui

Oui

Oui

Oui

Actualiser le formulaire :

Code

Private Sub cmdActualiser_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdRefresh
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Actualiser"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Filtrer les enregistrements par et hors sélection :

Code

Private Sub cmdFiltrerSelection_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdFilterBySelection
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Filtrer par sélection"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Private Sub cmdFiltrerHorsSelection_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdFilterExcludingSelection
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Filtrer hors sélection"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Basculer le formulaire en mode Saisie de données :

Code

Private Sub cmdSaisieDonnees_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdDataEntry
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Saisie de données"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Sauvegarder l'enregistrement :

Code

Private Sub cmdSauvegarder_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdSaveRecord
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Sauvegarder l'enregistrement"" n'est pas" & vbNewLine & _
"disponible pour l'instant !", vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Afficher tous les enregistrements :

Code

Private Sub cmdAfficherEnregistrements_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdRemoveFilterSort
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Afficher tous les enregistrements"" n'est pas" & vbNewLine & _
"disponible pour l'instant !", vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Tri croissant et décroissant :

Code

Private Sub cmdTriCroissant_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdSortAscending
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Tri croissant"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Private Sub cmdTriDecroissant_Click()
On Error GoTo GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand acCmdSortDescending
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Tri décroissant"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

III-G - Menu Fenêtre

Disponibilité du menu : dans toute l'application.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Afficher...

acCmdWindowUnhide

1

Oui

Oui

Oui

Oui

Oui

Oui

Ajuster à la taille du formulaire

acCmdSizeToFitForm

69

Oui

Oui

Oui

Oui

Oui

Oui

Cascade

acCmdWindowCascade

22

Oui

Oui

Oui

Oui

Oui

Oui

Masquer

acCmdWindowHide

2

Oui

Oui

Oui

Oui

Oui

Oui

Mosaïque horizontale

acCmdTileHorizontally

286

Oui

Oui

Oui

Oui

Oui

Oui

Mosaïque verticale

acCmdTileVertically

23

Oui

Oui

Oui

Oui

Oui

Oui

Réorganiser les icônes

acCmdWindowArrangeIcons

24

Oui

Oui

Oui

Oui

Oui

Oui

Lorsque plusieurs fenêtres sont ouvertes simultanément à l'écran, il peut être intéressant de pouvoir en réorganiser l'affichage.

Les commandes ci-dessous permettent de les réorganiser en cascade, en mosaïque horizontale ou verticale :

Code

'Affiche les fenêtres ouvertes en cascade
DoCmd.RunCommand acCmdWindowCascade

'Affiche les fenêtres ouvertes en mosaïque horizontale
DoCmd.RunCommand acCmdTileHorizontally

'Affiche les fenêtres ouvertes en mosaïque verticale
DoCmd.RunCommand acCmdTileVertically

III-H - Menu Fichier

Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Aperçu avant impression

acCmdPrintPreview

54

Oui

Oui

Oui

Oui

Oui

Oui

Données externes - Importer...

acCmdImport

257

Oui

Oui

Oui

Oui

Non

Non

Données externes - Lier les tables...

acCmdLinkTables

102

Oui

Oui

Oui

Oui

Oui

Oui

Enregistrer

acCmdSave

20

Oui

Oui

Oui

Oui

Oui

Oui

Enregistrer sous...

acCmdSaveAs

21

Oui

Oui

Oui

Oui

Oui

Oui

Exporter...

acCmdExport

487

Non

Non

Oui

Oui

Non

Non

Fermer

acCmdClose

58

Oui

Oui

Oui

Oui

Oui

Oui

Imprimer...

acCmdPrint

340

Oui

Oui

Oui

Oui

Oui

Oui

Mise en page...

acCmdPageSetup

32

Oui

Oui

Oui

Oui

Oui

Oui

Nouvelle base de données...

acCmdNewDatabase

26

Oui

Oui

Oui

Oui

Oui

Oui

Ouvrir...

acCmdOpenDatabase

25

Oui

Oui

Oui

Oui

Oui

Oui

Propriétés de la base

acCmdDatabaseProperties

256

Oui

Oui

Oui

Oui

Oui

Oui

Quitter

acCmdExit

3

Oui

Oui

Oui

Oui

Oui

Oui

Affichage des propriétés de la base :

Code

Private Sub cmdAfficherProprietes_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdDatabaseProperties
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Propriétés de la base"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

Quitter Access :

Code

Private Sub cmdQuitterAccess_Click()
On Error GoTo GestionErreurs
'Quitter Access
DoCmd.RunCommand acCmdQuit
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Quitter"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

III-I - Menu Format

Disponibilité du menu : formulaires (feuille de données, création), états (création), requêtes (feuille de données), tables (feuille de données).

Constante

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Afficher les colonnes...

acCmdUnhideColumns

80

Oui

Oui

Oui

Oui

Oui

Oui

Feuille de données...

acCmdDatasheetView

282

Oui

Oui

Oui

Oui

Oui

Oui

Figer les colonnes

acCmdFreezeColumn

105

Oui

Oui

Oui

Oui

Oui

Oui

Hauteur de ligne...

acCmdRowHeight

116

Oui

Oui

Oui

Oui

Oui

Oui

Largeur de colonne...

acCmdColumnWidth

117

Oui

Oui

Oui

Oui

Oui

Oui

Libérer toutes les colonnes

acCmdUnfreezeAllColumns

106

Oui

Oui

Oui

Oui

Oui

Oui

Masquer les colonnes

acCmdHideColumns

79

Oui

Oui

Oui

Oui

Oui

Oui

Police...

acCmdFont

19

Oui

Oui

Oui

Oui

Oui

Oui

Les commandes de ce menu permettent, entre autres, de modifier le comportement des formulaires ou sous-formulaires en mode feuille de données. On peut par exemple figer ou libérer les colonnes d'un sous-formulaire.

Soit un formulaire frmCommandes, dans lequel est inséré un sous-formulaire frmCommandesSub, lequel affiche diverses informations relatives au détail de la commande.

Dans le formulaire, on ajoute un bouton cmdColonne, avec comme légende Figer les colonnes et on nomme le contrôle contenant le sous-formulaire ctlDetailCommande. Dans l'événement Sur clic du bouton, on écrit le code suivant :

Code

Private Sub cmdColonne_Click()
On Error GoTo GestionErreurs
'Le focus est donné au sous-formulaire
Me.ctlDetailCommande.SetFocus
'Test du libellé du bouton
If Me.cmdColonne.Caption = "Figer les colonnes" Then
'Exécution de la commande "Figer les colonnes"
DoCmd.RunCommand acCmdFreezeColumn
'Modification du libellé du bouton
Me.cmdColonne.Caption = "Libérer les colonnes"
Else
'Exécution de la commande "Libérer les colonnes"
DoCmd.RunCommand acCmdUnfreezeAllColumns
'Modification du libellé du bouton
Me.cmdColonne.Caption = "Figer les colonnes"
End If
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande spécifiée n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

III-J - Menu Insertion

Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (création), requêtes (feuille de données, création), tables (feuille de données, création), éditeur VBA, etc.

Commande

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

État

acCmdNewObjectReport

137

Oui

Oui

Oui

Oui

Oui

Oui

État instantané

acCmdNewObjectAutoReport

194

Oui

Oui

Oui

Oui

Oui

Oui

Formulaire

acCmdNewObjectForm

136

Oui

Oui

Oui

Oui

Oui

Oui

Formulaire instantané

acCmdNewObjectAutoForm

193

Oui

Oui

Oui

Oui

Oui

Oui

Macro

acCmdNewObjectMacro

138

Oui

Oui

Oui

Oui

Oui

Oui

Module

acCmdNewObjectModule

139

Oui

Oui

Oui

Oui

Oui

Oui

Module de classe

acCmdNewObject
ClassModule

140

Oui

Oui

Oui

Oui

Oui

Oui

Requête

acCmdNewObjectQuery

135

Oui

Oui

Oui

Oui

Oui

Oui

Table

acCmdNewObjectTable

134

Oui

Oui

Oui

Oui

Oui

Oui

Ce menu n'offre guère de commandes qui pouvant être utilisées de façon simple dans une application. A titre d'exemple, on trouve cependant des articles sur le support de Microsoft, comme celui-ci, qui fournit des solutions pour créer, modifier, rechercher et remplacer un module avec Visual Basic.

III-K - Menu Outils

Disponibilité du menu : dans toute l'application.

Constante

Constante RunCommand

Valeur

97

2000

2002

2003

2007

2010

Analyse - Documentation

acCmdDocumenter

285

Oui

Oui

Oui

Oui

Oui

Oui

Analyse - Performances

acCmdAnalyzePerformance

283

Oui

Oui

Oui

Oui

Oui

Oui

Analyse - Table

acCmdAnalyzeTable

284

Oui

Oui

Oui

Oui

Oui

Oui

Contrôles ActiveX...

acCmdRegister
ActiveXControls

254

Oui

Oui

Oui

Oui

Oui

Oui

Démarrage...

acCmdStartupProperties

224

Oui

Oui

Oui

Oui

Oui

Oui

Liaisons Office - Analyse avec Microsoft Excel

acCmdOutputToExcel

175

Oui

Oui

Oui

Oui

Oui

Oui

Liaisons Office - Fusion avec Microsoft Word

acCmdWordMailMerge

195

Oui

Oui

Oui

Oui

Oui

Oui

Liaisons Office - Publication avec Microsoft Word

acCmdOutputToRTF

176

Oui

Oui

Oui

Oui

Oui

Oui

Macro - Convertir les macros en Visual Basic

acCmdConvertMacros
ToVisualBasic

279

Oui

Oui

Oui

Oui

Oui

Oui

Macro - Créer un menu contextuel d'après macro

acCmdCreateShortcut
MenuFromMacro

336

Oui

Oui

Oui

Oui

Oui

Oui

Macro - Créer un menu d'après macro

acCmdCreate
MenuFromMacro

334

Oui

Oui

Oui

Oui

Oui

Oui

Macro - Exécuter une macro...

acCmdRunMacro

31

Oui

Oui

Oui

Oui

Oui

Oui

Options...

acCmdOptions

49

Oui

Oui

Oui

Oui

Oui

Oui

Options de correction automatique...

acCmdAutoCorrect

261

Oui

Oui

Oui

Oui

Oui

Oui

Orthographe...

acCmdSpelling

269

Oui

Oui

Oui

Oui

Oui

Oui

Personnaliser...

acCmdToolbarsCustomize

165

Oui

Oui

Oui

Oui

Oui

Oui

Relations...

acCmdRelationships

133

Oui

Oui

Oui

Oui

Oui

Oui

Réplication - Créer un réplica...

acCmdCreateReplica

263

Oui

Oui

Oui

Oui

Oui

Oui

Réplication - Récupérer un document de création maître...

acCmdRecoverDesignMaster

265

Oui

Oui

Oui

Oui

Oui

Oui

Réplication - Résoudre les conflits...

acCmdResolveConflicts

266

Oui

Oui

Oui

Oui

Oui

Oui

Réplication - Synchroniser maintenant...

acCmdSynchronizeNow

264

Oui

Oui

Oui

Oui

Oui

Oui

Sécurité - Assistant Sécurité au niveau utilisateur...

acCmdUserLevel
SecurityWizard

276

Oui

Oui

Oui

Oui

Oui

Oui

Sécurité - Crypter/décrypter une base de données...

acCmdEncryptDecrypt
Database

5

Oui

Oui

Oui

Oui

Oui

Oui

Sécurité - Définir le mot de passe de la base de données...

acCmdSetDatabasePassword

275

Oui

Oui

Oui

Oui

Oui

Oui

Utilitaires... - Compacter une base de données

acCmdCompactDatabase

4

Oui

Oui

Oui

Oui

Oui

Oui

Utilitaires... - Convertir une base de données

acCmdConvertDatabase

171

Oui

Oui

Oui

Oui

Oui

Oui

Utilitaires... - Créer un fichier MDE...

acCmdMakeMDEFile

7

Oui

Oui

Oui

Oui

Oui

Oui

Utilitaires... - Fractionner une base de données

acCmdDatabaseSplitter

520

Non

Non

Oui

Oui

Oui

Oui

On peut exporter les données d'une table dans un fichier Excel de manière très simple. Sur un formulaire dépendant d'une table ou requête, on place un bouton. Dans l'événement Sur clic de ce dernier, on écrit le code suivant :

Code

Private Sub cmdExport_Click()
On Error GoTo GestionErreurs
'Exécution de la commande
DoCmd.RunCommand acCmdOutputToExcel
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Analyse avec Microsoft Excel"" n'est pas" & vbNewLine & _
"disponible pour l'instant !", vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

On peut exporter aussi facilement des données vers Microsoft Word au format .rtf, en utilisant la constante acCmdOutputToRTF.

L'utilisation du vérificateur d'orthographe est également possible. Soit un champ txtMemo et un bouton auquel on associe le code suivant dans l'événement Sur clic :

Code

Private Sub cmdVerifierOrtho_Click()
On Error GoTo GestionErreurs
'Le focus est donné au champ Mémo
Me.txtMemo.SetFocus
'Le point d'insertion est placé au début du champ
Me.txtMemo.SelStart = 0
'Sélection du texte contenu dans le champ
Me.txtMemo.SelLength = Len(Me.txtMemo)
'Exécution de la commande
RunCommand acCmdSpelling
Exit Sub
GestionErreurs:
Select Case Err.Number
Case 2046
'Affichage d'un message
MsgBox "La commande ""Orthographe"" n'est pas disponible pour l'instant !", _
vbInformation, "Erreur !"
Case Else
MsgBox "Une erreur inattendue s'est produite !" & vbNewLine & "Erreur no : " _
& Err.Number & vbNewLine & Err.Description, vbCritical, "Erreur !"
End Select
End Sub

IV - DoMenuItem vers RunCommand

Dès la version Access 97, la méthode RunCommand a remplacé la méthode DoMenuItem. Celle-ci a été maintenue dans les dernières versions d'Access uniquement par souci de compatibilité avec les versions antérieures, Access 2 (version 2.0) et Access 95 (version 7.0).

Lorsque qu'on convertit une application d'une version Access précédente et que le code Visual Basic contient une méthode DoMenuItem, celle-ci n'est pas convertie dans l'équivalent de la méthode RunCommand.

De plus, certaines commandes des versions antérieures d'Access ne sont plus disponibles dans les nouvelles versions et provoquent une erreur lorsqu'elles sont exécutées dans Visual Basic. Il est nécessaire de modifier le code Visual Basic pour remplacer ou supprimer les occurrences de telles méthodes DoMenuItem.

Les tableaux ci-après indiquent l'équivalence de certaines constantes pour Access 95 (version 7.0). Ils ont été établis sur la base des codes trouvés sur les forums Access.

Menu Edition

Constante RunCommand

acFormBar, acEditMenu, 0, , acMenuVer70

acCmdUndo

acFormBar, acEditMenu, acUndo, , acMenuVer70

acCmdUndo

acFormBar, acEditMenu, 1, , acMenuVer70

acCmdCut

acFormBar, acEditMenu, 2, , acMenuVer70

acCmdCopy

acFormBar, acEditMenu, 3, , acMenuVer70

acCmdPaste

acFormBar, acEditMenu, acPaste, , acMenuVer70

acCmdPaste

acFormBar, acEditMenu, 4, , acMenuVer70

acCmdPasteSpecial

acFormBar, acEditMenu, 5, , acMenuVer70

acCmdPasteAppend

acFormBar, acEditMenu, 6, , acMenuVer70

acCmdDeleteRecord

acFormBar, acEditMenu, 8, , acMenuVer70

acCmdSelectRecord

acFormBar, acEditMenu, 10, , acMenuVer70

acCmdFind

acFormBar, acEditMenu, 12, 0, acMenuVer70

acCmdRecordsGoToFirst

acFormBar, acEditMenu, 12, 1, acMenuVer70

acCmdRecordsGoToLast

acFormBar, acEditMenu, 12, 2, acMenuVer70

acCmdRecordsGoToNext

acFormBar, acEditMenu, 12, 3, acMenuVer70

acCmdRecordsGoToPrevious

acFormBar, acEditMenu, 12, 4, acMenuVer70

acCmdRecordsGoToNew

Menu Enregistrements

Constante RunCommand

acFormBar, acRecordsMenu, 0, 0, acMenuVer70

acCmdFilterByForm

acFormBar, acRecordsMenu, 0, 1, acMenuVer70

acCmdFilterBySelection

acFormBar, acRecordsMenu, 0, 2, acMenuVer70

acCmdAdvancedFilterSort

acFormBar, acRecordsMenu, 1, 0, acMenuVer70

acCmdSortAscending

acFormBar, acRecordsMenu, 1, 1, acMenuVer70

acCmdSortDescending

acFormBar, acRecordsMenu, 2, , acMenuVer70

acCmdApplyFilterSort

acFormBar, acRecordsMenu, 3, , acMenuVer70

acCmdRemoveFilterSort

acFormBar, acRecordsMenu, 4, , acMenuVer70

acCmdSaveRecord

acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

acCmdSaveRecord

acFormBar, acRecordsMenu, 5, , acMenuVer70

acCmdRefresh

Les menus d'Access 2 ayant pratiquement disparus aujourd'hui, nous avons renoncé à établir un tableau de concordance pour cette version.

V - Conclusion

Nous sommes arrivés au terme de cet article. Celui-ci, plus qu'un tutoriel, se veut d'abord et surtout être une base de connaissance.

Le recours aux commandes intégrées de menus peut s'avérer intéressante dans une application, puisqu'elles permettent de reproduire fidèlement et facilement l'interface d'utilisation d'Access.

VI - Remerciements

Je tiens à remercier tous les membres de l'équipe Office qui m'ont dispensé sans compter encouragements et conseils. Remerciements tout particuliers à Arkham46 pour son outil d'extraction des images des boutons de commandes, une application Access naturellement, ainsi qu'à jacques_jean pour sa relecture.

VII - Annexe

En annexe, la liste complète des constantes, leur valeur et leur disponibilité selon les versions d'Access.

Liste