Redimensionnement auto USF plein écran & Controls mais sur MAC

wwwho.solutions

XLDnaute Junior
Hello à tous et toutes,

J'essaye de réutiliser certains de mes outils (développés sur excel 2007 & 2010 PC) et d'en créer d'autres mais je suis passé sur MAC... ;-(

Et oui.....

Pleins de fils existent sur le sujet: Redimensionner un USF en fonction de l'écran, ainsi que ces controls, mais sur PC...
Ceux que j'ai trouvé sur MAC non plus ou pas de solutions ou de Pj,
exemple: https://www.excel-downloads.com/thr...mensionner-des-usf-proportionnellement.96108/

Il faudrait que je parvienne à maitriser si cela est possible cette fonction.

Merci à toutes et tous qui pourront apporter de l'eau à mon moulin.

A plus tard peux être.



PS:
A l'époque sur PC, j'utilisais ceci et ça marchait impeccable(ça pourra peux être servir à l'un d'entre vous)

Dans le module de l'USF


Private Sub UserForm_Initialize()

Call determine1
With UserForm1
.Width = Application.Width - 5
.Height = Application.Height - 5
End With
End Sub



Private Sub UserForm_Resize()
'Dim L() As Integer
On Error Resume Next
I = 0
For Each ctrl In Controls
I = I + 1
ctrl.Width = Me.Width / (largeur_usf / Longueur(I))
ctrl.Height = Me.Height / (hauteur_usf / h(I))
ctrl.Left = Me.Width / (largeur_usf / leftbouton(I))
ctrl.Top = Me.Height / (hauteur_usf / topbouton(I))
ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (fontbouton * 2)
Next
End Sub

Et en Module:

Option Explicit
Public Longueur(), h(), leftbouton(), topbouton() As String, I, fontbouton As Integer
Public ctrl As Control, largeur_usf, hauteur_usf As Long

Sub determine1()

fontbouton = 12
hauteur_usf = UserForm1.Height
largeur_usf = UserForm1.Width
I = 0
For Each ctrl In UserForm1.Controls
I = I + 1
ReDim Preserve Longueur(I)
Longueur(I) = ctrl.Width
ReDim Preserve h(I)
h(I) = ctrl.Height
ReDim Preserve topbouton(I)
topbouton(I) = ctrl.Top
ReDim Preserve leftbouton(I)
leftbouton(I) = ctrl.Left
Next

End Sub
 

wwwho.solutions

XLDnaute Junior
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Hello à toutes et tous,

Une partie de code que j'ai récupéré fonctionne, sauf qu'il faudrait y incorporer une recherche de la résolution de l'ordi, qu'il s'agisse d'un Imac, un Book Pro....ou d'un windows sur lequel je peux réimputer mon ancien code....

Dans le cas présent, je ne trouve nulle part comment tester la résolution sur mac et utiliser les résultats!

Un petit fichier pour le forum.

Merci à tous pour votre aide,

Bonne journée,
 

wwwho.solutions

XLDnaute Junior
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Hello,

Un petit up, je désespère....
Si une bonne âme passe par là!

Comment pourrais-je adapter ce bout de code sur Mac?

Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function



Merci d'avance
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Bonjour,
ton code utilise des API Windows, or il me semble bien que ces fonctions ne soient pas utilisables sur Mac.
Pour tester d'éventuelles pistes il faut être en possession d'un Mac ce qui n'est pas mon cas.
Peut-être qu'un utilisateur Mac pourra te trouver la solution.
A+
 

job75

XLDnaute Barbatruc
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Bonjour wwwho.solutions, David,

Je ne comprends pas trop car pour dimensionner l'USF c'est très simple.

La macro d'ouverture de l'USF :

Code:
Sub USF()
Application.WindowState = xlMaximized
With UserForm1
  .StartUpPosition = 3
  .Width = Application.Width
  .Height = Application.Height
  .Left = 0
  .Top = 0
  .Show
End With
End Sub
Il ne devrait pas y avoir de problème sur Mac.

A+
 

job75

XLDnaute Barbatruc
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Bonjour,

Avec un zoom pour le redimensionnement des contrôles :

Code:
Sub USF()
Application.WindowState = xlMaximized
With UserForm1
  .StartUpPosition = 3
  .Zoom = 100 * Application.Min(4, Application.Width / .Width, Application.Height / .Height)
  .Width = Application.Width
  .Height = Application.Height
  .Left = 0
  .Top = 0
  .Show
End With
End Sub
On applique le zoom minimum pour que les contrôles ne sortent pas de l'USF.

Fichier joint.

A+
 

Pièces jointes

  • Test Screen Resize(1).xls
    53 KB · Affichages: 21

wwwho.solutions

XLDnaute Junior
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Bonjour Job,

Après avoir testé,
il en ressort que: oui votre code fonctionne, mais en aucun cas, je ne peux détecter au préalable si c un mac, un windows, tester sa résolution d'écran et ainsi redimensionner l'USF et les controls en fonction de l'écran.....
Bref, je tourne en rond mais votre intervention est appréciable.

Si vous testez le code que j'ai mis au début de mon fil, vous verrez que sur PC quelque soit l'écran, l'USF est en plein écran, avec ses controles et cela quelque soit la taille de l'écran, ce qui n'est pas le cas ici!

Voilà pourquoi je demandais à quelqu'un si vous aviez une astuce pour tester la résolution d'écran sur mac et adapter le redimensionnement en fonction.

A vous lire,
Cordialement,
 

job75

XLDnaute Barbatruc
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Bonjour wwwho.solutions,

Après avoir testé,
il en ressort que: oui votre code fonctionne, mais en aucun cas, je ne peux détecter au préalable si c un mac, un windows, tester sa résolution d'écran et ainsi redimensionner l'USF et les controls en fonction de l'écran.....

Mais quel but rechercherchez-vous donc ? Si ça fonctionne ça doit suffire, non ?

Le reste on s'en tapote joyeusement le menton.

Avec mon code quelles différences obtient-on entre PC et MAC ???

A+
 

wwwho.solutions

XLDnaute Junior
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

Job,

Je cherche à avoir un usf plein ecran avec ces controls quelque soit la résolution de ce dernier!
Je vais re-tester avec votre solution, mais je n'ai pas l'impression que si l'on met une résolution d'un 13 pouces ou d'un 21 pouces cela s'adapte.....

Je voudrais bien m'en taper la coquille, mais si je développe un outil sur un format, il faudrait pour moi que cela puisse s'adapter dans un autre?!

Ce n'est pas de l'hesthétique mais bien un ensemble de points qui doivent pouvoir être lu sure différents écrans!

Merci de votre intèrêt et patience!

A vous lire,
Cordialement,
 

laetitia90

XLDnaute Barbatruc
Re : Redimensionnement auto USF plein écran & Controls mais sur MAC

bonjour toutes & tous :):)

essai ce code mais sous mac ???? pas savoir si marcher

code user

Code:
Dim c As Control, l As Long, h As Long
Private Sub UserForm_Initialize()
l = Application.Width / Me.Width: h = Application.Height / Me.Height
Me.Width = Application.Width - 5: Me.Height = Application.Height - 5
For Each c In Me.Controls
 c.Top = c.Top * h
 c.Left = c.Left * l
 c.Width = c.Width * l
 c.Height = c.Height * h
 c.FontSize = c.FontSize * h
Next
 With Me
  .StartUpPosition = 3:  .Width = Application.Width
  .Height = Application.Height:   .Left = 0:  .Top = 0
 End With
End Sub
 

Statistiques des forums

Discussions
312 209
Messages
2 086 263
Membres
103 167
dernier inscrit
miriame