Bonjour,

Après pas mal de recherche j'ai réussis à trouver une macro qui à l'ouverture de mon fichier excel réduit excel tout en ouvrant mon formulaire.
Cependant lorsque je quitte mon formulaire et donc excel, puis que je souhaite ré-ouvrir n'importe quel fichier excel, excel ce lance mais mon classeur ne s'ouvre pas, je dois passer par fichier/ouvrir
Le moyen que j'ai trouver pour remédier à cela est de décocher la case "ignorer les autres applications" dans outils/options/général

Ainsi je souhaiterais que soit lorsque je quitte le formulaire l'option "ignorer…." se désactive (au workbook.close) ou sinon que la macro ne change pas cette propriété?

De plus, si j'ai plusisuers fichiers excel d'ouvert, ma macro réduire dans la barre tous les fichiers excels ouverts alors que je voudrais qu'elle cache uniquement le workbook auquel elle apartient, est-ce possible?

Voici le code dans thisworkbook:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub Workbook_Open()
Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
Application.DisplayAlerts = False
Application.IgnoreRemoteRequests = True
Application.DisplayAlerts = True
'cache excel
Parent.Visible = False
'affiche le formulaire
UserForm1.Show
End Sub
Voici le code dans le userform:
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
34
35
36
37
38
39
40
41
42
43
44
45
Option Explicit
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal lngWinIdx&, ByVal dwNewLong&)
Private Declare Function ShowWindow& Lib "user32" (ByVal hWnd&, ByVal nCmdShow&)
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam%, ByVal lParam As Any)
Private hWnd&
Private Const SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
 
Private Sub CommandButton1_Click()
'pour fermer le formulaire et reactiver excel
Me.Hide
Application.Visible = True
End Sub
 
 
Private Sub UserForm_Activate()
Application.ScreenUpdating = False
ShowWindow hWnd, 0
SetWindowLong hWnd, -20, &H40101
ShowWindow hWnd, 1
Application.ScreenUpdating = True
End Sub
 
Private Sub UserForm_Initialize()
hWnd = FindWindow(vbNullString, Me.Caption)
SetWindowLong hWnd, -16, &H84CA0080
'desactive et cache la croix de fermeture:
Dim hSysMenu As Long
Dim MeHwnd As Long
    MeHwnd = FindWindowA(vbNullString, Me.Caption)
    If MeHwnd > 0 Then
        hSysMenu = GetSystemMenu(MeHwnd, False)
        RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
    Else
        MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical
    End If
'charger un logo (attention réactiver la ligne de déclaration "sendmessage"):
SendMessage hWnd, &H80, 0, Image1.Picture.Handle
 
End Sub

Si vous pouviez m'éclairer! Merci beaucoup.

Elumastebit