Affichage pleine écran d'un userform adapter à la résolution d'écran

Franck60

XLDnaute Nouveau
Bonsoir,



J'ai dans mon classeur excel un Userform que je voudrais afficher en plein écran et qui s'adapte à la résolution d'écran (pas de souci ca fonctionne).

Le souci se situe toujours dans la même problématique mais avec un Userform qui contient un multipage, qui lui même contient des images en .gif

Excel bug, et me renvoie un message d'erreur:


Voici le code que j'utilise:

Placer dans un module:

Code:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Const GWL_STYLE = (-16), GWL_EXSTYLE = (-20), WS_SIZEBOX = &H40000, WS_TROIS_BOUTON = &H70000, WS_EX_APPWINDOW = &H40000
Public l(), h(), f(), p(), s() As String, wLong As Long, hWnd As Long, i, c As Control, la As Long, ha As Long
Public user As Object
Sub es()
i = 0: ha = user.Height: la = user.Width
For Each c In user.Controls
 i = i + 1
 ReDim Preserve l(i): l(i) = c.Width
 ReDim Preserve h(i): h(i) = c.Height
 ReDim Preserve p(i): p(i) = c.Top
 ReDim Preserve f(i): f(i) = c.Left
 ReDim Preserve s(i): s(i) = c.Width / c.Font.Size
 Next
hWnd = FindWindow(vbNullString, user.Caption)
wLong = GetWindowLongA(hWnd, GWL_STYLE) Or WS_SIZEBOX Or WS_TROIS_BOUTON
SetWindowLong hWnd, GWL_STYLE, wLong
ShowWindow hWnd, 3 'plein ecran a ouverture
End Sub
Sub zz()
On Error Resume Next
i = 0
For Each c In user.Controls
i = i + 1
c.Width = user.Width / (la / l(i))
c.Height = user.Height / (ha / h(i))
c.Left = user.Width / (la / f(i))
c.Top = user.Height / (ha / p(i))
c.Font.Size = c.Width / s(i)
Next
End Sub


et placer dans l'userform:

Code:
Private Sub UserForm_Activate()
Set user = Me: es
End Sub
Private Sub UserForm_Resize()
zz
End Sub



le code se met en erreur sur la ligne: ReDim Preserve s(i): s(i) = c.Width / c.Font.Size


Comment puis faire pour que cela fonctionne.
 

laetitia90

XLDnaute Barbatruc
Re : Affichage pleine écran d'un userform adapter à la résolution d'écran

bonjour tous :)

essai deja.... dans macro "es" de rajouter On Error Resume Next en debut de code

Code:
Sub es()
On Error Resume Next
i = 0: ha = user.Height: la = user.Width
For Each c In user.Controls

ect...

si pb..idem mettre ton fichier avec quelques gif sans données confi... pour voir.... la version excel que tu utilise??
 

Franck60

XLDnaute Nouveau
Re : Affichage pleine écran d'un userform adapter à la résolution d'écran

Bonsoir,

Cela fonctionne bien, mais partiellement.

Je m'explique: J'ai procédé par élimination, pour arriver à localiser ou se situe le problème.

J'ai mis un Userform (Userform2 et Userform3) supplémentaire pour tester (à l'ouverture du classeur), le userform se met bien en plein écran, mais le différents éléments qui le composent reste avec leur format et ne se redimensionnent pas. Sur le Userform2 un des composants est un multipage (pour tester) - le problème ne provient pas du multipage dans le Userform.

Mais ses composants ne s'ajuste pas proportionnellement, lorsque le Userform se met en plein écran.


Le Userform qui pose problème est le Userform1 (qui contient 1 multipage, qui lui-même contient des images en .gif). Je pense que le problème viens des images en .gif

Le Userform1 est appelé par le bouton graphique sur la feuille de calcul.

Les images en .gif sont les graphiques de mes données (appelé par la procédure: MetLimage (Module 4)) qui crée un fichier image en .gif temporaire (que je supprime ensuite) et qui se place dans le Userform).
Chaque page du Multipage a sa feuille de calcul correspondante.

Je pense que c'est les image en .gif qui posent problème pour le redimensionnement en plein écran, mais je ne sais pas comment faire.

Dans les modules, j'ai:

Module1: RAZ - remise à zéro des feuilles de calculs
Module2: Protection / Déprotection des feuilles de calculs
Module3: Procédure appel Macro MetLimage
Module4: Macro MetLimage
Module5: Bouton d'appel du Userform1 (Graphique)
Module6: Macro pour zoomer et dézoomer individuellement sur les graphiques par sélection de ceux-ci
Module7: Pour mise du Userform en plein écran

La cellule B5 de la feuille CR met à jour tous le classeur (toutes les autres cellules et feuilles sont vérrouiller.

Voila pour les infos sur mon classeur.

Je ne sais pas comment faire pour mon problème de Userform, pouvez vous m'aider
 

Pièces jointes

  • Classeur Userform Plein Ecran.xlsm
    165.9 KB · Affichages: 160

Modeste geedee

XLDnaute Barbatruc
Re : Affichage pleine écran d'un userform adapter à la résolution d'écran

Bonsour®

sauvegarder en constantes dans ton classeur
le User.Width utilisé lors de la conception
déterminer le ratio selon le user.Width du poste utilisateur


dans un module standard
Capture1.JPG

dans le code Initialize du Userform
Capture0.JPG
VB:
Dim ratio as Double
ratio= UserWidth_Conception/Userwidth_Utilisateur
Userform1.Width=Userform1.width*ratio 
Userform1.Height=Userform1.height*ratio 
Userform1.Zoom=100*ratio
 

Pièces jointes

  • Capture1.JPG
    Capture1.JPG
    60.5 KB · Affichages: 171
  • Capture1.JPG
    Capture1.JPG
    60.5 KB · Affichages: 182
  • Capture0.JPG
    Capture0.JPG
    30 KB · Affichages: 155
  • Capture0.JPG
    Capture0.JPG
    30 KB · Affichages: 146

laetitia90

XLDnaute Barbatruc
Re : Affichage pleine écran d'un userform adapter à la résolution d'écran

bonjour tous :)

j'ai enleve cette ligne
Code:
ReDim Preserve s(i): s(i) = c.Width / c.Font.Size
pas forcement utile dans ton cas

si tu utilise qu'un user le code zz & es tu le met directement dans l'user plus simple

j'ai deplace tes images dans user2 pb sur user1 erreur 238

Private Sub UserForm_Activate & non Private Sub UserForm1_Activate idem initialise

j'ai mis un Repaint dans activate eviter ecran blanc pendant chargement code images

en fait revoir ce code trés lent ou le fractionner
par exemple a l'ouverture de chaque pages multipage

kill peut être a la fermeture user peut être suffisant

image1 dans proprieté j'ai mis a picture size mode a zoom a voir si mieux a ecran plein ecran ou normal

ect...

desole pour reponse tardive trés prise en ce moment:(
 

Pièces jointes

  • Classeur Userform Plein Ecran (1).xlsm
    151.9 KB · Affichages: 171
Dernière édition:

Franck60

XLDnaute Nouveau
Re : Affichage pleine écran d'un userform adapter à la résolution d'écran

Bonjour laetitia90,


Le fichier joint fonctionne, mais lorsque j'essaye de le transposer sur mon fichier définitif cela bug.

Je continue mes recherches, de sorte que le userform s'ajuste à la taille de l'écran ainsi que les images en .gif se redimensionnent de manière à ce que tous s'ajuste à l'écran.

Merci beaucoup.
je continue mes recherches.
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat