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

Oups.....

erreur 380 ici:
"Me.Width = Application.Width - 5:"

Ne peux pas tester...
résolution sur 21 pouces dans l'usf: 1920*1080

et pour info pour le fil et job;
sur écran 13 pouces,
résolution: 1280*800

A vous lire,

Cordialement
 

job75

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

Re, hello Laetitia,

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?!

Si vous lisez mon code 10 secondes (il est plus qu'évident à comprendre) vous voyez bien qu'il ne dépend pas de la résolution de l'écran.

Il fonctionne avec n'importe quelle résolution :rolleyes:

A+
 

job75

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

Bonjour,

il me met: "Erreur d'execution 380":
impossible de définir la propriété zoom. Valeur de propriété non valide.
Entrez une valeur entre 10 et 100.

Vous pourriez quand même nous dire dire ce que vous faites, sur quel ordi, et éventuellement joindre le fichier.

Si notre aide ne vous intéresse pas dites-le, on arrêtera là.

Normalement le zoom d'un UserForm doit être compris entre 10 et 400.

Le code de mon post #10 limite le zoom au maximum de 400.

S'il faut aussi s'occuper du minimum 10 :

Code:
Sub USF()
Dim z#
Application.WindowState = xlMaximized
With UserForm1
  .StartUpPosition = 3
  z = 100 * Application.Min(Application.Width / .Width, Application.Height / .Height)
  If z < 10 Then z = 10 'minimum 10
  If z > 400 Then z = 400 'maximum 400
  .Zoom = z
  .Width = Application.Width
  .Height = Application.Height
  .Left = 0
  .Top = 0
  .Show
End With
End Sub
Maintenant si sur votre ordi il ne faut pas dépasser 100 (???), remplacez 400 par 100 !!!

A+
 

job75

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

Re,

Je suis en train de penser que peut-être sur MAC Application.Min n'est pas calculé correctement.

Alors testez ceci :

Code:
Sub USF()
Dim z1#, z2#, z#
Application.WindowState = xlMaximized
With UserForm1
  .StartUpPosition = 3
  z1 = 100 * Application.Width / .Width
  z2 = 100 * Application.Height / .Height
  If z1 < z2 Then z = z1 Else z = z2
  If z < 10 Then z = 10 'minimum 10
  If z > 400 Then z = 400 'maximum 400
  .Zoom = z
  .Width = Application.Width
  .Height = Application.Height
  .Left = 0
  .Top = 0
  .Show
End With
End Sub
A+
 

wwwho.solutions

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

Bonjour Job, Laétitia, le fil,

Pour vous résumer ce que je cherche à faire:

je vais avoir un petit "programme" qui aura pour objectif de centraliser plusieurs grilles d'audits, enregistrer les résultats dans une bdd et pouvoir rappeller pour chaque client une synthèse comme chaque fiche détaillée.



En amont de mon projet, pour ma part, je travaille avec un Imac et un Mac Book Pro, qui n'ont pas la même résolution.
(personne n'est parfait^^, pour excel, en effet je préférais PC)
je souhaiterais que mon projet puisse être adaptable quelque soit le deskstop;
que l'affichage des USF se fasse en plein écran.

Voici les résolutions des Mac:
Résolution écran Mac Book Pro: 800*1280
Résolution Imac: 1080*1920

Mon erreur est peux-être de mettre mon USF directement à ces quotes?!? de ne pas laisser les marges latérales, header et footer....?

j'avais un vba qui me permettait sur PC d'afficher quelque soit l'écran et de re-dimensionner en conséquence;
sur Mac, bien sur, ça ne tourne pas.....

Mon idée était donc:
1. Tester si Mac ou PC
2. si PC, appeler ma routine pour redi-mensionner
3. si Mac, tester la résolution et changer les paramètres d'une routine qui a l'air de bien réagir sauf qu'il faut connaitre la taille pour diminuer ou augmenter un pourcentage de zoom.....
Donc si autre propal comme la vôtre, bien entendu, je suis preneur.....

Je vous remet le fichier, avec 4 exemples de codes:
celui pour Mac que je tente d'adapter,
celui de re-dimensionnement PC qui fonctionne bien mais sur PC,
celui avec le test PC ou Mac, mais qui ne donne pas satisfaction,
celui que vous m'avez communiqué, mais qui ne redimensionne pas non plus...

Merci de votre intérêt Job,

A plus tard,
Cordialement,
 

Pièces jointes

  • Test wwwho.solutionsv1.xlsm
    88.8 KB · Affichages: 14

wwwho.solutions

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

Job, Le Fil,

Bien au contraire Job,

Soit vous n'avez pas du tout pris la peine de lire tout ce que j'ai pu vous destiner avec beaucoup d'intérêt, soit je me suis mal exprimé....

Ds l'Usf5, il y a bien votre dernier code, sauf erreur de ma part....
J'ai voulu vous donner toutes les billes, sans vous offenser, puisque vous m'accordez du temps précieux....

A vous de voir,
mais je crois qu'il y a malentendu

Cordialement,
 

job75

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

Re,

Ah oui vous avez mis ma macro USF dans le code de UserForm5, vous faites n'importe quoi :rolleyes:

Alors qu'il faut la mettre dans un module standard (Module1) et l'appeler dans la Workbook_Open.

Fichier joint, à tester sur PC et MAC...

A+
 

Pièces jointes

  • Test wwwho.solutionsv1(1).xls
    268.5 KB · Affichages: 14

job75

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

Re,

Bon j'ai pris le taureau par les cornes et viré tout ce qui était inutile.

Comme vos boutons permettent de naviguer entre les USF j'ai paramétré la macro pourqu'elle puisse être appelée pour chaque USF :

Code:
Sub USF(uf) 'macro paramétrée
Dim z1#, z2#, z#
Application.WindowState = xlMaximized
With uf
  .StartUpPosition = 3
  z1 = 100 * Application.Width / .Width
  z2 = 100 * Application.Height / .Height
  If z1 < z2 Then z = z1 Else z = z2
  If z < 10 Then z = 10 'minimum 10
  If z > 400 Then z = 400 'maximum 400
  .Zoom = z
  .Width = Application.Width
  .Height = Application.Height
  .Left = 0
  .Top = 0
  .Show 0 'non modal
End With
End Sub
Chaque UserForm est ouvert en non modal.

Fichier joint à tester.

Nota : je l'ai enregistré en .xls sur Excel 2003, j'espère qu'il n'y aura pas de problème sur Excel 2010...

Edit : ...j'ai vérifié, aucun problème sur Excel 2010 :)

A+
 

Pièces jointes

  • Test wwwho.solution revu et corrigé(1).xls
    259.5 KB · Affichages: 20
Dernière édition:

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33