Access : les commandes intégrées des menus

Exécution des commandes intégrées des menus et des barres d'outils. 7 commentaires Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

Image non disponible

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.

Image non disponible

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
Sélectionnez

'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
Sélectionnez

'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 :

Image non disponible

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
Image non disponible Agrandir acCmdAppMaximize 10 Oui Oui Oui Oui Oui Oui
  Déplacer acCmdAppMove 12 Oui Oui Oui Oui Oui Oui
Image non disponible Fermer acCmdExit 3 Oui Oui Oui Oui Oui Oui
Image non disponible Réduire acCmdAppMinimize 11 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Sélectionnez

'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
Image non disponible Agrandissement acCmdDocMaximize 15 Oui Oui Oui Oui Oui Oui
  Déplacer acCmdDocMove 16 Oui Oui Oui Oui Oui Oui
Image non disponible Fermer acCmdClose 58 Oui Oui Oui Oui Oui Oui
Image non disponible Réduction acCmdDocMinimize 60 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Sélectionnez

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
Image non disponible Actualiser acCmdRefresh 18 Oui Oui Oui Oui Oui Oui
Image non disponible Aligner les icônes acCmdLineUpIcons 213 Oui Oui Oui Oui Oui Oui
Image non disponible Code acCmdViewCode 170 Oui Oui Oui Oui Oui Oui
Image non disponible Détails acCmdViewDetails 210 Oui Oui Oui Oui Oui Oui
Image non disponible Grandes icônes acCmdViewLargeIcons 209 Oui Oui Oui Oui Oui Oui
Image non disponible Liste acCmdViewList 212 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Formulaires acCmdViewForms 112 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Macros acCmdViewMacros 114 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Modules acCmdViewModules 115 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Rapports acCmdViewReports 113 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Requêtes acCmdViewQueries 111 Oui Oui Oui Oui Oui Oui
Image non disponible Objets de la base - Tables acCmdViewTables 110 Oui Oui Oui Oui Oui Oui
Image non disponible Pages - Une page acCmdPreviewOnePage 246 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Petites icônes acCmdViewSmallIcons 211 Oui Oui Oui Oui Oui Oui
Image non disponible Propriétés acCmdProperties 287 Oui Oui Oui Oui Oui Oui
Image non disponible Réorganiser les icônes - Par date de création acCmdArrangeIcons
ByCreated
216 Oui Oui Oui Oui Oui Oui
Image non disponible Réorganiser les icônes - Par date de modification acCmdArrangeIcons
ByModified
217 Oui Oui Oui Oui Oui Oui
Image non disponible Réorganiser les icônes - Par nom acCmdArrangeIconsByName 214 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible 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
Image non disponible 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
Sélectionnez

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
Sélectionnez

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
Image non disponible 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
Sélectionnez

'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
Sélectionnez

'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
Image non disponible Annuler champ/enregistrement en cours (entrée) acCmdUndo 292 Oui Oui Oui Oui Oui Oui
Image non disponible Atteindre - Dernier acCmdRecordsGoToLast 68 Oui Oui Oui Oui Oui Oui
Image non disponible Atteindre - Nouvel enregistrement acCmdRecordsGoToNew 28 Oui Oui Oui Oui Oui Oui
Image non disponible Atteindre - Précédent acCmdRecordsGoToPrevious 66 Oui Oui Oui Oui Oui Oui
Image non disponible Atteindre - Premier acCmdRecordsGoToFirst 67 Oui Oui Oui Oui Oui Oui
Image non disponible Atteindre - Suivant acCmdRecordsGoToNext 65 Oui Oui Oui Oui Oui Oui
Image non disponible Collage spécial... acCmdPasteSpecial 64 Oui Oui Oui Oui Oui Oui
Image non disponible Coller acCmdPaste 191 Oui Oui Oui Oui Oui Oui
  Coller par ajout acCmdPasteAppend 38 Oui Oui Oui Oui Oui Oui
Image non disponible Copier acCmdCopy 190 Oui Oui Oui Oui Oui Oui
Image non disponible Couper acCmdCut 189 Oui Oui Oui Oui Oui Oui
Image non disponible Rechercher... acCmdFind 30 Oui Oui Oui Oui Oui Oui
Image non disponible Remplacer... acCmdReplace 29 Oui Oui Oui Oui Oui Oui
Image non disponible Renommer acCmdRename 143 Oui Oui Oui Oui Oui Oui
Image non disponible Sélectionner l'enregistrement acCmdSelectRecord 50 Oui Oui Oui Oui Oui Oui
Image non disponible Sélectionner tous les enregistrements acCmdSelectAllRecords 109 Oui Oui Oui Oui Oui Oui
Image non disponible Supprimer acCmdDelete 337 Oui Oui Oui Oui Oui Oui
Image non disponible Supprimer l'enregistrement acCmdDeleteRecord 223 Oui Oui Oui Oui Oui Oui

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

