Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le Workbook_Close afin que
si un utilisateur a un écran en 1024x768 cela le met en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le Workbook_Close afin que
si un utilisateur a un écran en 1024x768 cela le met en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le Workbook_Close afin que
si un utilisateur a un écran en 1024x768 cela le met en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Bonsoir Hervé,
Je ne pense pas que via VBA, tu puisses modifier la résolution d'ecran du
poste ; en revanche, tu peux jouer sur le coefficient de zoom.
Pour rester dans ton exemple, le rapport entre les deux affichages est de
1,28.
Pour récupérer la résolution d'ecran, tu peux utiliser comme base :
' 32-bit API declaration
Declare Function GetSystemMetrics32 Lib "User32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
' 16-bit API declaration
Declare Function GetSystemMetrics16 Lib "user" _
Alias "GetSystemMetrics" (ByVal nIndex As Integer) As Integer
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Sub Test()
MsgBox RésolutionEcran
End Sub
Function RésolutionEcran() As String
'fs à partir de la Sub Video de luc-michel (mpfe)
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
RésolutionEcran = vidWidth & " x " & vidHeight
End Function
Sub Video()
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
ms = "The current video mode is: "
msd = vidWidth & " X " & vidHeight
Workbooks("phyopen.xls").Sheets("physika").Range("g73") = msd
If msd = "800 X 600" Then
ActiveWindow.Zoom = 100
Range("A1:J25").Select
Selection.RowHeight = 14.5
End If
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)
"Hervé" a écrit dans le message de news:
ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le met en 800x600
Merci
Hervé
Bonsoir Hervé,
Je ne pense pas que via VBA, tu puisses modifier la résolution d'ecran du
poste ; en revanche, tu peux jouer sur le coefficient de zoom.
Pour rester dans ton exemple, le rapport entre les deux affichages est de
1,28.
Pour récupérer la résolution d'ecran, tu peux utiliser comme base :
' 32-bit API declaration
Declare Function GetSystemMetrics32 Lib "User32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
' 16-bit API declaration
Declare Function GetSystemMetrics16 Lib "user" _
Alias "GetSystemMetrics" (ByVal nIndex As Integer) As Integer
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Sub Test()
MsgBox RésolutionEcran
End Sub
Function RésolutionEcran() As String
'fs à partir de la Sub Video de luc-michel (mpfe)
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
RésolutionEcran = vidWidth & " x " & vidHeight
End Function
Sub Video()
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
ms = "The current video mode is: "
msd = vidWidth & " X " & vidHeight
Workbooks("phyopen.xls").Sheets("physika").Range("g73") = msd
If msd = "800 X 600" Then
ActiveWindow.Zoom = 100
Range("A1:J25").Select
Selection.RowHeight = 14.5
End If
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)
"Hervé" <h.lebeau@club-internet.fr> a écrit dans le message de news:
ezrjfTo%23EHA.1296@TK2MSFTNGP10.phx.gbl...
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le met en 800x600
Merci
Hervé
Bonsoir Hervé,
Je ne pense pas que via VBA, tu puisses modifier la résolution d'ecran du
poste ; en revanche, tu peux jouer sur le coefficient de zoom.
Pour rester dans ton exemple, le rapport entre les deux affichages est de
1,28.
Pour récupérer la résolution d'ecran, tu peux utiliser comme base :
' 32-bit API declaration
Declare Function GetSystemMetrics32 Lib "User32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
' 16-bit API declaration
Declare Function GetSystemMetrics16 Lib "user" _
Alias "GetSystemMetrics" (ByVal nIndex As Integer) As Integer
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1
Sub Test()
MsgBox RésolutionEcran
End Sub
Function RésolutionEcran() As String
'fs à partir de la Sub Video de luc-michel (mpfe)
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
RésolutionEcran = vidWidth & " x " & vidHeight
End Function
Sub Video()
If Left(Application.Version, 1) = 5 Then
'16-bit Excel
vidWidth = GetSystemMetrics16(SM_CXSCREEN)
vidHeight = GetSystemMetrics16(SM_CYSCREEN)
Else
'32-bit Excel
vidWidth = GetSystemMetrics32(SM_CXSCREEN)
vidHeight = GetSystemMetrics32(SM_CYSCREEN)
End If
ms = "The current video mode is: "
msd = vidWidth & " X " & vidHeight
Workbooks("phyopen.xls").Sheets("physika").Range("g73") = msd
If msd = "800 X 600" Then
ActiveWindow.Zoom = 100
Range("A1:J25").Select
Selection.RowHeight = 14.5
End If
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)
"Hervé" a écrit dans le message de news:
ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le met en 800x600
Merci
Hervé
bonsoir,
ca c'est pas du ressort d'Excel mais de windows. Ceci dit en bricolant les
API ca doit peut-être pouvoir se faire. Va voir sur le site de Frédéric
Sigonneau. Peut-être y trouveras tu un début de réponse.
A+Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
bonsoir,
ca c'est pas du ressort d'Excel mais de windows. Ceci dit en bricolant les
API ca doit peut-être pouvoir se faire. Va voir sur le site de Frédéric
Sigonneau. Peut-être y trouveras tu un début de réponse.
A+
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
bonsoir,
ca c'est pas du ressort d'Excel mais de windows. Ceci dit en bricolant les
API ca doit peut-être pouvoir se faire. Va voir sur le site de Frédéric
Sigonneau. Peut-être y trouveras tu un début de réponse.
A+Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
leWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
meten 800x600
Merci
Hervé
Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" <h.lebeau@club-internet.fr> a écrit dans le message de
news:ezrjfTo%23EHA.1296@TK2MSFTNGP10.phx.gbl...
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
met
en 800x600
Merci
Hervé
Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et dans
leWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela le
meten 800x600
Merci
Hervé
Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en
1024x768
merci
Hervé
"Michel Pierron" a écrit dans le message de news:
eaTqN8o%Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String
_
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dans
leWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le
meten 800x600
Merci
Hervé
Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en
1024x768
merci
Hervé
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de news:
eaTqN8o%23EHA.4028@TK2MSFTNGP15.phx.gbl...
Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String
_
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" <h.lebeau@club-internet.fr> a écrit dans le message de
news:ezrjfTo%23EHA.1296@TK2MSFTNGP10.phx.gbl...
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le
met
en 800x600
Merci
Hervé
Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en
1024x768
merci
Hervé
"Michel Pierron" a écrit dans le message de news:
eaTqN8o%Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String
_
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dans
leWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le
meten 800x600
Merci
Hervé
Bonjour Hervé;
Dans le module ThisWorkbook:
Option Explicit
Private Declare Function GetSystemMetrics& _
Lib "user32" (ByVal nIndex&)
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private R1024 As Boolean
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If R1024 Then ChangeResolution 1024, 768
End Sub
Private Sub Workbook_Open()
R1024 = (GetSystemMetrics(0) = 1024)
If R1024 Then ChangeResolution 800, 600
End Sub
MP
"Hervé" a écrit dans le message de
news:e7Sqguu%Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est
déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en1024x768
merci
Hervé
"Michel Pierron" a écrit dans le message de
news:
eaTqN8o%Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As
String
_, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dansleWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela
lemeten 800x600
Merci
Hervé
Bonjour Hervé;
Dans le module ThisWorkbook:
Option Explicit
Private Declare Function GetSystemMetrics& _
Lib "user32" (ByVal nIndex&)
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private R1024 As Boolean
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If R1024 Then ChangeResolution 1024, 768
End Sub
Private Sub Workbook_Open()
R1024 = (GetSystemMetrics(0) = 1024)
If R1024 Then ChangeResolution 800, 600
End Sub
MP
"Hervé" <h.lebeau@club-internet.fr> a écrit dans le message de
news:e7Sqguu%23EHA.3124@TK2MSFTNGP11.phx.gbl...
Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est
déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en
1024x768
merci
Hervé
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de
news:
eaTqN8o%23EHA.4028@TK2MSFTNGP15.phx.gbl...
Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As
String
_
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" <h.lebeau@club-internet.fr> a écrit dans le message de
news:ezrjfTo%23EHA.1296@TK2MSFTNGP10.phx.gbl...
Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dans
le
Workbook_Close afin que si un utilisateur a un écran en 1024x768 cela
le
met
en 800x600
Merci
Hervé
Bonjour Hervé;
Dans le module ThisWorkbook:
Option Explicit
Private Declare Function GetSystemMetrics& _
Lib "user32" (ByVal nIndex&)
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private R1024 As Boolean
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If R1024 Then ChangeResolution 1024, 768
End Sub
Private Sub Workbook_Open()
R1024 = (GetSystemMetrics(0) = 1024)
If R1024 Then ChangeResolution 800, 600
End Sub
MP
"Hervé" a écrit dans le message de
news:e7Sqguu%Bonjour Michel
Merci beaucoup,
cela fonctionne très bien,
mais comment faire afin de lui signifier à la proc que si l'écran est
déjà
en 800x600
ne pas utiliser celle-ci, en revanche si l'écran se trouve en 1024x768,
alors la mettre en 800x600, puis dans le workbook_BeforeClose la remettre
en1024x768
merci
Hervé
"Michel Pierron" a écrit dans le message de
news:
eaTqN8o%Re Hervé;
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName& _
, ByVal iModeNum&, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings& Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags&)
Private Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub ChangeResolution(W As Single, H As Single)
Dim OK As Boolean, i&, DVM As DEVMODE
Do
OK = EnumDisplaySettings(0&, i&, DVM)
i = i + 1
Loop Until OK = False
DVM.dmFields = &H80000 Or &H100000
DVM.dmPelsWidth = W
DVM.dmPelsHeight = H
ChangeDisplaySettings DVM, 0
End Sub
Sub Screen_800X600()
ChangeResolution 800, 600
End Sub
Sub Screen_1024X768()
ChangeResolution 1024, 768
End Sub
Si tu veux donner la liberté de laisser faire l'utilisateur, ce qui est
préférable à l'autoritarisme, tu peux utiliser:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As
String
_, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long
Sub ScreenProperties()
Shell "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3"
End Sub
MP
"Hervé" a écrit dans le message de
news:ezrjfTo%Bonjour
j'ai développé une appli qui tourne avec un écran 800 par 600
Je ne connais pas la procédure VBA à mettre dans le Workbook_Open et
dansleWorkbook_Close afin que si un utilisateur a un écran en 1024x768 cela
lemeten 800x600
Merci
Hervé