Réduire un Userform dans barre de tâche

Alors regarde ce que fait ce code, inséré dans un CommandButton1_Click() d'un nouvel Userform :

Private Sub CommandButton1_Click()
    Me.Move Me.Left, Me.Top, Me.Width / 2, Me.Height / 2
End Sub

Oui c'est l'idée.

je suis passé par 2 USF différente avec dans le premier un bouton spécifique pour cacher le USF1 et afficher le USF2 placé en haut gauche de l'écran, puis dans le 2eme USF juste un bouton pour réafficher le USF1.

image image

Pour l'instant, je vais me contenter de ça mais si jamais vous savez comment faire ça avec uniquement 1 seul USF en jouant sur la dimension de celui-ci ET un toggle boutton je suis preneur

Dans l'idéal, il faudrait que le bouton fonctionne de la façon suivante

- Texte de base : "Hide"
- Appuie sur bouton = la USF est réduite au strict minimum pour faire apparait que ce bouton et déplacé en Haut à Gauche de l'écran + texte du bouton passe à "Show"
- Nouveau appui = rétablie la conf précédente.

Merci à vous en tout cas pour les essais précédent même si ça n'a pas porté ces fruits

Et si jamais voici un autre sujet sympa : https://forum.excel-pratique.com/excel/listbox-pour-selectionner-les-feuilles-a-enregistrer-separemm...

--

Charly

Bonjour le fil

CDU3390, tu n'es pas admin de ton post si je comprends... peut-être çà

Sinon tu peux masquer l'usf le temps de travailler avec un autre

Me.Hide

@+

Bon après plusieurs essais avec d'autres ordi du bouot, il doit s'agir d'un blocage sur les configurations PC car eux n'y arrivent pas non plus.
J'ai la solution que j'ai décrit plus bas afin de cacher l'userform et en afficher un plus petit.

Merci pour l'aide

Bonjour CDU - BrunoM45 et Pijaku .

Vous êtes sur du ?

#If VBA7 Then

Sur un de mes vieux fichiers qui s'utilisait en 32 et 64 bit j'écrivais

#If Win64 Then

Du coup avec le lien proposé précédemment et la sub toto j'aurai :

Option Explicit
#If Win64 Then
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE As Long = (-16)  'The offset of a window's style
Private hWnd, IStyle

#Else
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE As Long = (-16)  'The offset of a window's style
Private hWnd, IStyle
#End If

Public Sub toto(F As Object)
    hWnd = FindWindow(vbNullString, F.Caption)
    IStyle = GetWindowLong(hWnd, GWL_STYLE) Or &H70000
    SetWindowLong hWnd, GWL_STYLE, IStyle
End Sub

Salut Xmenpl

Oui effectivement, tu as peut-être bien raison... j'utilisais le même code que toi avant

https://docs.microsoft.com/fr-fr/office/vba/language/concepts/getting-started/compiler-constants

@+

Rechercher des sujets similaires à "reduire userform barre tache"