Code
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Image non disponible Actualiser acCmdRefresh 18 Oui Oui Oui Oui Oui Oui
Image non disponible Afficher tous les enregistrements acCmdRemoveFilterSort 144 Oui Oui Oui Oui Oui Oui
Image non disponible Appliquer le filtre/tri acCmdApplyFilterSort 93 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Filtrer - Filtrer par formulaire acCmdFilterByForm 207 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Sauvegarder l'enregistrement acCmdSaveRecord 97 Oui Oui Oui Oui Oui Oui
Image non disponible Trier - Tri croissant acCmdSortAscending 163 Oui Oui Oui Oui Oui Oui
Image non disponible Trier - Tri décroissant acCmdSortDescending 164 Oui Oui Oui Oui Oui Oui


Actualiser le formulaire :

Code
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Sélectionnez

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
Image non disponible Afficher... acCmdWindowUnhide 1 Oui Oui Oui Oui Oui Oui
Image non disponible Ajuster à la taille du formulaire acCmdSizeToFitForm 69 Oui Oui Oui Oui Oui Oui
Image non disponible Cascade acCmdWindowCascade 22 Oui Oui Oui Oui Oui Oui
  Masquer acCmdWindowHide 2 Oui Oui Oui Oui Oui Oui
Image non disponible Mosaïque horizontale acCmdTileHorizontally 286 Oui Oui Oui Oui Oui Oui
Image non disponible Mosaïque verticale acCmdTileVertically 23 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Sélectionnez

'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
Image non disponible Aperçu avant impression acCmdPrintPreview 54 Oui Oui Oui Oui Oui Oui
Image non disponible Données externes - Importer... acCmdImport 257 Oui Oui Oui Oui Non Non
Image non disponible Données externes - Lier les tables... acCmdLinkTables 102 Oui Oui Oui Oui Oui Oui
Image non disponible Enregistrer acCmdSave 20 Oui Oui Oui Oui Oui Oui
Image non disponible Enregistrer sous... acCmdSaveAs 21 Oui Oui Oui Oui Oui Oui
  Exporter... acCmdExport 487 Non Non Oui Oui Non Non
Image non disponible Fermer acCmdClose 58 Oui Oui Oui Oui Oui Oui
Image non disponible Imprimer... acCmdPrint 340 Oui Oui Oui Oui Oui Oui
Image non disponible Mise en page... acCmdPageSetup 32 Oui Oui Oui Oui Oui Oui
Image non disponible Nouvelle base de données... acCmdNewDatabase 26 Oui Oui Oui Oui Oui Oui
Image non disponible Ouvrir... acCmdOpenDatabase 25 Oui Oui Oui Oui Oui Oui
Image non disponible Propriétés de la base acCmdDatabaseProperties 256 Oui Oui Oui Oui Oui Oui
Image non disponible Quitter acCmdExit 3 Oui Oui Oui Oui Oui Oui


Affichage des propriétés de la base :

Code
Sélectionnez

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
Sélectionnez

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
Image non disponible Feuille de données... acCmdDatasheetView 282 Oui Oui Oui Oui Oui Oui
Image non disponible Figer les colonnes acCmdFreezeColumn 105 Oui Oui Oui Oui Oui Oui
Image non disponible Hauteur de ligne... acCmdRowHeight 116 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible 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
Sélectionnez

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
Image non disponible État acCmdNewObjectReport 137 Oui Oui Oui Oui Oui Oui
Image non disponible État instantané acCmdNewObjectAutoReport 194 Oui Oui Oui Oui Oui Oui
Image non disponible Formulaire acCmdNewObjectForm 136 Oui Oui Oui Oui Oui Oui
Image non disponible Formulaire instantané acCmdNewObjectAutoForm 193 Oui Oui Oui Oui Oui Oui
Image non disponible Macro acCmdNewObjectMacro 138 Oui Oui Oui Oui Oui Oui
Image non disponible Module acCmdNewObjectModule 139 Oui Oui Oui Oui Oui Oui
Image non disponible Module de classe acCmdNewObject
ClassModule
140 Oui Oui Oui Oui Oui Oui
Image non disponible Requête acCmdNewObjectQuery 135 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Analyse - Documentation acCmdDocumenter 285 Oui Oui Oui Oui Oui Oui
Image non disponible Analyse - Performances acCmdAnalyzePerformance 283 Oui Oui Oui Oui Oui Oui
Image non disponible Analyse - Table acCmdAnalyzeTable 284 Oui Oui Oui Oui Oui Oui
Image non disponible Contrôles ActiveX... acCmdRegister
ActiveXControls
254 Oui Oui Oui Oui Oui Oui
  Démarrage... acCmdStartupProperties 224 Oui Oui Oui Oui Oui Oui
