Mettre un Userform au premier plan ?

Bonjour à tous,

j'ai un problème qui me paraissait simple à la base, mais qui finalement me fait perdre énormément de temps !

J'utilise un Userform sur lequel j'ai un focus sur une textbox, focus très important et que je ne dois pas perdre, car l'utilisateur va scanner un code barre, qui doit donc se mettre ensuite dans cette textbox.

J'étais parti sur une UserForm en Modal, mais j'ai été obligé de passer celle-ci en non Modal, car par la suite, l'utilisateur fait poper un calendrier dans une autre userform, pour y sélectionner une date.

Pour éviter qu'un clic soit fait sans faire exprès sur une autre cellule ou une autre fenêtre, je me suis dit que j'allais faire en sorte que la Userform initiale remplisse TOUT l'écran. Je n'ai pas trouvé de meilleure solution, c'est pas propre, mais au moins ça marche !

Sauf que ... quand l'utilisateur fait ensuite poper le calendrier, celui-ci se met forcément en arrière plan par rapport à la première userform.

Et je ne trouve pas comment régler ce problème ... Le calendrier vient du DatePicker.xlam de Ron de Bruin, vous devez connaître je pense, vu le souk quand microsoft a viré les ControlsDate lors du passage à je ne sais plus qu'elle version.

Bonjour,

Dans le fichier joint récupéré sur un autre forum, vous trouverez le calendrier Rudurupt dont je me sers régulièrement et que vous pourriez intégrer dans votre userform.

Pour voir l'exemple, lancer l'userform depuis l'onglet Feuil2.

13conge.zip (318.71 Ko)

Bonjour

pour fixer un userform au prmier plan il faut utiliser les api window(user32.dll)

pour ma part je les utilise en macro4 de facon a ne pas avoir faire de declaration 32/64 bits

un exemple très simple issue de mes tuto api en macro4 sur XLD

'**********************************************************************************
' __        _____  ___   .  ___         _____  ___             ___
'|__|  /\     |   |   |  | |     | /      |   |   | |   | |   |   | |\  |
'|    /__\    |   |---   | |     |/\      |   |   | |   | |   |   | | \ |
'|   /    \   |   |   \  | |___  |  \     |   |___| |___| |__ |___| |  \|
'
'***********************************************************************************
'**********************************************************************************************
'      fixer le UserForm au premier plan
'en utilisant les api getactivewindow et setwindowpos en macro4
'pas de déclaration des api  necessaire
'compatible 32/64 bits
'**********************************************************************************************

'EXEMPLE
Private Sub UserForm_Activate()
    Premier_Plan
End Sub

Sub Premier_Plan()
    Dim hwnd&
     hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowPos"",""JJJJJJJJ""," & hwnd & ", " & -1 & ", " & 0& & ", " & 0& & ", " & 0& & ", " & 0& & ", " & (&H1 Or &H2 Or &H40) & ")")
  End Sub

comme tu peux le constater dans cette capture animée même en gigotant les autre fenêtre avec ma souris (donc focus sur les dites fenêtres)

et bien le userform reste au premier plan

il te sera facile d'intégrer cela dans ton calendar

demo

patricktoulon

bonne journée

Salut Patrick

Bonjour Eric

Mais il est partout ce Patrick que je salue bien bas

Bienvenue sur XLP !

ex mapoire (qui a perdu son accès) maintenant mafraise. Avec mapomme, ça fait une sacrée salade de fruits.

nota : tu gigotes bien

bonjour salade de fruit

ben j’étais la depuis un moment (ex:patricktoulon)comme je n'ai plus mon mot de passe c'est patrickt maintenant

Rechercher des sujets similaires à "mettre userform premier plan"