OVH Cloud OVH Cloud

fenêtre modal

2 réponses
Avatar
Moureau Laurent
Bonjour à tous,

J'ai un point de menu dans Excel qui permet d'ouvrir une fenêtre qui
contient une liste d'article.
Dans cette fenêtre, je peux sélectionner des articles et les transférer dans
ma feuille Excel.

Au départ lorsque ma fenêtre était ouverte, je ne pouvais pas sélectionner
de cellule dans ma feuille Excel . Après question sur les newsgroup on m'a
dit que je devais ajouter la ligne suivante dans l'événement activate de la
form

EnableWindow FindWindowA("XLMAIN", Application.Caption), 1

Après l'ajout de cette ligne, je pouvais sélectionner la cellule dans laquel
je voullais transférer mes articles même si la fenêtre était ouverte le seul
problème c'est que maintenant j'ai besoin de taper du texte dans une cellule
tout en laissant la fenêtre des articles ouvertes .

Comment puis réaliser cela?

Merci



--
!!!!ANTISPAM!!!!

Cliquez sur le lien pour répondre

http://cerbermail.com/?YFShDEWIbx

2 réponses

Avatar
Emcy
Salut,

j'ai pas bien compris ta question mais essayes ça (je
pense que ça devrait t'aider) :


'a mettre dans ta userform
Option Explicit

Private Declare Function GetActiveWindow Lib "user32" ()
As Long
Private Declare Function FindWindowA Lib "user32" (ByVal
lpClassName As String, ByVal lpWindowName As String) As
Long
Private Declare Function ShowWindow Lib "user32" (ByVal
hwnd As Long, ByVal nCmdShow As Long) As Long
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 wNewWord
As Long) As Long
Private Declare Function SendMessageA Lib "user32" (ByVal
hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Integer, ByVal lParam As Long) As Long
Private Declare Function ExtractIconA Lib "shell32.dll"
(ByVal hInst As Long, ByVal lpszExeFileName As String,
ByVal nIconIndex As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal
hMenu As Long, ByVal nPosition As Long, ByVal wFlags As
Long) As Long
Private Declare Function GetSystemMenu Lib "user32"
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal
hwnd As Long, ByVal fEnable As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32"
(ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal
hwnd 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 LockWindowUpdate Lib "user32"
(ByVal HwndLock As Long) As Long
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" (ByVal lpClassName As String, ByVal
lpWindowName As String) As Long


Private Const SC_CLOSE As Long = &HF060 '* Close menu
item
Private Const WS_MAXIMIZEBOX = &H10000 '* Maximise
Private Const WS_MINIMIZEBOX = &H20000 '* Minimise
Private Const WS_THICKFRAME = &H40000
Private Const WS_SIZEBOX = WS_THICKFRAME '* Taille
ajustable

Private Const WS_EX_APPWINDOW = &H40000
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)

Private Const SW_HIDE = 0
Private Const SW_NORMAL = 1

Private Const WM_SETICON = &H80


Private Sub UserForm_Activate()

Dim wLong&, hwnd&, hIcon&, IcoPath As String

'* Handle de la fenêtre
hwnd = GetActiveWindow '->
Obligatoirement

hwnd = FindWindowA(vbNullString, Me.Caption) '->
Possible avec
EnableWindow FindWindowA("XLMAIN", Application.Caption),
1

End Sub

Sub UserForm_Initialize()

Dim IcoPath As String
Dim hIcon As Variant
Dim hwnd As Variant
Dim wLong As Variant


'* Chemin complet de l'icone
IcoPath = ThisWorkbook.Path & "icone.ico"
If Dir(IcoPath) = "" Then hIcon = 0 Else hIcon =
ExtractIconA(0, IcoPath, 0)

hwnd = FindWindowA(vbNullString, Me.Caption)

ShowWindow hwnd, SW_HIDE '* Masquer la
fenêtre
wLong = GetWindowLongA(hwnd, GWL_EXSTYLE)
'* Réduction dans l'application -> Inactiver la
ligne suivante
'* Réduction dans la barre de tâches -> Activer la
ligne suivante
wLong = wLong Or WS_EX_APPWINDOW
SetWindowLongA hwnd, GWL_EXSTYLE, wLong

'* Installation de l'icone
SendMessageA hwnd, WM_SETICON, False, hIcon

'* Inhiber la croix de fermeture -> Activer la
ligne suivante
'DeleteMenu GetSystemMenu(hwnd, 0), SC_CLOSE, 0&

'* add minimize, maximize and size
wLong = GetWindowLongA(hwnd, GWL_STYLE)
'* Choix possibles : wLong = wLong Or WS_MINIMIZEBOX
Or WS_MAXIMIZEBOX Or WS_SIZEBOX
wLong = wLong Or WS_MAXIMIZEBOX 'WS_MINIMIZEBOX
wLong = wLong Or WS_MINIMIZEBOX

SetWindowLongA hwnd, GWL_STYLE, wLong
ShowWindow hwnd, 0 'SW_NORMAL '*
Afficher la fenêtre


End Sub

ça te va ?

-----Message d'origine-----
Bonjour à tous,

J'ai un point de menu dans Excel qui permet d'ouvrir une
fenêtre qui

contient une liste d'article.
Dans cette fenêtre, je peux sélectionner des articles et
les transférer dans

ma feuille Excel.

Au départ lorsque ma fenêtre était ouverte, je ne
pouvais pas sélectionner

de cellule dans ma feuille Excel . Après question sur
les newsgroup on m'a

dit que je devais ajouter la ligne suivante dans
l'événement activate de la

form

EnableWindow FindWindowA("XLMAIN",
Application.Caption), 1


Après l'ajout de cette ligne, je pouvais sélectionner la
cellule dans laquel

je voullais transférer mes articles même si la fenêtre
était ouverte le seul

problème c'est que maintenant j'ai besoin de taper du
texte dans une cellule

tout en laissant la fenêtre des articles ouvertes .

Comment puis réaliser cela?

Merci



--
!!!!ANTISPAM!!!!

Cliquez sur le lien pour répondre

http://cerbermail.com/?YFShDEWIbx


.



Avatar
Michel Pierron
Salut Laurent;
Dans ton module UserForm en tête de module:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hWnd As Long, ByVal fEnable As Long) As Long

Private Sub UserForm_Initialize()
EnableWindow FindWindow("XLMAIN", Application.Caption), True
End Sub

"Moureau Laurent" <nospam(Cliquer sur le lien en bas du message pour
répondre)@swing.be> a écrit dans le message de
news:
Bonjour à tous,

J'ai un point de menu dans Excel qui permet d'ouvrir une fenêtre qui
contient une liste d'article.
Dans cette fenêtre, je peux sélectionner des articles et les transférer dans
ma feuille Excel.

Au départ lorsque ma fenêtre était ouverte, je ne pouvais pas sélectionner
de cellule dans ma feuille Excel . Après question sur les newsgroup on m'a
dit que je devais ajouter la ligne suivante dans l'événement activate de la
form

EnableWindow FindWindowA("XLMAIN", Application.Caption), 1

Après l'ajout de cette ligne, je pouvais sélectionner la cellule dans laquel
je voullais transférer mes articles même si la fenêtre était ouverte le seul
problème c'est que maintenant j'ai besoin de taper du texte dans une cellule
tout en laissant la fenêtre des articles ouvertes .

Comment puis réaliser cela?

Merci



--
!!!!ANTISPAM!!!!

Cliquez sur le lien pour répondre

http://cerbermail.com/?YFShDEWIbx