US An english version of this website is available, would you like to check it out ?

YES | NO, stay on the french website


FR Une version anglophone du site est disponible, souhaitez-vous la consulter ?

OUI | NON, rester sur le site français

Close / Fermer

[VBA] Problème Userform et focus

04/09/2009 08:56 par Thierry.E | Signaler un contenu abusif
Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un UserForm
(en haut à droite) qui contient des boutons à cliquer, ce Userform doit être
toujours affiché. Pas de soucis pour configurer le UserForm, mon problème
est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le focus
et non la feuille en elle même. Ce qui veut dire que si je veux travailler
sur une cellule de la feuille, je dois d'abord cliquer sur cette feuille
pour lui faire prendre le focus. Bref, je ne sais pas comment faire perdre
le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry
email Suivre cette discussionRéponses Lire les 8 réponsesReplies Répondre

Lire les réponses

#1 isabelle
04/09/2009 15h06 | Contenu abusif
bonjour Thierry,

as tu mit la propriété ShowModal à false ?

isabelle

Thierry.E a écrit :
Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un UserForm
(en haut à droite) qui contient des boutons à cliquer, ce Userform doit être
toujours affiché. Pas de soucis pour configurer le UserForm, mon problème
est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le focus
et non la feuille en elle même. Ce qui veut dire que si je veux travailler
sur une cellule de la feuille, je dois d'abord cliquer sur cette feuille
pour lui faire prendre le focus. Bref, je ne sais pas comment faire perdre
le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry





Reponse Répondre à ce message
#2 Thierry.E
04/09/2009 17h19 | Contenu abusif
Merci pour ton aide,

Oui, j'ai mis la propriété Showmodal à false dans les propriétés de
l'userform. De plus d'après l'aide de Excel, l'instruction "UserForm1.Show
0" est sensée rendre l'userform non modal elle aussi... d'ailleurs si je
clique sur une cellule de la feuille de calcul, le focus passe à la feuille
et je peux travailler sur Excel normalement. Le problème est seulement lors
de l'affichage de l'userform, il s'affiche correctement mais prend le focus.

J'en perd mon latin...


Thierry

"isabelle" a écrit dans le message de news:

bonjour Thierry,

as tu mit la propriété ShowModal à false ?

isabelle

Thierry.E a écrit :
Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un
UserForm (en haut à droite) qui contient des boutons à cliquer, ce
Userform doit être toujours affiché. Pas de soucis pour configurer le
UserForm, mon problème est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le
focus et non la feuille en elle même. Ce qui veut dire que si je veux
travailler sur une cellule de la feuille, je dois d'abord cliquer sur
cette feuille pour lui faire prendre le focus. Bref, je ne sais pas
comment faire perdre le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry






Reponse Répondre à ce message
#3 FS
04/09/2009 18h27 | Contenu abusif
Bonsoir,

Essaye de réactiver Excel juste après le lancement de ton userform. Chez
moi (Excel 2003) cela semble donner le résultat attendu (le userform
perd le focus) :

Sub essai()
UserForm1.Show 0
AppActivate "Microsoft Excel"
End Sub

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Thierry.E a écrit :
Merci pour ton aide,

Oui, j'ai mis la propriété Showmodal à false dans les propriétés de
l'userform. De plus d'après l'aide de Excel, l'instruction "UserForm1.Show
0" est sensée rendre l'userform non modal elle aussi... d'ailleurs si je
clique sur une cellule de la feuille de calcul, le focus passe à la feuille
et je peux travailler sur Excel normalement. Le problème est seulement lors
de l'affichage de l'userform, il s'affiche correctement mais prend le focus.

J'en perd mon latin...


Thierry

"isabelle" a écrit dans le message de news:

bonjour Thierry,

as tu mit la propriété ShowModal à false ?

isabelle

Thierry.E a écrit :
Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un
UserForm (en haut à droite) qui contient des boutons à cliquer, ce
Userform doit être toujours affiché. Pas de soucis pour configurer le
UserForm, mon problème est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le
focus et non la feuille en elle même. Ce qui veut dire que si je veux
travailler sur une cellule de la feuille, je dois d'abord cliquer sur
cette feuille pour lui faire prendre le focus. Bref, je ne sais pas
comment faire perdre le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry










