Microsoft 365 UserForm souci d'affichage

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un beau WE :)

Je reviens vers nos ténors car je bute sur un p'tit souci mais compliqué pour moi et je n'arrive pas à le résoudre.
J'ai un UserForm pour lequel j'utilise des APIs (merci aux ténors qui me les ont passé) :
- Pour masquer la barre de titre,
- Pour le positionner,
Comme vous le verrez, tout fonctionne bien sans souci (apparemment lol), sauf à l'affichage ... dans ma feuille, au clic cellules "F6 à F15".
En effet :
dans le vba mon UserForm est comme ceci
1659795877774.png

à l'affichage dans ma feuille, au clic cellules "F6 à F15" ... le voilà
1659795266275.png

Les marges grises à droite et en bas ne sont plus les même (elles sont plus grandes).

Je pense que le souci se situe dans les APIs (dans le code de l'UserForm et dans le module "Module_APIWindows".
J'ai tenter de voir mais je n'arrive à comprendre ce qu'il faudrait modifier.

Je joins le fichier test,
Pourriez-vous m'aider à trouver ?
Un grand merci,
Amicalement,
lionel :)
 

Pièces jointes

  • isiTel_test uf.xlsm
    61.6 KB · Affichages: 8
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re-Bonjour,

J'ai fini par trouve "l'horrible" responsable du délit lol 🤣😇
C'est lui :
VB:
Sub HideBar(frm As Object)
#If VBA7 Then
  Dim Style As LongPtr, Menu As Long, hWndForm As LongPtr
#Else
  Dim Style As Long, Menu As Long, hWndForm As Long
#End If
  'une classe de UserForm est de type ThunderXFrame ou ThunderDFrame (selon version)
  hWndForm = FindWindow("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption)
  Style = GetWindowLong(hWndForm, GWL_STYLE)
  Style = Style And Not WS_CAPTION
  'SetWindowLong hWndForm, GWL_STYLE, Style
  DrawMenuBar hWndForm
End Sub
Cette ligne : SetWindowLong hWndForm, GWL_STYLE, Style
Il ne serait pas possible de simplifier mes codes ?
Merci à tous :)
 

job75

XLDnaute Barbatruc
Bonjour Lionel, ChTi160, patricktoulon,
Il suffit de redimensionner l'UserForm correctement :
VB:
Private Sub UserForm_Activate()
Me.Height = 216 'à ajuster par tâtonnement
Me.Width = 222 'à ajuster par tâtonnement
'-----'
A+
 

Pièces jointes

  • isiTel_test uf.xlsm
    62.6 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
alors
pour commencer j'ai du mal a croire que ce soit un tenor qui t'ai donné le code des declarations des api
ou alors tu a fait un copier coller à la louche 😂 😂 😂 😂

donc on va faire simple
vire moi ce module api et toute les declaration d'api concernant la user 32 sauf celle pour simuler les touches

et met moi simplement ca dans le activate de l'userform
VB:
Private Sub UserForm_Activate()
    Dim hwnd&, H&
    H = Me.Height - (Me.Height - Me.InsideHeight) - 6
    hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")         'api GetActiveWindow
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94000080 & ")")     'api SetWindowLongA
     Me.Height = H
    Call UserformPosSurCell(Me, Cells(ActiveCell.Row, 7))
  End Sub
terminé
tu voulais simplifier ben là t'es servi 😂😂😂😂

allez on teste pour voir
demo.gif


LOL
 

Discussions similaires

Réponses
8
Affichages
474
Réponses
12
Affichages
247

Statistiques des forums

Discussions
315 094
Messages
2 116 153
Membres
112 670
dernier inscrit
Flow87