Image non disponible Liaisons Office - Analyse avec Microsoft Excel acCmdOutputToExcel 175 Oui Oui Oui Oui Oui Oui
Image non disponible Liaisons Office - Fusion avec Microsoft Word acCmdWordMailMerge 195 Oui Oui Oui Oui Oui Oui
Image non disponible Liaisons Office - Publication avec Microsoft Word acCmdOutputToRTF 176 Oui Oui Oui Oui Oui Oui
Image non disponible Macro - Convertir les macros en Visual Basic acCmdConvertMacros
ToVisualBasic
279 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Macro - Exécuter une macro... acCmdRunMacro 31 Oui Oui Oui Oui Oui Oui
  Options... acCmdOptions 49 Oui Oui Oui Oui Oui Oui
Image non disponible Options de correction automatique... acCmdAutoCorrect 261 Oui Oui Oui Oui Oui Oui
Image non disponible Orthographe... acCmdSpelling 269 Oui Oui Oui Oui Oui Oui
  Personnaliser... acCmdToolbarsCustomize 165 Oui Oui Oui Oui Oui Oui
Image non disponible Relations... acCmdRelationships 133 Oui Oui Oui Oui Oui Oui
Image non disponible Réplication - Créer un réplica... acCmdCreateReplica 263 Oui Oui Oui Oui Oui Oui
Image non disponible Réplication - Récupérer un document de création maître... acCmdRecoverDesignMaster 265 Oui Oui Oui Oui Oui Oui
Image non disponible Réplication - Résoudre les conflits... acCmdResolveConflicts 266 Oui Oui Oui Oui Oui Oui
Image non disponible Réplication - Synchroniser maintenant... acCmdSynchronizeNow 264 Oui Oui Oui Oui Oui Oui
Image non disponible Sécurité - Assistant Sécurité au niveau utilisateur... acCmdUserLevel
SecurityWizard
276 Oui Oui Oui Oui Oui Oui
Image non disponible Sécurité - Crypter/décrypter une base de données... acCmdEncryptDecrypt
Database
5 Oui Oui Oui Oui Oui Oui
Image non disponible Sécurité - Définir le mot de passe de la base de données... acCmdSetDatabasePassword 275 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Image non disponible Utilitaires... - Créer un fichier MDE... acCmdMakeMDEFile 7 Oui Oui Oui Oui Oui Oui
Image non disponible 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
Sélectionnez

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
Sélectionnez

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
Image non disponible acFormBar, acEditMenu, 0, , acMenuVer70 acCmdUndo
Image non disponible acFormBar, acEditMenu, acUndo, , acMenuVer70 acCmdUndo
Image non disponible acFormBar, acEditMenu, 1, , acMenuVer70 acCmdCut
Image non disponible acFormBar, acEditMenu, 2, , acMenuVer70 acCmdCopy
Image non disponible acFormBar, acEditMenu, 3, , acMenuVer70 acCmdPaste
Image non disponible acFormBar, acEditMenu, acPaste, , acMenuVer70 acCmdPaste
Image non disponible acFormBar, acEditMenu, 4, , acMenuVer70 acCmdPasteSpecial
  acFormBar, acEditMenu, 5, , acMenuVer70 acCmdPasteAppend
Image non disponible acFormBar, acEditMenu, 6, , acMenuVer70 acCmdDeleteRecord
Image non disponible acFormBar, acEditMenu, 8, , acMenuVer70 acCmdSelectRecord
Image non disponible acFormBar, acEditMenu, 10, , acMenuVer70 acCmdFind
Image non disponible acFormBar, acEditMenu, 12, 0, acMenuVer70 acCmdRecordsGoToFirst
Image non disponible acFormBar, acEditMenu, 12, 1, acMenuVer70 acCmdRecordsGoToLast
Image non disponible acFormBar, acEditMenu, 12, 2, acMenuVer70 acCmdRecordsGoToNext
Image non disponible acFormBar, acEditMenu, 12, 3, acMenuVer70 acCmdRecordsGoToPrevious
Image non disponible acFormBar, acEditMenu, 12, 4, acMenuVer70 acCmdRecordsGoToNew
  Menu Enregistrements Constante RunCommand
Image non disponible acFormBar, acRecordsMenu, 0, 0, acMenuVer70 acCmdFilterByForm
Image non disponible acFormBar, acRecordsMenu, 0, 1, acMenuVer70 acCmdFilterBySelection
Image non disponible acFormBar, acRecordsMenu, 0, 2, acMenuVer70 acCmdAdvancedFilterSort
Image non disponible acFormBar, acRecordsMenu, 1, 0, acMenuVer70 acCmdSortAscending
Image non disponible acFormBar, acRecordsMenu, 1, 1, acMenuVer70 acCmdSortDescending
Image non disponible acFormBar, acRecordsMenu, 2, , acMenuVer70 acCmdApplyFilterSort
Image non disponible acFormBar, acRecordsMenu, 3, , acMenuVer70 acCmdRemoveFilterSort
Image non disponible acFormBar, acRecordsMenu, 4, , acMenuVer70 acCmdSaveRecord
Image non disponible acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 acCmdSaveRecord
Image non disponible 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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.