Ouvrir/fermer un formulaire

Résolu/Fermé
botanicus - 27 déc. 2020 à 19:55
 botanicus - 28 déc. 2020 à 18:24
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.
A voir également:

4 réponses

jordane45 Messages postés 38219 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 juillet 2024 4 682
27 déc. 2020 à 20:19
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.
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 304
Modifié le 28 déc. 2020 à 16:41
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.
@+