Ouvrir/fermer un formulaire [Résolu]

Signaler
-
 botanicus -
Bonjour,
Je travaille sous Excel 2003 et sous Windows 7.

J'ai créé un formulaire qui s'affiche à l'ouverture de mon fichier Excel (sous ThisWorkbook / sub Workbook_Open() / formCommandes.Show).

A l'exécution, le formulaire s'affiche et les contrôles fonctionnent.
Mon problème c'est qu'on peut fermer le formulaire en cliquant sur la croix rouge ; et après, si on veut le réutiliser, je ne trouve pas comment le rouvrir (à part en fermant le fichier et en le rouvrant ; bien sûr là le formulaire s'affiche de nouveau....).
Alternative : comment empêcher de fermer le formulaire (en masquant par exemple la croix rouge de fermeture), quitte à créer un nouveau bouton "Quitter le fichier" lorsqu'on a terminé le traitement ?

Merci d'avance pour votre aide.

4 réponses

Messages postés
31121
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2021
3 201
Bonjour,

Concernant ta première question :

je ne trouve pas comment le rouvrir

Ben.. on plaçant un bouton permettant de le réouvrir et pour lequel tu remettras le code:
formCommandes.Show

Et pour la seconde question,

comment empêcher de fermer le formulaire

une brève recherche sur le net permet de trouver, par exemple :
https://exceloffthegrid.com/hide-or-disable-a-vba-userform-x-close-button/

PS: A l'avenir, merci d'utiliser les balises de code pour poster tes codes sur le forum.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

.
Merci Jordane pour ta réponse.

Le lien de exceloffthegrid est intéressant mais je trouve les procédures trop complexes pour le but recherché. Je préfère opter pour la 1ère solution que tu suggères mais en utilisant un raccourci clavier au lieu d'un bouton ; j'ai créé une macro appelée par Ctrl Q (par exemple) et ça fonctionne. Cela me convient puisque je serai, a priori, le seul ou presque à utiliser mon appli qui, du reste, n'est pas professionnelle.
@+

PS - Je n'ai pas vraiment écrit de code dans mon message précédent, juste suggéré les étapes de ma démarche.... Mais si j'ai d'autres questions je respecterai ton conseil.
Messages postés
16369
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 janvier 2021
3 115
Bonjour

Pour créer un Usf sans croix


'auteur: Laurent Longre
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub CommandButton1_Click()
Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub


PS: réaliser avec XL2003 (ca marche avec XL2007 ordi 64 bits)

Merci Michel, je vais tester cette méthode.
@+