USERFORM masqué sur autre fichier

Bonjour

Je possède un code qui me permet de masquer et faire réapparaitre un userfom si je désactive ou active mon fichier de travail.

l'userform ne se réaffiche pas si je ferme l'userform par la croix.

je souhaite que mon USERFORM ne soit visible que sur mon fichier de travail.

Mon souci est que lorsque je travaille sur mon fichier ,et qu'un autre fichier est sélectionné (ex: classeur1.xlsx qui est vide),il arrive que l'action sur mon fichier se fasse sur le fichier classeur1.

Exemple ,l'userfomr est lancé à partir de mon fichier principal et pourtant il s'ouvre centré sur le fichier classeur1!

De même si je sélectionne des cellules sur mon fichier,c'est sur le fichier classeur1 que les cellules sont sélectionnées!

Cela se produit généralement après avoir fermé l'userform par la croix.

Je suis débutant en VBA et ''butte'' sur ce sujet depuis des semaines.

ci joint le fichier, Je travaille sous windows10 et excel 2016.

Pouvez vous m'explique la raison ou mon erreur?

Merci de votre aide.

Bonjour,

D'après votre code, vous ne paraissez pas si débutant que ça.

Pour ce que vous souhaitez faire, je vous conseillerais d'utiliser plutôt un "UserForm" rattaché à votre feuille "TEST USEFORM".

Ce type de formulaire présente des différences par rapport à un UserForm classique rattaché au classeur, qui peuvent se révéler des avantages dans certains cas :

1- positionnement précis sur la feuille par rapport à une cellule,

2- personnalisation complète du titre du formulaire,

3- conservation des modifications apportées dynamiquement.

ci-joint tutoriel

Bonjour,

Bizarre parce que chez moi dès que j'ouvre un nouveau classeur et que je clic dessus cela ferme automatiquement le userform

en question dans le fichier que tu joins en exemple

merci thev

je teste, mais la gestion des boutons me pose problème, il ne sont pas liés à la frame.

malgrès le bouton commandbutton1 créé, la ligne : WithEvents CommandButton1 As Msforms.CommandButton

me retourne : nom ambigu détecté :commandbutton1

merci pour le tuto mais mon fichier complet comporte en fait plusieurs onglets et le userform est utiles pour chaque onglet et doit apparaitre en permanence si un des onglet est utilisé.

l'userform est également déplacable ce qui est interessant car je travaille sur deux écrans.

oui l'affichage et le masquage de l'userform fonctionne bien.

l'affichage ne se fait plus automatiquement si on ferme l'userform par la croix.(il faut le réouvrir par macro ou bouton)

le souci est le bug et l'intéraction entre les deux fichiers.

[quote=Xmenpl post_id=703277 tioe=1541421411 user_id=56168]

Bonjour,

Bizarre parce que chez moi dès que j'ouvre un nouveau classeur et que je clic dessus cela ferme automatiquement le userform

en question dans le fichier que tu joins en exemple

[/quote]

Bonjour,

je teste, mais la gestion des boutons me pose problème, il ne sont pas liés à la frame.

Les boutons ne doivent pas être créés à partir du contrôle ActiveX du menu développeur mais à partir de la boîte à outils apparaissant à partir de l'édition de l'objet cadre du Frame (cf tutoriel).

Mais si vous souhaitez le même UserForm sur plusieurs onglets, il faut bien un UserForm au niveau classeur.

Si vous désactivez les procédures événementielles WorkBook_Activate et Workbook_Deactivate, a priori votre problème n'apparait plus.

Si je passe d'un fichier à l'autre sans jamais fermer l'USERFORM ,le problème n'apparait jamais.

Le problème apparait à partir du moment ou j'ai fermé manuellement l'userform (par la croix) puis réouvert à partir du bouton.

le problème semble provenir de la fermeture par la croix donc de ce bout de code :

Private Sub UserForm_Terminate()

MODEAUTO = False

Call blocageboiteabouton(MODEAUTO)

Unload Me

End Sub

Simplement avec ceci le problème est toujours présent dès que je ferme l'USERFORM

Private Sub UserForm_Terminate()

Unload Me

End Sub

Avez-vous essayé sans ces procédures événementielles ?

Private Sub Workbook_Activate()
    If MESMACROS.blocageUSF = False Then
        monUSF.Show 0
    End If
End Sub
Private Sub Workbook_Deactivate()
    If monUSF.Visible = True Then
        monUSF.Hide
    End If
End Sub
 

je viens d'essayer

effectivement ,il n'y a plus le problème mais mon userform ne se masque plus automatiquement.

mais mon userform ne se masque plus automatiquement.

Certes. Mais du fait que votre UserForm est affiché en non modal, cela ne gêne pas une action sur un autre classeur activé.

En tout cas, votre problème vient bien de l'application de ces procédures. Si vous souhaitez les conserver, il faudra probablement les neutraliser dans le cas où elles sont inopportunes.

Rechercher des sujets similaires à "userform masque fichier"