Changement de résolution Ecran depuis Excel

T

THE DBX

Guest
Bonjour au forum

Je cherche à changer la résolution d'un écran 800x600 en 1024x768 deouis excel..... cela est-il possible ???????

Merci

DBX
 
@

@+Thierry

Guest
Bonjour DBX,

Je ne te conseille pas trop de jouer avec la résolution d'écran des Utilisateurs de tes applis. Imagine si tous les site Web s'amusaient à faire çà !

Ceci dit le Grand Chef à Trois Plumes, nous avait pondu ceci à l'époque ou on travaillait avec des résolutions beaucoup plus basses (640 x 480 sur 256 couleurs)... Je viens de faire tourner sous WinMe çà tourne encore.

Voici l'intégralité du Post de Laurent (MPFE 2000/05/31)
Rien de tel qu'une jolie compote d'API pour bien digérer le repas de
midi (burps!)

J'ai testé sur deux bécanes complètement différentes (Win95 et 98), ça a
l'air de bien marcher. Fais-moi signe s'il y a un problème.

La fonction ChangeRes(HorzPix[, NbCouleurs]) change la résolution en
fonction de la largeur demandée en pixels (paramètre HorzPix, par
exemple 800 ou 1024) et du nombre de couleurs (256 par défaut). Si le
mode d'affichage a été modifié sans rebooter Windows, elle renvoie 0,
s'il faut rebooter elle renvoie 1, et sinon -1 ou -2 selon l'erreur
rencontrée.

Bonne chance,

Laurent

'===================================================
Type TDEVMODE
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 Declare Function EnumDisplaySettingsA Lib "User32" _
(ByVal lpszDeviceName As String, ByVal iModeNum As Long, _
lpDevMode As TDEVMODE) As Long

Private Declare Function ChangeDisplaySettingsA Lib "User32" _
(lpDevMode As TDEVMODE, ByVal dwflags As Long) As Long

Private Declare Function GetDC Lib "User32" _
(ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" _
(ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" _
(ByVal hWnd As Long, ByVal hdc As Long) As Long

Function ChangeRes(HorzPix As Integer, _
Optional NbCouleurs) As Integer
Dim DevMode As TDEVMODE, I As Long
Dim BitsPerPel As Integer, DC As Long
Dim ActHorzPix As Integer, ActBitsPerPel As Integer
DC = GetDC(0)
If IsMissing(NbCouleurs) Then BitsPerPel = 8 _
Else BitsPerPel = Log(NbCouleurs) / Log(2)
ActHorzPix = GetDeviceCaps(DC, 8)
ActBitsPerPel = GetDeviceCaps(DC, 12)
ReleaseDC 0, DC
If ActHorzPix = HorzPix And ActBitsPerPel = BitsPerPel _
Then Exit Function
Do
If EnumDisplaySettingsA(vbNullString, I, DevMode) = 0 _
Then ChangeRes = -2: Exit Function
I = I + 1
Loop Until DevMode.dmPelsWidth = HorzPix _
And DevMode.dmBitsPerPel = BitsPerPel
ChangeRes = ChangeDisplaySettingsA(DevMode, 0)
End Function

Sub Test()
' Passe en résolution 640 x 480 et 256 couleurs
Select Case ChangeRes(640, 256)
Case 0
MsgBox "Résolution modifiée."
Case 1
MsgBox "Vous devez redémarrer votre ordinateur " _
& "pour que les changements prennent effet."
Case -2
MsgBox "Résolution et / ou nombre de couleurs non supporté."
Case -1
MsgBox "Impossible de changer de résolution."
End Select
End Sub
'===================================================


Ceci dit si tu veux éviter de passer en 256 couleurs, mais plutot en 16 Bits tu indiqueras => dans la Macro Test : Select Case ChangeRes(1024, 65536) et en 32 bits = (1024, 4294967296)

Bon Courage, mais surtout ne jamais lancer de ce genre de macro dans le Workbook_Open sans en avertir l'utilisateur.

Ah oui j'ai aussi trouvé une page du Site de Laurent où il explique aussi lui-même plus de détails...

<http://longre.free.fr/pages/api/resolution.htm>

Bon Week End
@+Thierry
 
L

LaurentTBT

Guest
Bonsoir à tous.

Dans l'aide de VBA, j'ai trouvé ceci:

ScreenSize, propriété
Cette propriété renvoie ou définit la taille d'écran minimale optimale (largeur par hauteur, exprimée en pixels) à utiliser lors de l'affichage du document enregistré dans un navigateur Web. Il peut s'agir de l'une des constantes MsoScreenSize répertoriées ci-dessous. La constante par défaut est msoScreenSize800x600. Type de données MsoScreenSize en lecture-écriture.

MsoScreenSize peut être l'une de ces constantes MsoScreenSize.
msoScreenSize1152x882
msoScreenSize1280x1024
msoScreenSize1800x1440
msoScreenSize544x376
msoScreenSize720x512
msoScreenSize1024x768
msoScreenSize1152x900
msoScreenSize1600x1200
msoScreenSize1920x1200
msoScreenSize640x480
msoScreenSize800x600

expression.ScreenSize

expression Obligatoire. Expression qui renvoie un des objets répertoriés dans la liste S'applique à.

Exemple
Cet exemple montre comment définir une taille d'écran de 800 x 600 pixels pour l'écran cible.

Application.DefaultWebOptions.ScreenSize = _
msoScreenSize800x600



Alors, je ne sais pas encore comment utiliser cette fonction, et je ne pense pas qu'elle modifie directement la résolution écran. Enfin, c'est pas très clair pour moi. Thierry nous expliquera peut-être cela mieux.

Bonne soirée.
Laurent
 
P

Pierrot

Guest
Bonsoir à tout le monde.

Dans premier temps, je n'arrive pas à télécharger ton application Thierry, ce n'est pas la première fois que cela m'arrive sur le site, y a t'il une raison, je ne sais pas.

Ensuite concernant, le code, j'ai une erreur de compilation sur cette ligne
Type TDEVMODE, cela me dit qu'il est impossible de définir un type Public par l'utilisateur, cela veut dire quoi exactement ? et que dois-je faire pour palier ce problème.

merci d'avance.

Pierrot
 

Discussions similaires

  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
212

Statistiques des forums

Discussions
312 330
Messages
2 087 351
Membres
103 526
dernier inscrit
HEC