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???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <TEROM@discussions.microsoft.com> a écrit dans le message de groupe de discussion
: 7345E255-46F3-4789-B839-8E6CAF1312C1@microsoft.com...
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???
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???