FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- Comment cacher une barre d'outils ?
- Comment enlever toutes les barres de menu ?
- Comment faire apparaître ou disparaître la barre des menus par le code ?
- Comment cacher les barres système et d'outils de mon application ?
- Comment insérer un saut de ligne dans une boîte de dialogue ?
- Comment créer un formulaire automatique lié à une table ?
- Comment désactiver le rafraîchissement de l'écran (figer l'écran) ?
- Comment connaître la résolution de l'écran ?
- Comment déterminer un code couleur quelconque dans Access ?
- Que faire si mes textes en info-bulle ne s'affichent pas ?
- Comment afficher l'heure dynamique dans un formulaire ?
- Comment redimensionner la fenêtre active (par ex. le formulaire en cours) en VBA ?
- Comment retrouver les composantes rouge, vert, bleu d'un code couleur de type Long ?
- Comment retrouver la couleur d'un pixel à l'écran ?
- Comment afficher ou masquer la fenêtre de base de données ?
- Comment forcer le rafraîchissement de l'écran ?
- Comment utiliser les événements clavier ? (exemple, détecter lorsque l'utilisateur saisit : Ctrl+C) ?
- Comment activer l'affichage des fenêtres dans la barre des tâches depuis VBA ?
- Comment réorganiser les fenêtres horizontalement ou verticalement en VBA ?
- 11.5.1. Interface et graphisme Trucs et Astuces (7)
DoCmd.ShowToolbar
"NomBarreOutil"
, acToolbarNo
Pour les déactiver :
Dim
i As
Integer
For
i =
1
To
Application.CommandBars.Count
DoCmd.ShowToolbar
Application.CommandBars.item
(
i).name
, acToolbarNo
Next
Et pour les réactiver :
Dim
i As
Integer
For
i =
1
To
Application.CommandBars.Count
DoCmd.ShowToolbar
Application.CommandBars.item
(
i).name
, acToolbarWhereApprop
Next
Pour la faire disparaître :
DoCmd.ShowToolbar
"barre menu"
, acToolbarNo
Pour la faire apparaître :
DoCmd.ShowToolbar
"barre menu"
, acToolbarYes
Faire un clic droit sur la barre des menus puis sélectionnez Personnaliser et dans l'onglet Barre d'outils regardez l'orthographe de la barre des menus.
Allez dans :
Menu outil/démarrage
Décochez les cases suivant les menus que vous voulez voir disparaître.
MsgBox
"ligne1"
&
vbCrLf
&
"ligne2"
Function
CreateInstantForm
(
ByVal
Tbl As
String
)
DoCmd.SelectObject
acTable, Tbl, True
DoCmd.RunCommand
acCmdNewObjectAutoForm
End
Function
Application.Echo
False
Il faut faire attention à réactiver le rafraîchissement grâce à :
Application.Echo
True
Il faudra également prévoir une gestion des erreurs pour éviter une sortie non désirée de la procédure.
Voici ci-dessous des liens intéressants sur le sujet.
Lien : http://www.mvps.org/accessfr/general/gen0002.htm
Lien : http://www.mvps.org/accessfr/apis/api0029.htm
Rappel :
- Les constantes des couleurs Windows vous permettent de récupérer les couleurs choisies par chaque utilisateur, dans le panneau de contrôle de Windows. Si vous les utilisez, vos utilisateurs pourront recolorer eux-mêmes votre application (petit détail très apprécié :) ). Aide Access, chapitre Constantes Couleurs système. Ou bien, tapez " vbButtonFace " dans un module, appuyez sur F1.
- Les constantes vbWhite, vbBlack, etc. sont disponibles pour les 16 couleurs de base : Aide Access, chapitre Constantes de couleurs. Ou bien, tapez " vbWhite " dans un module, appuyez sur F1.
- La fonction (obsolète) QbColor() renvoie un des 16 codes couleur ci-dessus, à partir d'un nombre (0 à 15).
- La fonction RGB() renvoie n'importe quelle couleur, à partir des trois valeurs Red, Green, Blue.
- Pour choisir n'importe quelle couleur et coller son code dans votre module VBA :
- créez un nouveau formulaire (vous ne le garderez pas, sauf pour des manips comme celle-ci) ;
- sélectionnez une section quelconque, affichez ses propriétés ;
- dans l'onglet Format, cliquez dans Couleur fond ;
- cliquez sur le bouton "..." pour ouvrir la boîte de dialogue des couleurs ;
- choisissez votre couleur, éventuellement en cliquant sur Définir les couleurs personnalisées... ;
- cliquez sur OK ;
- appuyez sur Entrée pour visualiser votre couleur dans le fond de la section choisie.
Le code de la couleur est affiché dans la propriété Couleur fond.
Vous pouvez le copier/coller dans votre code, créer une (série de) constante(s)...
Exemple :
Public
Const
vbJaunePale =
13434879
Il suffit de supprimer les textes et de les recréer.
Il faut utiliser l'événement Timer du formulaire.
Dans un premier temps, allez dans les propriétés du formulaire, onglet événement et réglez l'Intervalle minuterie, par exemple à 1000 pour une seconde ou 60 000 pour une minute, etc.
Puis insérez ce code dans le formulaire :
Private
Sub
Form_Timer
(
)
Me.Texte1
=
Now
End
Sub
Il suffit d'utiliser la méthode MoveSize de l'objet Docmd.
Consultez l'aide Access pour le détail des arguments.
Rappelons que le code d'une couleur se calcule par les composantes RGB à l'aide de la formule :
Red + Green * 256 + Blue * 256 * 256.
Il nous suffit donc d'écrire la fonction inverse.
Public
Sub
ComposantesRGB
(
ByVal
Couleur As
Long
, Red As
Long
, Green As
Long
, Blue As
Long
)
Blue =
Int
(
Couleur /
65536
)
Green =
Int
((
Couleur -
(
65536
*
Blue)) /
256
)
Red =
Couleur -
((
Blue *
65536
) +
(
Green *
256
))
End
Sub
Private
Sub
Command1_Click
(
)
Dim
Rouge As
Long
, Vert As
Long
, Bleu As
Long
ComposantesRGB 9550940
, Rouge, Vert, Bleu
LblRed.Caption
=
"Red = "
&
Rouge
LblGreen.Caption
=
"Green = "
&
Vert
LblBlue.Caption
=
"Blue = "
&
Bleu
End
Sub
Lien : FAQ VB
Si vous cherchez simplement à connaître la couleur d'un point dans un PictureBox, utilisez sa méthode Point(). Sinon, voici une méthode pour récupérer la couleur de n'importe quel pixel à l'écran.
Placez ce code dans un module standard :
Private
Declare
Function
GetDC Lib
"user32"
(
ByVal
hwnd As
Long
) As
Long
Private
Declare
Function
GetPixel Lib
"gdi32"
(
ByVal
hdc As
Long
, ByVal
x As
Long
, ByVal
y As
Long
) As
Long
Public
Type
Couleur
red As
Integer
green As
Integer
blue As
Integer
End
Type
Public
Function
CouleurPixel (
ByVal
x As
Long
, ByVal
y As
Long
) As
Couleur
Dim
pixel As
Couleur, RGBPx As
Long
RGBPx =
GetPixel
(
GetDC
(
0
&
), x, y)
pixel.red
=
&
HFF&
And
RGBPx
pixel.green
=
(&
HFF00&
And
RGBPx) \
256
pixel.blue
=
(&
HFF0000 And
RGBPx) \
65536
CouleurPixel =
pixel
End
Function
La fonction CouleurPixel renvoie la couleur du pixel dont les coordonnées lui ont été passées en paramètres, dans une structure Couleur. Si vous voulez connaître la position du pointeur de souris, ajoutez ces déclarations dans le module standard :
Public
Declare
Function
GetCursorPos Lib
"user32"
(
lpPoint As
PointAPI) As
Long
Public
Type
PointAPI
X As
Long
Y As
Long
End
Type
Voici maintenant un exemple où l'on utilise un Timer pour mettre dans un PictureBox la couleur du pixel survolé par la souris :
Private
Sub
Timer1_Timer
(
)
Dim
pixel As
Couleur, CursPos As
PointAPI
GetCursorPos CursPos
pixel =
CouleurPixel
(
CursPos.X
, CursPos.Y
)
Picture1.BackColor
=
RGB
(
pixel.red
, pixel.green
, pixel.blue
)
End
Sub
Lien : FAQ VB
Exemple pour afficher :
Docmd.SelectObject
acTable, , True
Exemple pour masquer :
Docmd.SelectObject
acTable, , True
Docmd.RunCommand
acCmdWindowHide
Il arrive que vous changiez par le code la couleur d'un texte, mais celle-ci ne sera prise en compte que plusieurs secondes plus tard.
Il vous suffit d'ordonner par le code le rafraîchissement de l'écran lorsque bon vous semble grâce à :
Me.Repaint
Lien : Comment désactiver le rafraîchissement de l'écran (figer l'écran) ?
Tout d'abord, dans les propriétés du formulaire, onglet Événement mettez l'attribut KeyPreview/Aperçu des touches à Oui.
Ensuite, dans ce même formulaire utilisez par exemple :
Private
Sub
Form_KeyDown
(
KeyCode As
Integer
, Shift As
Integer
)
If
KeyCode =
vbKeyC And
Shift =
acCtrlMask Then
MsgBox
(
"Ctrl+C pressés"
)
End
If
End
Sub
Ouvrez maintenant ce formulaire, appuyez sur les touches Ctrl+C comme pour faire un "copier" et constatez :).
Public
Function
AfficherFenetreBDT
(
Afficher As
Boolean
)
On
Error
GoTo
Err_AfficherFenetreBDT
Application.SetOption
"ShowWindowsInTaskbar"
, Afficher
Exit_AfficherFenetreBDT
:
Exit
Function
Err_AfficherFenetreBDT
:
If
Err
.Number
=
2091
Then
'Pas dans 97 & 95 sinon Erreur
Exit
Function
Else
MsgBox
"Erreur N°"
&
Err
.Number
&
vbCrLf
&
Err
.Description
, 16
Resume
Exit_AfficherFenetreBDT
End
If
End
Function
Sub
Afficher
(
)
AfficherFenetreBDT True
End
Sub
' Appel de la fonction
Sub
Masquer
(
)
AfficherFenetreBDT False
End
Sub
Rappel : vous aurez le même résultat sans passer par VBA en allant dans : Menu Outils/Options onglet Affichage, cochez Fenêtres dans la barre des tâches.
À chaque commande de menu et de barre d'outils de Microsoft Access est associée une constante que vous pouvez utiliser avec la méthode RunCommand pour exécuter cette commande à partir de Visual Basic.
Ci-dessous les commandes pour réorganiser les fenêtres ouvertes, horizontalement ou verticalement :
Horizontalement :
DoCmd.RunCommand
(
acCmdTileHorizontally)
Verticalement :
DoCmd.RunCommand
(
acCmdTileVertically)