Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Maximiser l'affichage

1 réponse
Avatar
TEROM
Bonjour,

J'ai crée un outil Excel comportant plusieurs feuilles de format différents.
La feuille toto occupe la plage "A1:J23", la feuille TITI occupe la plage
"A1:M32"...etc. Je l'ai développé avec ma résolution d'écran actuelle (1440
par 900) et j'ai fait en sorte que toutes les informations apparaissent sur
chaque feuille sans utiliser les ascenseurs (que j'ai désactivés) Je voudrais
que quelle que soit la taille ou la résolution de l'écran sur lequel cet
outil sera utilisé, chaque feuille occupe la surface maxi. J'ai trouvé sur ce
forum un certain nombre de réponse qui pourraient répondre (presque) à mon
besoin mais ça ne marche que pour une feuille. Je ne dois pas mettre les
lignes au bon endroit!!
J'ai essayé de mettre dans Feuil1(toto), fenêtre "Worksheet", rubrique
"Activate" le code suivant:
Private Sub Worksheet_Activate()
Range("A1:J23").Select
ActiveWindow.Zoom = True
Range("A1").Select
End Sub
La même chose dans Feuil2(TITI) avec la plage "A1:M32"...etc
mais ça ne marche pas
Faut-il mettre le code dans "Thisworkbook" et de quelle façon???

Merci d'avance à qui pourra m'aider.

TEROM

1 réponse

Avatar
MichDenis
Bonjour Terom,

Voici un exemple signé : Yves HAENNI

Ajuster l'échelle du Zoom à la définition de l'écran lors de l'ouverture d'un classeur
(***)

Cette macro permet de définir l'échelle d'affichage (commande Affichage/Zoom ou outil
Zoom) de manière automatique en fonction de la résolution de l'écran lors de l'ouverture
d'un classeur. La seule difficulté se situe dans l'appel de l'API GetSystemMetrics qu'il
faut connaître étant donné qu'elle ne figure pas dans la documentation d'Excel VBA, mais
dans la document technique de Microsoft MSDN.

Cette API est une fonction acceptant un argument dont la vocation consiste à préciser
l'axe
vertical ou horizontal) de l'écran dont on souhaite connaître la résolution. Pour
faciliter
la compréhension du code ci-dessous, nous avons déclaré 2 constantes SM_CXSCREEN et
SM_CYSCREEN pour définir les 2 valeurs possibles de cet argument.
En retour, la fonction retourne la largeur de l'écran avec la constante SM_CXSCREEN comme
argument ou sa hauteur avec la constante SM_CYSCREEN.
Les deux valeurs résultantes sont respectivement stockées dans les variables lngWidth et
lngHeight de type Long de la procédure événementielle Workbook_Open(). Cette dernière
s'exécute automatiquement à l'ouverture du classeur dans laquelle où elle figure.
Note : L'instruction lngHeight = GetSystemMetrics32(SM_CYSCREEN) est fournie ici à titre
d'exemple, car la variable lngHeight n'est pas utilisée.
Une structure Select se charge ensuite d'appeler la procédure ZoomAdapté avec le facteur
de zoom à appliquer sur chaque feuille du classeur en fonction de la valeur de lngWidth.

Dans le ThisWorkbook de ton Classeur :

Private Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long

Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
'--------------------------------------------
Private Sub Workbook_Open()
Dim lngWidth As Long
Dim lngHeight As Long
Dim ws As Worksheet

'Référencer la feuille active
Set ws = ActiveSheet
Application.ScreenUpdating = False

'Appel de l'API pour obtenir la définition de l'écran
lngWidth = GetSystemMetrics32(SM_CXSCREEN)
lngHeight = GetSystemMetrics32(SM_CYSCREEN)

'1152 x 864 = 120%
'1024 x 768 = 100%
' 800 x 600 = 85%
' 640 x 480 = 75%

Select Case lngWidth
Case 1152
Call ZoomAdapté(120)
Case 1024
Call ZoomAdapté(100)
Case 800
Call ZoomAdapté(85)
Case 640
Call ZoomAdapté(75)
Case Else
MsgBox "Dimension vidéo inconnue: AutoOpen !"
Call ZoomAdapté(100)
End Select

ws.Activate
Application.ScreenUpdating = True
End Sub
'--------------------------------------------
Sub ZoomAdapté(Dimension As Integer)
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Sheets
ws.Activate
ActiveWindow.Zoom = Dimension
Next
End Sub
'--------------------------------------------




"TEROM" a écrit dans le message de groupe de discussion
:


Bonjour,

J'ai crée un outil Excel comportant plusieurs feuilles de format différents.
La feuille toto occupe la plage "A1:J23", la feuille TITI occupe la plage
"A1:M32"...etc. Je l'ai développé avec ma résolution d'écran actuelle (1440
par 900) et j'ai fait en sorte que toutes les informations apparaissent sur
chaque feuille sans utiliser les ascenseurs (que j'ai désactivés) Je voudrais
que quelle que soit la taille ou la résolution de l'écran sur lequel cet
outil sera utilisé, chaque feuille occupe la surface maxi. J'ai trouvé sur ce
forum un certain nombre de réponse qui pourraient répondre (presque) à mon
besoin mais ça ne marche que pour une feuille. Je ne dois pas mettre les
lignes au bon endroit!!
J'ai essayé de mettre dans Feuil1(toto), fenêtre "Worksheet", rubrique
"Activate" le code suivant:
Private Sub Worksheet_Activate()
Range("A1:J23").Select
ActiveWindow.Zoom = True
Range("A1").Select
End Sub
La même chose dans Feuil2(TITI) avec la plage "A1:M32"...etc
mais ça ne marche pas
Faut-il mettre le code dans "Thisworkbook" et de quelle façon???

Merci d'avance à qui pourra m'aider.

TEROM