GNT sans publicité, site mobile, fonctionnalitées exclusives...

[VBA] Problème Userform et focus

Le
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
Lire les 8 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #20062401
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





Thierry.E
Le #20063601
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






FS
Le #20063971
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










isabelle
Le #20064111
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












MichDenis
Le #20066051
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
Publicité
Suivre les réponses
Poster une réponse
Anonyme