Detecter si un USF est ouvert ou non

Bonjour,

J'ai un UserForm qui s'ouvre après un click sur un bouton de ma feuille excel.

Il se peut que ce UserForm ne soit donc pas activé.

Actuellement, quand ce UserForm est ouvert et que je change de classeur, il se met en "UserForm.Hide", et quand je revient sur le classeur, il se met en "UserForm.Show" (c'est d'ailleur quelqu'un de ce forum qui m'avait gentillement proposé ce code, qui correspondait parfaitement à ce que je voulais etant donnée que mon userform était toujours ouvert et en pleine écran).

PROBLEME : quand mon UserForm n'est pas ouvert (donc pas visible), que je change de classeur, et que je reviens sur mon classeur, le USF s'active, normal, je lui dit de s'ouvrir quand le classeur est activé

voici mon code :

Private Sub Workbook_Activate()
UserForm1.Show
End Sub

Private Sub Workbook_Deactivate()
UserForm1.Hide
End Sub

Comment détecter si le USF est ouvert ou pas :

Si il est ouvert, alors on active le USF

Si il est fermé, alors on ne l'active pas

J'ai essayé un truc du genre :

Private Sub Workbook_Activate()
    If UserForm1.Visible = True Then
    UserForm1.Show
    End If
End Sub

Pour vérifier si le USF est visible (donc ouvert) mais ça ne marche pas

Merci pour votre aide

Bonjour,

Je ne vois pas très bien le pourquoi de ta demande mais à essayer

Private Sub Workbook_Activate()
 If Not UserForm1.Visible Then UserForm1.Show
End Sub

Si ok, n'oublie pas de cliquer sur le V vert pour cloturer le fil

Amicalement

Je me suis peut être trompé, mais ça ne marche pas.

En fait, pourquoi j'ai fais cette demande ?

Parce que je voudrais que quand on change de classeur, on ne vois plus le USF sur l'autre classeur, ce qui est génant.

C'est pourquoi j'ai besoin qu'il se "cache" quand je change de classeur.

Et je voudrais que quand je clique sur le classeur relié au USF, il "réaparaisse".

Seulement, avec le code que j'ai actuellement, le USF s'affiche dès que j'active le classeur, et ça, ça ne m'arrange pas.

Il s'ouvre même si je ne lui ai pas demandé.

Mais c'est pas bien grave, au pire, il y a juste à fermer le USF, c'est pas bien compliqué

ça ne serait que pour moi, ça ne me generait pas du tout.

En tout cas, merci

Bonjour

D'après ce que je comprend

Déclare une variable dans un module

Public Usf_Visible As Boolean

Dans la procédure Userform_Initialize()

Private Sub UserForm_Initialize()
Usf_Visible = true
End Sub

Dans la procédure UserForm_QueryClose

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Usf_Visible = False
End Sub

dans ta procédure Workbook_Activate

Private Sub Workbook_Activate()
If Usf_Visible = True Then UserForm1.Show
End Sub

Dans la procédure Workbook_Deactivate

Private Sub Workbook_Deactivate()
If Usf_Visible =  True Then UserForm1.Hide
End Sub

C'est exactement ça !!!

ça fonctionne parfaitement bien, c'est ce que je recherchais.

Un énorme merci !!

Rechercher des sujets similaires à "detecter usf ouvert"