Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Peux-t'on verrouiller le déplacement d'une userform ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Besnard68

XLDnaute Occasionnel
Bonsoir le forum,

Je souhaite empêcher l'utilisateur de déplacer une userform.

Est-ce possible par une ligne de commande dans une Private sub, recadrant les propiétés Left et Top ; Et si oui, laquelle ?

Ou existe-t'il tout simplement une propriété de la Userform qui le permette ?


Merci pour votre aide.

Besnard68
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonsoir Besnard68 et le Forum,

Voici un classeur joint qui devrait répondre à ta demande, la userform ne peut être déplacée sur le fond et suivant la taille que tu lui donnes, elle peut masquer toute le classeur EXCEL.

Bon test.
 

Pièces jointes

Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonsoir JYLL,

Le résultat est, on ne peux plus fabuleux.

Par contre, pour ce qui est de comprendre la belle mécanique déployée, c'est une autre histoire.

Mon niveau d'apprentissage de VBA n'en est pas encore là (le sera t'il un jour ? 🙂 )

Mon souci est effectivement d'empêcher l'utilisateur de voir la feuille excel en fonds ; c'est pourquoi j'ai effectivement dimensionné la userform en conséquence.

Après avoir bloqué le 'unload' via la 'X' de la barre supérieure de la userform, il ne me restait plus qu'à éviter son déplacement.

Je vais essayer de comprends par ton exemple et pour lequel je te remercie sincèrement.
En cas de doute, je me permettrai de te solliciter à nouveau.

Bonne soirée à toi.

Cordialement

Besnard68
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Salut Besnard68, JYLL 🙂, le Forum

Mon souci est effectivement d'empêcher l'utilisateur de voir la feuille excel en fonds ; c'est pourquoi j'ai effectivement dimensionné la userform en conséquence.
Une autre façon de faire avec une variante sur le fait de ne pas voir la feuille en arrière plan et sans avoir à dimensionner l'UserForm

Bonne Journée
 

Pièces jointes

Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonjour Besnard, Jyll, Dull

une autre solution, code à placer dans le module de l'USF :

Code:
Option Explicit
Dim mTop As Single, mLeft As Single
Private Sub UserForm_Activate()
    mTop = Me.Top
    mLeft = Me.Left
End Sub
Private Sub UserForm_Layout()
Application.ScreenUpdating = False
    If mTop <> 0 Then
        Me.Top = mTop
        Me.Left = mLeft
    End If
Application.ScreenUpdating = True
End Sub

bonne journée
@+
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

🙂 Bonjour Dull, Pierrot93, JYLL, le forum,

Merci pour votre aide.

Dull : ta solution alternative à celle de JYLL j'avais effectivement déjà utilisé 'Maximized', mais, j'ai oublié dans mes commentaires, que je souhaite ni voir apparaître la feuille excel , NI aucun autre fond en arrière plan.

Pierrot93 : J'aurais bien voulu que ta solution fonctionne, car elle m'aurait permis de conserver mon bandeau titre de la userform (où il y a sa caption) et ne pas verrouiller la userform avec la private sub Activate (pour pouvoir mettre à jour des propriétés de la userform (visible true/false) sans avoir à recliquer sur un bouton de la userform.
Seulement, la private sub layout ne marche qu'en cas de dimensionnement de la userform, et non en cas de déplacement.


Merci beaucoup pour votre aide précieuse, j'apprends énormément avec vous.

Même si je comprends, mais n'assimile pas encore tout de la solution de JYLL, corroborée par Dull, je vous confirme que son adaptation sur mon programme fonctionne merveilleusement.

Merci encore pour tout.

Besnard68
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonjour Pierrot93,

Effectivement, tu as raison ; Les procédures fonctionnent parfaitement. Mais malheureusement pas dans mon programme.

Et je viens de trouver pourquoi :

Il ne faut pas qu'un seul des côtés de ta userform soit cachée ou collée avec le bord de la fenêtre qui l'accueille (Excel par exemple) ; Si cela était le cas, ta macro ne marche pas.

J'ai prévu dans mon programme, que l'utilisateur puisse dimensionner l'interface de manière à ce qu'elle occulte complètement le fonds, en faisant varier les propriétés width et height ; de ce fait le dépassement des bords droit et bas sont difficilement évitables.

Essaye de dimensionner ta userform en conséquence et tu constatera le fait.

C'est vraiment dommage car cela aurait vraiment été le top pour moi (très peu de lignes de procédure et, comme je le disais précédemment, me permettant de faire varier des contrôles avec visible (true ou false).

Cordialement

Besnard68
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Pierrot93, le forum,

Eureka !

Je viens à l'instant de faire un nouveau test et je constate qu'en fait, il ne faut pas que la propiété Top soit à 0 et tes procédures fonctionnent top.

Je positionne donc celle-ci à minima (0,75) et ça fonctionne très bien.

Merci Pierrot pour ton aide (et ton 'insistance')

Et encore merci à JYLL et Dull.


Bonne journée.

Besnard68
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonjour Besnard

tu dis :

comment l'utilisateur va t il redimensionner l'USF, tu as prévu une boite de dialogue avant l'ouverture ?

Regarde le code ci dessous et place le dans le classeur que je t'avais envoyé. je dimensionne l'usf à l'initialisation en fonction de la taille de la fenêtre utilisé par l'appli. A voir peut être sait on jamais...

Code:
Option Explicit
Dim mTop As Single, mLeft As Single
'Private Sub UserForm_Activate()
 '   mTop = Me.Top
  '  mLeft = Me.Left
'End Sub
Private Sub UserForm_Initialize()
UserForm1.Height = Application.Height
UserForm1.Width = Application.Width
mTop = Me.Top
mLeft = Me.Left
End Sub
Private Sub UserForm_Layout()
Application.ScreenUpdating = False
    If mTop <> 0 Then
        Me.Top = mTop
        Me.Left = mLeft
    End If
Application.ScreenUpdating = True
End Sub

bonne fin d'après midi
@+
 
Re : Peux-t'on verrouiller le déplacement d'une userform ?

Bonsoir Pierrot,

Je n'ai qu'une expression pour la circonstance : "Chapeau bas !"

Ca marche très bien.

Et même au delà de ce que j'espérais :

En effet : par une USF, spécialement construite pour cela, je permettais à l'utilisateur de dimensionner la taille de l'interface utilisateur (la USF) [ paramètres que je conservais dans une feuille excel] ;
Ensuite, à chaque chargement d'une USF (j'en ai plusieurs) j'adaptais les propriétés Height et Width en fonction de ces paramètres.

Du coup, avec ce que tu m'as appris, je squize définitivement tout ceci.


Par contre, j'ai conservé la procédure 'Activate' au lieu de 'Initialize' à laquelle j'ai rajouté tes 2 lignes supplémentaires ; Et ça fonctionne aussi très bien [ parce qu'en effet, je navigue entre les userforms avec la fonction ".Hide' et ".Show' ]


Merci encore pour tout et bonne soirée à toi.

Cordialement

Besnard
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

B
Réponses
1
Affichages
2 K
A
Réponses
2
Affichages
1 K
A
M
Réponses
19
Affichages
5 K
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…