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.
- Application.RunCommand (Command).
- DoCmd.RunCommand (Command).
- 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 :
'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 35Dans 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 :
'Affiche l'état avec un grossissement de 100%
DoCmd.RunCommand acCmdZoom100sans 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 :
'Maximise la fenêtre de l'application Access
DoCmd.RunCommand acCmdAppMaximizeIII-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 :
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 SubOn 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 :
- Origine source = Liste valeurs ;
- Contenu = 50;75;100;150;200 ;
- Valeur par défaut = 100 ;
- Limiter à liste= Oui.
Dans l'événement Sur clic du bouton, on écrit le code suivant :
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 SubVariante : ouvrir l'état en affichant une ou plusieurs pages :
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 SubIII-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 :
'Affiche la fenêtre d'aide d'Access
DoCmd.RunCommand acCmdAnswerWizardCela 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 :
'Ouvre le navigateur par défaut sur le site Office de Microsoft
DoCmd.RunCommand acCmdMicrosoftOnTheWebIII-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 :
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 SubRecréer les boutons de navigation :
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 SubCes 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 :
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 SubUne 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 :
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 SubSuppression d'un enregistrement :
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
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 SubIII-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 :
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 SubFiltrer les enregistrements par et hors sélection :
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 SubBasculer le formulaire en mode Saisie de données :
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 SubSauvegarder l'enregistrement :
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 SubAfficher tous les enregistrements :
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 SubTri croissant et décroissant :
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 SubIII-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 :
'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 acCmdTileVerticallyIII-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 :
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 SubQuitter Access :
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 SubIII-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 :
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 SubIII-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 :
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 SubOn 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 :
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 SubIV. 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.







