Changer résolution d'écran en VBA

JerCaz

XLDnaute Occasionnel
Bonjour le forum,

je suis actuellement en train de réaliser une petite application sous Excel 2002 pour les assistantes sociales de l'hôpital dans lequel je travaille, et je souhaiterais que lorsqu'elles lancent cette application, leur PC se mette et reste ensuite à la résolution de 1280 x 1024 si la machine n'est pas déjà configurée comme tel.

Imposer cette résolution n'est pas génant sur mon lieu de travail: nous avons tous à notre disposition les mêmes machines, avec les mêmes écrans... Enfin bref, pas de danger d'incompatibilité.
Je leur ai expliqué que pour un meilleur fonctionnement de mon application, il fallait utiliser cette résolution d'écran, avec le risque d'avoir un bureau qui change (icones qui se déplacent, etc...) elles sont toutes OK, mais elles veulent que ce soit automatique... Enfin bref pour résumer, ça ne gènera personne que mon application change la résolution en 1280 x 1024 32 bits.

J'ai effectué une petite recherche sur le forum:
Excel Downloads Forums - Résultats de la recherche mais ça ne m'aide pas du tout...

Quelqu'un aurait-il une idée de code qui s'exécuterait au lancement de l'application, qui vérifierait la résolution de la machine, et si ce n'est pas en 1280 x 1024 32 bits, mettre cette résolution automatiquement, et la laisser ensuite?

D'avance, merci beaucoup pour votre aide!
Cordialement.
 

JerCaz

XLDnaute Occasionnel
Re : Changer résolution d'écran en VBA

Bonjour, et merci Minick pour ton aide!

Effectivement, j'habite près de Douai... :D

Merci pour le lien que tu m'as envoyé.
En cherchant sur le net, j'avais trouvé ce site ce matin-même, mais je ne sais pas quoi faire de ce boutr de code.
En clair, je ne sais pas où le placer pour qu'il fonctionne:
je l'ai bêtement copié/collé dans "Thisworkbook": ça n'a pas fonctionné;
je l'ai placé dans un nouveau module de classe... toujours rien...
j'ai alors essayé de le placer dans un objet de ma 1ere feuille (microsoft excel objects)... mais toujours sans succès.
En désespoire de cause, j'ai même tenté de le placer dans une nouvelle macro et d'éxécuter celle-ci... j'ai alors eu droit à un beau message: "Erreur de compilation: Seuls des commentaires peuvent apparaître après End Sub, End Function, ou End Property".

Ah, au fait, j'ai oublié de préciser mais vous l'aurez compris: je débute dans le merveilleux monde du VBA... et pour moi, "les voies du VBA sont un peu plus pénétrables que les voies du Seigneur", mais pas de beaucoup...

J'utilise la connexion de mon lieu de travail pour poster sur le forum (après tout, comme c'est pour le boulot, y'a pas de raison de se géner...), je dispose donc d'une connexion ultra sécurisée ultra limitée ultra bridée...
Je ne peux donc vous joindre le fichier test qu'en contournant légèrement les règles du forum... j'en suis sincèrement désolé!
Vous pouvez le trouver ici:
Voir le Fichier : ChangerResolution.xls
 

Minick

XLDnaute Impliqué
Re : Changer résolution d'écran en VBA

Tu effaces tout dans le module1 parce que la t'en a mis partout :eek:

Ensuite tu copies tout ce qu'il y a sur le lien plus haut de
Code:
Type TDEVMODE
jusqu'en bas le dernier
Code:
End Sub

Ensuite tu affectes la macro ChangeRes a ton bouton pour verifier.

Si tu veux que ca se fasse a l'ouverture du fichier il faut lancer ChangeRes
dans l'evenement Open de Thisworkbook.
Dans le code de Thisworkbook tu places
Code:
Private Sub Workbook_Open()
    ChangeRes
End Sub

voila j'espere que c'est assez clair
 

JerCaz

XLDnaute Occasionnel
Re : Changer résolution d'écran en VBA

En fait, mon problème n'est pas complètement résolu...
La macro fonctionne pour la partie "1280" en largeur d'écran, mais pour la partie "1024" en hauteur, ça ne fonctionne pas...
Bref, mon écran se met en 1280 par 600 et non pas 1280 par 1024.
Et quand j'essaie de faire
Code:
ChangeRes (1280, 1024, 24)
, la syntaxe n'est pas correcte...
Et quand je fais
Code:
ChangeRes (1280,  24)
, la syntaxe fonctionne, mais ma résolution passe en 1280 x 600...
Pas top...

Quelqu'un aurait-il une idée?

D'avance, thanks a lot!
 

tototiti2008

XLDnaute Barbatruc
Re : Changer résolution d'écran en VBA

Bonjour à tous,

un essai : j'ai modifié cette Sub.
Même si je n'ai pas tout compris, je crois que ça marche...


Code:
Private Function ChangeRes(Optional HorzPix, Optional VertPix, _
Optional BitsPerPel) As Integer
  Dim DevMode As TDEVMODE, I As Long
  Dim ActBitsPerPel As Integer, ActHorzPix As Integer, ActVertPix As Integer
  LireRes ActHorzPix, ActVertPix, ActBitsPerPel
  If IsMissing(HorzPix) Then HorzPix = ActHorzPix
  If IsMissing(VertPix) Then VertPix = ActVertPix
  If IsMissing(BitsPerPel) Then BitsPerPel = ActBitsPerPel
  If HorzPix = ActHorzPix And BitsPerPel = ActBitsPerPel And VertPix = ActVertPix _
    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 And DevMode.dmPelsHeight = VertPix
  ChangeRes = ChangeDisplaySettingsA(DevMode, 0)
  If ChangeRes = 1 Then ChangeRes = ChangeDisplaySettingsA(DevMode, 1)
  If ChangeRes >= 0 Then ChangeRes = ChangeRes + 1
End Function
 

JerCaz

XLDnaute Occasionnel
Re : Changer résolution d'écran en VBA

Bonjour Le forum,
Bonjour Tototiti2008,
Bonjour Minick,

J'ai essayé d'apporter la modification proposée par tototiti2008, mais ça ne fonctionne toujours pas: maintenant, j'ai systématiquement le message d'erreur "la résolution n'est pas supportée", même pour un basique 1280x1024 normalement supporté par l'écran.
Pour les courrageux qui veulent essayer, la voici (attention néanmoins, si cette macro fonctionnait chez vous, elle changerait la résolution de votre écran!!!!!!!)
Voir le Fichier : ChangerResolution2.xls
Encore une fois désolé d'utiliser archivehost plutôt que l'hébergeur du forum: ma connexion ultra bridée me contraint à contourner légèrement les règles de bonne conduite du forum... désolé!
 

JerCaz

XLDnaute Occasionnel
Re : Changer résolution d'écran en VBA

Mille excuses, et un grand merci!
J'avais oublié un détail très important: j'avais laissé ChangeRes (1280, 32)... J'avais oublié le "1024", ça ne pouvais donc pas fonctionner.

Encore une fois, un grand merci!
 

Discussions similaires

Réponses
7
Affichages
24 K
Compte Supprimé 979
C

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 186
dernier inscrit
Eliyass