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 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 :
'Affiche l'état avec un grossissement de 100%
DoCmd.RunCommand
acCmdZoom100
sans qu'un état soit ouvert en mode Aperçu avant impression, l'erreur suivante se produit :
Il est donc recommandé de prévoir une gestion spécifique de cette erreur. A titre d'exemple, voir le code de la commande Annuler.
III. Les commandes et les constantes▲
Les commandes sont groupées selon la logique des menus "classiques" des versions Access 97 à Access 2003. Il est important de ne pas perdre de vue que certaines commandes ne sont pas disponibles dans toutes les versions et que, certaines d'entre elles, peuvent se trouver dans des menus différents.
Autre difficulté, les menus et commandes disponibles diffèrent. Par exemple, les commandes à disposition ne sont pas identiques lorsqu'on affiche un formulaire en Mode formulaire ou un état en mode Aperçu avant impression. De même, le menu Débogage n'est disponible que lorsqu'on se trouve dans l'éditeur VBE.
Aussi, afin de faciliter vos recherches, les menus et commandes sont listés dans l'ordre alphabétique, à la suite des menus de la fenêtre de l'application Access et de l'objet actif.
III-A. Menu système de l'application Access▲
Il s'agit ici de la fenêtre de l'application Access, dont le menu est disponible en cliquant sur l'icône de l'application, en haut à gauche de la fenêtre.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Agrandir | acCmdAppMaximize | 10 | Oui | Oui | Oui | Oui | Oui | Oui | |
Déplacer | acCmdAppMove | 12 | Oui | Oui | Oui | Oui | Oui | Oui | |
Fermer | acCmdExit | 3 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réduire | acCmdAppMinimize | 11 | Oui | Oui | Oui | Oui | Oui | Oui | |
Restaurer | acCmdAppRestore | 9 | Oui | Oui | Oui | Oui | Oui | Oui | |
Taille | acCmdAppSize | 13 | Oui | Oui | Oui | Oui | Oui | Oui |
Une constante retiendra particulièrement notre attention. Lorsqu'on ouvre une application, il arrive parfois que ce soit dans une fenêtre d'application minimisée, telle qu'elle l'était à la dernière fermeture d'Access. Ceci se produit également lorsqu'on ouvre Access à partir d'un batch.
Dès le lancement de l'application, dans une fonction appelée par une macro AutoExec par exemple, on peut maximiser la fenêtre Access en toute circonstance :
'Maximise la fenêtre de l'application Access
DoCmd.RunCommand
acCmdAppMaximize
III-B. Menu de l'objet actif▲
C'est le menu système des formulaires et états. Le menu est disponible en cliquant sur l'icône de l'objet, en haut à gauche de la fenêtre.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Agrandissement | acCmdDocMaximize | 15 | Oui | Oui | Oui | Oui | Oui | Oui | |
Déplacer | acCmdDocMove | 16 | Oui | Oui | Oui | Oui | Oui | Oui | |
Fermer | acCmdClose | 58 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réduction | acCmdDocMinimize | 60 | Oui | Oui | Oui | Oui | Oui | Oui | |
Restauration | acCmdDocRestore | 14 | Oui | Oui | Oui | Oui | Oui | Oui | |
Taille | acCmdDocSize | 17 | Oui | Oui | Oui | Oui | Oui | Oui |
On peut donc simuler le comportement de ce menu. Sur un formulaire, on place cinq boutons : cmdRestauration, cmdDeplacer, cmdTaille, cmdAgrandissement et cmdFermer. Puis, sur les événements Sur ouverture du formulaire et Sur clic de chaque bouton, nous ajoutons les codes suivants :
Private
Sub
Form_Open
(
Cancel As
Integer
)
'Désactivation du bouton Restauration
Me.cmdRestauration.Enabled
=
False
End
Sub
Private
Sub
cmdRestauration_Click
(
)
'Le focus est passé au bouton Fermer pour éviter une erreur
Me.cmdFermer.SetFocus
'Modification du statut des boutons
Me.cmdRestauration.Enabled
=
False
Me.cmdDeplacer.Enabled
=
True
Me.cmdTaille.Enabled
=
True
Me.cmdAgrandissement.Enabled
=
True
'Exécution de la commande
DoCmd.RunCommand
acCmdDocRestore
End
Sub
Private
Sub
cmdDeplacer_Click
(
)
'Exécution de la commande
DoCmd.RunCommand
acCmdDocMove
End
Sub
Private
Sub
cmdTaille_Click
(
)
'Exécution de la commande
DoCmd.RunCommand
acCmdDocSize
End
Sub
Private
Sub
cmdAgrandissement_Click
(
)
'Le focus est passé au bouton Fermer pour éviter une erreur
Me.cmdFermer.SetFocus
'Modification du statut des boutons
Me.cmdRestauration.Enabled
=
True
Me.cmdDeplacer.Enabled
=
False
Me.cmdTaille.Enabled
=
False
Me.cmdAgrandissement.Enabled
=
False
'Exécution de la commande
DoCmd.RunCommand
acCmdDocMaximize
End
Sub
Private
Sub
cmdFermer_Click
(
)
'Exécution de la commande
DoCmd.RunCommand
acCmdClose
End
Sub
On notera qu'on a volontairement renoncé à reproduire le comportement de la commande Réduction, les boutons n'étant plus accessibles une fois la fenêtre minimisée.
III-C. Menu Affichage▲
Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.
Commande | Constante Runcommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Actualiser | acCmdRefresh | 18 | Oui | Oui | Oui | Oui | Oui | Oui | |
Aligner les icônes | acCmdLineUpIcons | 213 | Oui | Oui | Oui | Oui | Oui | Oui | |
Code | acCmdViewCode | 170 | Oui | Oui | Oui | Oui | Oui | Oui | |
Détails | acCmdViewDetails | 210 | Oui | Oui | Oui | Oui | Oui | Oui | |
Grandes icônes | acCmdViewLargeIcons | 209 | Oui | Oui | Oui | Oui | Oui | Oui | |
Liste | acCmdViewList | 212 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Formulaires | acCmdViewForms | 112 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Macros | acCmdViewMacros | 114 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Modules | acCmdViewModules | 115 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Rapports | acCmdViewReports | 113 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Requêtes | acCmdViewQueries | 111 | Oui | Oui | Oui | Oui | Oui | Oui | |
Objets de la base - Tables | acCmdViewTables | 110 | Oui | Oui | Oui | Oui | Oui | Oui | |
Pages - Une page | acCmdPreviewOnePage | 246 | Oui | Oui | Oui | Oui | Oui | Oui | |
Pages - Deux pages | acCmdPreviewTwoPages | 247 | Oui | Oui | Oui | Oui | Oui | Oui | |
Pages - Quatre pages | acCmdPreviewFourPages | 248 | Oui | Oui | Oui | Oui | Oui | Oui | |
Pages - Huit pages | acCmdPreviewEightPages | 249 | Oui | Oui | Oui | Oui | Oui | Oui | |
Pages - Douze pages | acCmdPreviewTwelvePages | 250 | Oui | Oui | Oui | Oui | Oui | Oui | |
Petites icônes | acCmdViewSmallIcons | 211 | Oui | Oui | Oui | Oui | Oui | Oui | |
Propriétés | acCmdProperties | 287 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réorganiser les icônes - Par date de création | acCmdArrangeIcons ByCreated |
216 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réorganiser les icônes - Par date de modification | acCmdArrangeIcons ByModified |
217 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réorganiser les icônes - Par nom | acCmdArrangeIconsByName | 214 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réorganiser les icônes - Par type | acCmdArrangeIconsByType | 215 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 10 % | acCmdZoom10 | 244 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 25 % | acCmdZoom25 | 243 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 50 % | acCmdZoom50 | 242 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 75 % | acCmdZoom75 | 241 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 100 % | acCmdZoom100 | 240 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 150 % | acCmdZoom150 | 239 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 200 % | acCmdZoom200 | 238 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - 500 % | acCmdZoom500 | 481 | Non | Non | Oui | Oui | Oui | Oui | |
Zoom - Largeur de page | acCmdFitToWindow | 245 | Oui | Oui | Oui | Oui | Oui | Oui | |
Zoom - Maximum 1000 % | acCmdZoom1000 | 482 | Non | Non | Oui | Oui | Oui | Oui |
En ouvrant un état, on peut l'ajuster à la fenêtre Access et choisir le zoom à appliquer. Il n'est pas possible de le faire depuis l'état, mais à partir de la procédure qui ouvre celui-ci.
Sur un formulaire, on place un bouton, cmdFacture et une liste déroulante, cboZoom. On renseigne les propriétés de cette dernière comme suit :
- 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
Sub
Variante : 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
Sub
III-D. Menu Aide▲
Disponibilité du menu : dans toute l'application.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Aide sur Microsoft Access | acCmdAnswerWizard | 235 | Oui | Oui | Oui | Oui | Oui | Oui | |
À propos de Microsoft Access | acCmdAboutMicrosoftAccess | 35 | Oui | Oui | Oui | Oui | Oui | Oui | |
Microsoft Office sur le Web | acCmdMicrosoftOnTheWeb | 236 | Oui | Oui | Oui | Oui | Oui | Oui |
On peut par exemple afficher l'aide d'Access :
'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 :
'Ouvre le navigateur par défaut sur le site Office de Microsoft
DoCmd.RunCommand
acCmdMicrosoftOnTheWeb
III-E. Menu Édition▲
Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Annuler champ/enregistrement en cours (entrée) | acCmdUndo | 292 | Oui | Oui | Oui | Oui | Oui | Oui | |
Atteindre - Dernier | acCmdRecordsGoToLast | 68 | Oui | Oui | Oui | Oui | Oui | Oui | |
Atteindre - Nouvel enregistrement | acCmdRecordsGoToNew | 28 | Oui | Oui | Oui | Oui | Oui | Oui | |
Atteindre - Précédent | acCmdRecordsGoToPrevious | 66 | Oui | Oui | Oui | Oui | Oui | Oui | |
Atteindre - Premier | acCmdRecordsGoToFirst | 67 | Oui | Oui | Oui | Oui | Oui | Oui | |
Atteindre - Suivant | acCmdRecordsGoToNext | 65 | Oui | Oui | Oui | Oui | Oui | Oui | |
Collage spécial... | acCmdPasteSpecial | 64 | Oui | Oui | Oui | Oui | Oui | Oui | |
Coller | acCmdPaste | 191 | Oui | Oui | Oui | Oui | Oui | Oui | |
Coller par ajout | acCmdPasteAppend | 38 | Oui | Oui | Oui | Oui | Oui | Oui | |
Copier | acCmdCopy | 190 | Oui | Oui | Oui | Oui | Oui | Oui | |
Couper | acCmdCut | 189 | Oui | Oui | Oui | Oui | Oui | Oui | |
Rechercher... | acCmdFind | 30 | Oui | Oui | Oui | Oui | Oui | Oui | |
Remplacer... | acCmdReplace | 29 | Oui | Oui | Oui | Oui | Oui | Oui | |
Renommer | acCmdRename | 143 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sélectionner l'enregistrement | acCmdSelectRecord | 50 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sélectionner tous les enregistrements | acCmdSelectAllRecords | 109 | Oui | Oui | Oui | Oui | Oui | Oui | |
Supprimer | acCmdDelete | 337 | Oui | Oui | Oui | Oui | Oui | Oui | |
Supprimer l'enregistrement | acCmdDeleteRecord | 223 | Oui | Oui | Oui | Oui | Oui | Oui |
Il est évidemment possible d'annuler les saisies effectuées :
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 :
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 :
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 :
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 :
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
Sub
III-F. Menu Enregistrements▲
Disponibilité du menu : formulaires (formulaire, feuille de données), requêtes (feuille de données), tables (feuilles de données).
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Actualiser | acCmdRefresh | 18 | Oui | Oui | Oui | Oui | Oui | Oui | |
Afficher tous les enregistrements | acCmdRemoveFilterSort | 144 | Oui | Oui | Oui | Oui | Oui | Oui | |
Appliquer le filtre/tri | acCmdApplyFilterSort | 93 | Oui | Oui | Oui | Oui | Oui | Oui | |
Filtrer - Filtre/tri avancé... | acCmdAdvancedFilterSort | 99 | Oui | Oui | Oui | Oui | Oui | Oui | |
Filtrer - Filtrer hors sélection | acCmdFilterExcluding Selection |
277 | Oui | Oui | Oui | Oui | Oui | Oui | |
Filtrer - Filtrer par formulaire | acCmdFilterByForm | 207 | Oui | Oui | Oui | Oui | Oui | Oui | |
Filtrer - Filtrer par sélection | acCmdFilterBySelection | 208 | Oui | Oui | Oui | Oui | Oui | Oui | |
Saisie de données | acCmdDataEntry | 78 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sauvegarder l'enregistrement | acCmdSaveRecord | 97 | Oui | Oui | Oui | Oui | Oui | Oui | |
Trier - Tri croissant | acCmdSortAscending | 163 | Oui | Oui | Oui | Oui | Oui | Oui | |
Trier - Tri décroissant | acCmdSortDescending | 164 | Oui | Oui | Oui | Oui | Oui | Oui |
Actualiser le formulaire :
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 :
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 :
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 :
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 :
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 :
Private
Sub
cmdTriCroissant_Click
(
)
On
Error
GoTo
GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand
acCmdSortAscending
Exit
Sub
GestionErreurs
:
Select
Case
Err
.Number
Case
2046
'Affichage d'un message
MsgBox
"La commande ""Tri croissant"" n'est pas disponible pour l'instant !"
, _
vbInformation
, "Erreur !"
Case
Else
MsgBox
"Une erreur inattendue s'est produite !"
&
vbNewLine
&
"Erreur no : "
_
&
Err
.Number
&
vbNewLine
&
Err
.Description
, vbCritical
, "Erreur !"
End
Select
End
Sub
Private
Sub
cmdTriDecroissant_Click
(
)
On
Error
GoTo
GestionErreurs
'Le focus est redonné au contrôle précédent
Screen.PreviousControl.SetFocus
'Exécution de la commande
DoCmd.RunCommand
acCmdSortDescending
Exit
Sub
GestionErreurs
:
Select
Case
Err
.Number
Case
2046
'Affichage d'un message
MsgBox
"La commande ""Tri décroissant"" n'est pas disponible pour l'instant !"
, _
vbInformation
, "Erreur !"
Case
Else
MsgBox
"Une erreur inattendue s'est produite !"
&
vbNewLine
&
"Erreur no : "
_
&
Err
.Number
&
vbNewLine
&
Err
.Description
, vbCritical
, "Erreur !"
End
Select
End
Sub
III-G. Menu Fenêtre▲
Disponibilité du menu : dans toute l'application.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Afficher... | acCmdWindowUnhide | 1 | Oui | Oui | Oui | Oui | Oui | Oui | |
Ajuster à la taille du formulaire | acCmdSizeToFitForm | 69 | Oui | Oui | Oui | Oui | Oui | Oui | |
Cascade | acCmdWindowCascade | 22 | Oui | Oui | Oui | Oui | Oui | Oui | |
Masquer | acCmdWindowHide | 2 | Oui | Oui | Oui | Oui | Oui | Oui | |
Mosaïque horizontale | acCmdTileHorizontally | 286 | Oui | Oui | Oui | Oui | Oui | Oui | |
Mosaïque verticale | acCmdTileVertically | 23 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réorganiser les icônes | acCmdWindowArrangeIcons | 24 | Oui | Oui | Oui | Oui | Oui | Oui |
Lorsque plusieurs fenêtres sont ouvertes simultanément à l'écran, il peut être intéressant de pouvoir en réorganiser l'affichage.
Les commandes ci-dessous permettent de les réorganiser en cascade, en mosaïque horizontale ou verticale :
'Affiche les fenêtres ouvertes en cascade
DoCmd.RunCommand
acCmdWindowCascade
'Affiche les fenêtres ouvertes en mosaïque horizontale
DoCmd.RunCommand
acCmdTileHorizontally
'Affiche les fenêtres ouvertes en mosaïque verticale
DoCmd.RunCommand
acCmdTileVertically
III-H. Menu Fichier▲
Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (aperçu avant impression, création), requêtes (feuille de données, SQL, création), tables (feuille de données, création), éditeur VBA, fenêtre des relations, etc.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Aperçu avant impression | acCmdPrintPreview | 54 | Oui | Oui | Oui | Oui | Oui | Oui | |
Données externes - Importer... | acCmdImport | 257 | Oui | Oui | Oui | Oui | Non | Non | |
Données externes - Lier les tables... | acCmdLinkTables | 102 | Oui | Oui | Oui | Oui | Oui | Oui | |
Enregistrer | acCmdSave | 20 | Oui | Oui | Oui | Oui | Oui | Oui | |
Enregistrer sous... | acCmdSaveAs | 21 | Oui | Oui | Oui | Oui | Oui | Oui | |
Exporter... | acCmdExport | 487 | Non | Non | Oui | Oui | Non | Non | |
Fermer | acCmdClose | 58 | Oui | Oui | Oui | Oui | Oui | Oui | |
Imprimer... | acCmdPrint | 340 | Oui | Oui | Oui | Oui | Oui | Oui | |
Mise en page... | acCmdPageSetup | 32 | Oui | Oui | Oui | Oui | Oui | Oui | |
Nouvelle base de données... | acCmdNewDatabase | 26 | Oui | Oui | Oui | Oui | Oui | Oui | |
Ouvrir... | acCmdOpenDatabase | 25 | Oui | Oui | Oui | Oui | Oui | Oui | |
Propriétés de la base | acCmdDatabaseProperties | 256 | Oui | Oui | Oui | Oui | Oui | Oui | |
Quitter | acCmdExit | 3 | Oui | Oui | Oui | Oui | Oui | Oui |
Affichage des propriétés de la base :
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 :
Private
Sub
cmdQuitterAccess_Click
(
)
On
Error
GoTo
GestionErreurs
'Quitter Access
DoCmd.RunCommand
acCmdQuit
Exit
Sub
GestionErreurs
:
Select
Case
Err
.Number
Case
2046
'Affichage d'un message
MsgBox
"La commande ""Quitter"" n'est pas disponible pour l'instant !"
, _
vbInformation
, "Erreur !"
Case
Else
MsgBox
"Une erreur inattendue s'est produite !"
&
vbNewLine
&
"Erreur no : "
_
&
Err
.Number
&
vbNewLine
&
Err
.Description
, vbCritical
, "Erreur !"
End
Select
End
Sub
III-I. Menu Format▲
Disponibilité du menu : formulaires (feuille de données, création), états (création), requêtes (feuille de données), tables (feuille de données).
Constante | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Afficher les colonnes... | acCmdUnhideColumns | 80 | Oui | Oui | Oui | Oui | Oui | Oui | |
Feuille de données... | acCmdDatasheetView | 282 | Oui | Oui | Oui | Oui | Oui | Oui | |
Figer les colonnes | acCmdFreezeColumn | 105 | Oui | Oui | Oui | Oui | Oui | Oui | |
Hauteur de ligne... | acCmdRowHeight | 116 | Oui | Oui | Oui | Oui | Oui | Oui | |
Largeur de colonne... | acCmdColumnWidth | 117 | Oui | Oui | Oui | Oui | Oui | Oui | |
Libérer toutes les colonnes | acCmdUnfreezeAllColumns | 106 | Oui | Oui | Oui | Oui | Oui | Oui | |
Masquer les colonnes | acCmdHideColumns | 79 | Oui | Oui | Oui | Oui | Oui | Oui | |
Police... | acCmdFont | 19 | Oui | Oui | Oui | Oui | Oui | Oui |
Les commandes de ce menu permettent, entre autres, de modifier le comportement des formulaires ou sous-formulaires en mode feuille de données. On peut par exemple figer ou libérer les colonnes d'un sous-formulaire.
Soit un formulaire frmCommandes, dans lequel est inséré un sous-formulaire frmCommandesSub, lequel affiche diverses informations relatives au détail de la commande.
Dans le formulaire, on ajoute un bouton cmdColonne, avec comme légende Figer les colonnes et on nomme le contrôle contenant le sous-formulaire ctlDetailCommande. Dans l'événement Sur clic du bouton, on écrit le code suivant :
Private
Sub
cmdColonne_Click
(
)
On
Error
GoTo
GestionErreurs
'Le focus est donné au sous-formulaire
Me.ctlDetailCommande.SetFocus
'Test du libellé du bouton
If
Me.cmdColonne.Caption
=
"Figer les colonnes"
Then
'Exécution de la commande "Figer les colonnes"
DoCmd.RunCommand
acCmdFreezeColumn
'Modification du libellé du bouton
Me.cmdColonne.Caption
=
"Libérer les colonnes"
Else
'Exécution de la commande "Libérer les colonnes"
DoCmd.RunCommand
acCmdUnfreezeAllColumns
'Modification du libellé du bouton
Me.cmdColonne.Caption
=
"Figer les colonnes"
End
If
Exit
Sub
GestionErreurs
:
Select
Case
Err
.Number
Case
2046
'Affichage d'un message
MsgBox
"La commande spécifiée n'est pas disponible pour l'instant !"
, _
vbInformation
, "Erreur !"
Case
Else
MsgBox
"Une erreur inattendue s'est produite !"
&
vbNewLine
&
"Erreur no : "
_
&
Err
.Number
&
vbNewLine
&
Err
.Description
, vbCritical
, "Erreur !"
End
Select
End
Sub
III-J. Menu Insertion▲
Disponibilité du menu : fenêtre de base de données, formulaires (formulaire, feuille de données, création), états (création), requêtes (feuille de données, création), tables (feuille de données, création), éditeur VBA, etc.
Commande | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
État | acCmdNewObjectReport | 137 | Oui | Oui | Oui | Oui | Oui | Oui | |
État instantané | acCmdNewObjectAutoReport | 194 | Oui | Oui | Oui | Oui | Oui | Oui | |
Formulaire | acCmdNewObjectForm | 136 | Oui | Oui | Oui | Oui | Oui | Oui | |
Formulaire instantané | acCmdNewObjectAutoForm | 193 | Oui | Oui | Oui | Oui | Oui | Oui | |
Macro | acCmdNewObjectMacro | 138 | Oui | Oui | Oui | Oui | Oui | Oui | |
Module | acCmdNewObjectModule | 139 | Oui | Oui | Oui | Oui | Oui | Oui | |
Module de classe | acCmdNewObject ClassModule |
140 | Oui | Oui | Oui | Oui | Oui | Oui | |
Requête | acCmdNewObjectQuery | 135 | Oui | Oui | Oui | Oui | Oui | Oui | |
Table | acCmdNewObjectTable | 134 | Oui | Oui | Oui | Oui | Oui | Oui |
Ce menu n'offre guère de commandes qui pouvant être utilisées de façon simple dans une application. A titre d'exemple, on trouve cependant des articles sur le support de Microsoft, comme celui-ci, qui fournit des solutions pour créer, modifier, rechercher et remplacer un module avec Visual Basic.
III-K. Menu Outils▲
Disponibilité du menu : dans toute l'application.
Constante | Constante RunCommand | Valeur | 97 | 2000 | 2002 | 2003 | 2007 | 2010 | |
---|---|---|---|---|---|---|---|---|---|
Analyse - Documentation | acCmdDocumenter | 285 | Oui | Oui | Oui | Oui | Oui | Oui | |
Analyse - Performances | acCmdAnalyzePerformance | 283 | Oui | Oui | Oui | Oui | Oui | Oui | |
Analyse - Table | acCmdAnalyzeTable | 284 | Oui | Oui | Oui | Oui | Oui | Oui | |
Contrôles ActiveX... | acCmdRegister ActiveXControls |
254 | Oui | Oui | Oui | Oui | Oui | Oui | |
Démarrage... | acCmdStartupProperties | 224 | Oui | Oui | Oui | Oui | Oui | Oui | |
Liaisons Office - Analyse avec Microsoft Excel | acCmdOutputToExcel | 175 | Oui | Oui | Oui | Oui | Oui | Oui | |
Liaisons Office - Fusion avec Microsoft Word | acCmdWordMailMerge | 195 | Oui | Oui | Oui | Oui | Oui | Oui | |
Liaisons Office - Publication avec Microsoft Word | acCmdOutputToRTF | 176 | Oui | Oui | Oui | Oui | Oui | Oui | |
Macro - Convertir les macros en Visual Basic | acCmdConvertMacros ToVisualBasic |
279 | Oui | Oui | Oui | Oui | Oui | Oui | |
Macro - Créer un menu contextuel d'après macro | acCmdCreateShortcut MenuFromMacro |
336 | Oui | Oui | Oui | Oui | Oui | Oui | |
Macro - Créer un menu d'après macro | acCmdCreate MenuFromMacro |
334 | Oui | Oui | Oui | Oui | Oui | Oui | |
Macro - Exécuter une macro... | acCmdRunMacro | 31 | Oui | Oui | Oui | Oui | Oui | Oui | |
Options... | acCmdOptions | 49 | Oui | Oui | Oui | Oui | Oui | Oui | |
Options de correction automatique... | acCmdAutoCorrect | 261 | Oui | Oui | Oui | Oui | Oui | Oui | |
Orthographe... | acCmdSpelling | 269 | Oui | Oui | Oui | Oui | Oui | Oui | |
Personnaliser... | acCmdToolbarsCustomize | 165 | Oui | Oui | Oui | Oui | Oui | Oui | |
Relations... | acCmdRelationships | 133 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réplication - Créer un réplica... | acCmdCreateReplica | 263 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réplication - Récupérer un document de création maître... | acCmdRecoverDesignMaster | 265 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réplication - Résoudre les conflits... | acCmdResolveConflicts | 266 | Oui | Oui | Oui | Oui | Oui | Oui | |
Réplication - Synchroniser maintenant... | acCmdSynchronizeNow | 264 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sécurité - Assistant Sécurité au niveau utilisateur... | acCmdUserLevel SecurityWizard |
276 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sécurité - Crypter/décrypter une base de données... | acCmdEncryptDecrypt Database |
5 | Oui | Oui | Oui | Oui | Oui | Oui | |
Sécurité - Définir le mot de passe de la base de données... | acCmdSetDatabasePassword | 275 | Oui | Oui | Oui | Oui | Oui | Oui | |
Utilitaires... - Compacter une base de données | acCmdCompactDatabase | 4 | Oui | Oui | Oui | Oui | Oui | Oui | |
Utilitaires... - Convertir une base de données | acCmdConvertDatabase | 171 | Oui | Oui | Oui | Oui | Oui | Oui | |
Utilitaires... - Créer un fichier MDE... | acCmdMakeMDEFile | 7 | Oui | Oui | Oui | Oui | Oui | Oui | |
Utilitaires... - Fractionner une base de données | acCmdDatabaseSplitter | 520 | Non | Non | Oui | Oui | Oui | Oui |
On peut exporter les données d'une table dans un fichier Excel de manière très simple. Sur un formulaire dépendant d'une table ou requête, on place un bouton. Dans l'événement Sur clic de ce dernier, on écrit le code suivant :
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 :
Private
Sub
cmdVerifierOrtho_Click
(
)
On
Error
GoTo
GestionErreurs
'Le focus est donné au champ Mémo
Me.txtMemo.SetFocus
'Le point d'insertion est placé au début du champ
Me.txtMemo.SelStart
=
0
'Sélection du texte contenu dans le champ
Me.txtMemo.SelLength
=
Len
(
Me.txtMemo
)
'Exécution de la commande
RunCommand acCmdSpelling
Exit
Sub
GestionErreurs
:
Select
Case
Err
.Number
Case
2046
'Affichage d'un message
MsgBox
"La commande ""Orthographe"" n'est pas disponible pour l'instant !"
, _
vbInformation
, "Erreur !"
Case
Else
MsgBox
"Une erreur inattendue s'est produite !"
&
vbNewLine
&
"Erreur no : "
_
&
Err
.Number
&
vbNewLine
&
Err
.Description
, vbCritical
, "Erreur !"
End
Select
End
Sub
IV. DoMenuItem vers RunCommand▲
Dès la version Access 97, la méthode RunCommand a remplacé la méthode DoMenuItem. Celle-ci a été maintenue dans les dernières versions d'Access uniquement par souci de compatibilité avec les versions antérieures, Access 2 (version 2.0) et Access 95 (version 7.0).
Lorsque qu'on convertit une application d'une version Access précédente et que le code Visual Basic contient une méthode DoMenuItem, celle-ci n'est pas convertie dans l'équivalent de la méthode RunCommand.
De plus, certaines commandes des versions antérieures d'Access ne sont plus disponibles dans les nouvelles versions et provoquent une erreur lorsqu'elles sont exécutées dans Visual Basic. Il est nécessaire de modifier le code Visual Basic pour remplacer ou supprimer les occurrences de telles méthodes DoMenuItem.
Les tableaux ci-après indiquent l'équivalence de certaines constantes pour Access 95 (version 7.0). Ils ont été établis sur la base des codes trouvés sur les forums Access.
Menu Edition | Constante RunCommand | |
---|---|---|
acFormBar, acEditMenu, 0, , acMenuVer70 | acCmdUndo | |
acFormBar, acEditMenu, acUndo, , acMenuVer70 | acCmdUndo | |
acFormBar, acEditMenu, 1, , acMenuVer70 | acCmdCut | |
acFormBar, acEditMenu, 2, , acMenuVer70 | acCmdCopy | |
acFormBar, acEditMenu, 3, , acMenuVer70 | acCmdPaste | |
acFormBar, acEditMenu, acPaste, , acMenuVer70 | acCmdPaste | |
acFormBar, acEditMenu, 4, , acMenuVer70 | acCmdPasteSpecial | |
acFormBar, acEditMenu, 5, , acMenuVer70 | acCmdPasteAppend | |
acFormBar, acEditMenu, 6, , acMenuVer70 | acCmdDeleteRecord | |
acFormBar, acEditMenu, 8, , acMenuVer70 | acCmdSelectRecord | |
acFormBar, acEditMenu, 10, , acMenuVer70 | acCmdFind | |
acFormBar, acEditMenu, 12, 0, acMenuVer70 | acCmdRecordsGoToFirst | |
acFormBar, acEditMenu, 12, 1, acMenuVer70 | acCmdRecordsGoToLast | |
acFormBar, acEditMenu, 12, 2, acMenuVer70 | acCmdRecordsGoToNext | |
acFormBar, acEditMenu, 12, 3, acMenuVer70 | acCmdRecordsGoToPrevious | |
acFormBar, acEditMenu, 12, 4, acMenuVer70 | acCmdRecordsGoToNew |
Menu Enregistrements | Constante RunCommand | |
---|---|---|
acFormBar, acRecordsMenu, 0, 0, acMenuVer70 | acCmdFilterByForm | |
acFormBar, acRecordsMenu, 0, 1, acMenuVer70 | acCmdFilterBySelection | |
acFormBar, acRecordsMenu, 0, 2, acMenuVer70 | acCmdAdvancedFilterSort | |
acFormBar, acRecordsMenu, 1, 0, acMenuVer70 | acCmdSortAscending | |
acFormBar, acRecordsMenu, 1, 1, acMenuVer70 | acCmdSortDescending | |
acFormBar, acRecordsMenu, 2, , acMenuVer70 | acCmdApplyFilterSort | |
acFormBar, acRecordsMenu, 3, , acMenuVer70 | acCmdRemoveFilterSort | |
acFormBar, acRecordsMenu, 4, , acMenuVer70 | acCmdSaveRecord | |
acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 | acCmdSaveRecord | |
acFormBar, acRecordsMenu, 5, , acMenuVer70 | acCmdRefresh |
Les menus d'Access 2 ayant pratiquement disparus aujourd'hui, nous avons renoncé à établir un tableau de concordance pour cette version.
V. Conclusion▲
Nous sommes arrivés au terme de cet article. Celui-ci, plus qu'un tutoriel, se veut d'abord et surtout être une base de connaissance.
Le recours aux commandes intégrées de menus peut s'avérer intéressante dans une application, puisqu'elles permettent de reproduire fidèlement et facilement l'interface d'utilisation d'Access.
VI. Remerciements▲
Je tiens à remercier tous les membres de l'équipe Office qui m'ont dispensé sans compter encouragements et conseils. Remerciements tout particuliers à Arkham46 pour son outil d'extraction des images des boutons de commandes, une application Access naturellement, ainsi qu'à jacques_jean pour sa relecture.
VII. Annexe▲
En annexe, la liste complète des constantes, leur valeur et leur disponibilité selon les versions d'Access.