Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 UserForm souci d'affichage

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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

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

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:

ChTi160

XLDnaute Barbatruc
Bonjour Lionel
J'espère que tu vas bien ?
J'ai modifié ceux-ci en bas de la procédure, du Module "Module_APIWindows" qui semble répondre à la demande.
'GetWindowLong() nIndex
Public Const GWL_STYLE As Long = -8 'Ici j'ai mis -8 au lieu de -16
Tu testes et tu nous dis !
Bonne fin de Journée
Jean mari
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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


LOL
 

Discussions similaires

Réponses
31
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…