Bonjour,

Je vous propose une méthode pour atténuer le fond de l'écran afin de mettre en évidence les boîtes de message (msgbox ou inputbox).

Exemple sur l'image ci-dessous :

Le message est affiché normalement, tout le fond de l'écran est atténué.

Attention : fonctionne à partir de Windows 2000 (donc ça fonctionne sur XP et normalement Vista)
Pour info : testé avec Access 2003 et windows XP

1 - Créez un nouveau formulaire et nommez le FormFond :
Dans ces propriété (Affichage => Propriétés) modifiez :
Dans l'onglet Autre :
- Fen indépendante : oui
- Fen modale : oui
Dans l'onglet Format :
- Barre défilement : aucune
- Afficher sélecteur : non
- Boutons de déplacement : non
- Diviseur d'enregistrement : non
- Taille ajustée : non
- Auto centrer : non
- Style bordure : Aucun

Affichez le code du formulaire : Affichage => Code
Et collez-y ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Option Compare Database
Option Explicit
'**************************************************************************
' Formulaire pour atténuation du fond
' Version avec ShowWindow pour agrandissement direct du formulaire
'**************************************************************************
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2
Private Const GWL_EXSTYLE = &HFFEC
Private Const SW_SHOWMAXIMIZED = 3
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
            (ByVal hwnd As Long, ByVal lngWinIdx As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
            (ByVal hwnd As Long, ByVal lngWinIdx As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" _
            (ByVal hwnd As Long, ByVal crKey As Integer, ByVal bAlpha As Integer, ByVal dwFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
            (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
 
' Au chargement du formulaire
Private Sub Form_Load()
Dim lAlpha As Long
' L'opacité est définie dans l'argument OpenArgs à l'ouverture du formulaire
' De 0 (transparent) à 100 (opaque)
' Si OpenArgs n'est pas défini, l'opacité est de 50
lAlpha = 255 * (Nz(Me.OpenArgs, 50) / 100)
' Rend le formulaire translucide
SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes Me.hwnd, 0, lAlpha, LWA_ALPHA
' Agrandit le formulaire pour l'avoir en plein écran
ShowWindow Me.hwnd, SW_SHOWMAXIMIZED
End Sub
On a donc un formulaire vierge en plein écran dont on règle l'opacité à l'ouverture.

2 - Il suffit maintenant de l'ouvrir avant la boîte de message et de le refermer ensuite.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
' Ouvre le formulaire pour atténuation du fond avec opacité de 70
DoCmd.OpenForm "FormFond", , , , , , 70
' Affiche la boîte de message
MsgBox "Valider l'action?", vbYesNo
' Ferme le formulaire de fond
DoCmd.Close acForm, "FormFond"
Bien sûr le même formulaire peut être utilisé pour toutes les boîtes de message de l'application.

Bye.