Bonjour,
Je souhaite bloquer le mouvement des fenetres (userform).
Comment puis-je faire cela?
Merci
Bonjour,
Je souhaite bloquer le mouvement des fenetres (userform).
Comment puis-je faire cela?
Merci
Bonjour,
Qu'entends-tu par "bloquer le mouvement" ?
Pour moi cela signifie ne pas pouvoir bouger les fenetres (userform)
Le fenetre est afficher par defaut au centre et l'utilisateur ne peut pas déplacer la fenetre
Alors... le code est (très) moche mais ca fonctionne chez moi et je ne crois pas qu'il y ait de propriété toute faite :
Code Module Lanceur :
Code Unserform :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public H As Double, L As Double, Bool As Boolean Sub test() UserForm1.Show End Sub
Cdt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub UserForm_Layout() If Bool=false Then H = Me.Top L = Me.Left Bool= true End If Me.Hide Me.Top = H Me.Left = L Me.Show End Sub
Bonjour,
1) tu vas là :
http://vb.developpez.com/faqvba/?page=3.6#UFhandle
à la rubrique :
Comment inhiber ou masquer le bouton "Fermer" d'une UserForm ?
tu y prends le code (copier/coller) et tu l'insères
2) tu modifies la ligne disant :
en la remplaçant ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
et tu as ton bonheur ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part RemoveMenu hSysMenu, &HF010&, &H0&![]()
Il faut ajouter quel librairie?
Merci
Aucune à rajouter !
Deux fonctions, par contre à déclarer ...
Aisni, donc :
Entre d'autres termes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 '1) dans la partie générale du code de ta UserForm (tout en haut, donc) : Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '2) et ensuite : Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim leHwnd As Long lehwnd = FindWindowA(vbNullString, Me.Caption) hSysMenu = GetSystemMenu(lehwnd , False) RemoveMenu hSysMenu, &HF010&, &H0& End Sub
1) copie celà
2) va tout en haut de ton code (sur ta userform) et colle donc !
C'est quand même pas difficile !![]()
ok merci. Ca fonctionne
Bonjour,
La semaine derniere, vous m'avez donné la sollution
pour bloquer une fenetre.
J'ai fais des modifs dans le prog et je ne comprend pas ca ne fonctionne plus.
l'handle de la fenetre = 0x0
Si vous avez des idées pour résoudre mon prb ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 ' Permet de bloquer l'affichage de l'IHM Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub UserForm_Initialize() Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) MsgBox "le Handle de l'Userform " & Me.Caption & " est : 0x" & Hex(MeHwnd) End Sub
D'avance merci.
Cdlt.
Bé !!!!
Tu as purement et simplement effacé les lignes de code qui "paralysent" la fenêtre de ton UserForm !!!
Reprendre le code tel qu'il était !
Edit : je viens de lire ton MP (pas de questions techniques par MP, s'il te plait) :
Dis-voir : si ta fenêtre n'est plus visible, tu ne peux bien évidemment en extraire le handle !!!
Corrige la "chose" !....![]()
Bonjour,
Je ne comprends pas pourquoi, mon interface (IHM) n'est plus bloquer.
Voila le Code.
Dans le ThisWorkbook:
********* Dans le code ***************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub Workbook_Open() Application.Visible = True Sheets("Donnees").Activate Application.ScreenUpdating = False ActiveWindow.DisplayWorkbookTabs = False 'Application.ScreenUpdating = True 'ActiveWindow.DisplayWorkbookTabs = True IHM_APPORT.Show End Sub Private Sub Workbook_Close() 'Application.Visible = True End Sub
Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, &HF010&, &H0& Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If End Sub Private Sub UserForm_Layout() End Sub
Bonjour,
La sollution fonctionne mais pas sur tous les postes il y a des postes au 2000 et 2003 ou cela fonctionne et d'autres ou cela ne fonctionne pas? je ne vois pas pourquoi.
Auriez vous quelques hypothèses?
D'avance merci.
Cdlt.
Serar
Pour "bloquer les fenêtres", tu mets
en début de code et tu remets
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.screenupdating = false
Et tu mets ça dans un coin pour que tu ne le perdes pas. Faut faire attention à ses affaires !
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.screenupdating = True
![]()
Je cherche a bloquer l'IHM ScreenUpdating bloque la mise à jour des champs mais n'empèche pas le mouvement de l'IHM
Cdlt.
Serar
Ok ! Ok ! On le dit mais on ne se fâche pas !
Utilise l'événement Layout de l'userform
Tu dis si c'est bien ça que tu veux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub UserForm_Layout() Application.ScreenUpdating = False 'Ici tu mets les valeurs d'origine Me.Top = 0 Me.Left = 10 Application.ScreenUpdating = True End Sub![]()
Partager