Reponse Répondre à ce message
#4 isabelle
04/09/2009 18h36 | Contenu abusif
bonjour thierry,

tu travaille sur quel version ?

isabelle

Thierry.E a écrit :
Merci pour ton aide,

Oui, j'ai mis la propriété Showmodal à false dans les propriétés de
l'userform. De plus d'après l'aide de Excel, l'instruction "UserForm1.Show
0" est sensée rendre l'userform non modal elle aussi... d'ailleurs si je
clique sur une cellule de la feuille de calcul, le focus passe à la feuille
et je peux travailler sur Excel normalement. Le problème est seulement lors
de l'affichage de l'userform, il s'affiche correctement mais prend le focus.

J'en perd mon latin...


Thierry

"isabelle" a écrit dans le message de news:


bonjour Thierry,

as tu mit la propriété ShowModal à false ?

isabelle

Thierry.E a écrit :

Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un
UserForm (en haut à droite) qui contient des boutons à cliquer, ce
Userform doit être toujours affiché. Pas de soucis pour configurer le
UserForm, mon problème est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le
focus et non la feuille en elle même. Ce qui veut dire que si je veux
travailler sur une cellule de la feuille, je dois d'abord cliquer sur
cette feuille pour lui faire prendre le focus. Bref, je ne sais pas
comment faire perdre le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry












Reponse Répondre à ce message
#5 MichDenis
04/09/2009 22h01 | Contenu abusif
Bonjour Thierry,

Si tu veux que ta cellule soit active, et que tu puisse taper par exemple
directement dedans à la suite de l'ouverture de ton formulaire, voici
un bout de procédure de Michel Perron


'Déclaration des API dans le haut d'un module standard
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow& Lib "user32" (ByVal hwnd&, ByVal wCmd&)
Private Declare Function GetWindowLong& Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd&, ByVal nIndex&)
Private Declare Function GetWindowText& Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd&, ByVal lpString$, ByVal aint&)
Private Const mconMAXLEN = 255

'-------------------------------
Sub Ouvrir_Le_Formuaire()
Dim hwnd&, Style&, Title$, i&
hwnd = GetWindow(GetDesktopWindow(), 5)

'Ouverture de ton formulaire
UserForm1.Show 0 'Nom à adapter

Do While hwnd
Title = GetCaption(hwnd)
If Len(Title) Then
If GetWindowLong(hwnd, -16) And &H10000000 Then
If InStr(1, Title, Application.Caption, 1) Then
AppActivate Title

'La feuille et l'adresse où tu veux te retrouver
'dans ton application après avoir ouvert ton formulaire
'Si tu as plusieurs classeurs ouverts, tu devras spécifié
'le nom du classeur avant !
With Worksheets("Feuil2")
Application.Goto .Range("G25")
End With
Exit Sub
End If
End If
End If
hwnd = GetWindow(hwnd, 2)
Loop

End Sub
'----------------------------------------------
Function GetCaption(hwnd&) As String
Dim i%, Buffer$: Buffer = String$(254, 0)
i = GetWindowText(hwnd, Buffer, 255)
If i Then GetCaption = Left$(Buffer, i)
End Function
'----------------------------------------------




"Thierry.E" #
Bonjour,

Dans une feuille excel, je souhaite afficher de façon permanente un UserForm
(en haut à droite) qui contient des boutons à cliquer, ce Userform doit être
toujours affiché. Pas de soucis pour configurer le UserForm, mon problème
est le suivant :
Lorsque j'affiche la feuille contenant le userform, c'est lui qui a le focus
et non la feuille en elle même. Ce qui veut dire que si je veux travailler
sur une cellule de la feuille, je dois d'abord cliquer sur cette feuille
pour lui faire prendre le focus. Bref, je ne sais pas comment faire perdre
le focus au userform tout en le laissant affiché.

Voici le code utilisé dans la feuille :

Private Sub Worksheet_Activate()

Dim Cellule As Range

'Afficher l'USF1

'Initialise les paramètres du USF1

UserForm1.startUpPosition = 3
UserForm1.Left = Application.Width - UserForm1.Width - 20
UserForm1.Top = 130
UserForm1.Caption = "Commandes"

UserForm1.Show 0
ActiveSheet.Activate


End sub


Merci par avance pour votre aide,
Thierry
email Suivre cette discussion Reponse Répondre à ce message