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

Une image, deux formats

3 réponses
Avatar
El pequeno
Bonjour à tous
Voilà un petit problème que je soumet aux demi-Dieux de la
programmation VBA pour Excel ; demi-Dieux car, à l’instar d’Achille
ou d’Héraclès, ils ne sont que mortels.

Le programme sur lequel je travail est une petite application professionnelle
que je développe pour PSA. Je ne suis absolument pas programmeur de
profession et ce n’est donc pas ma fonction au sein de l’entreprise, mais le
besoin existe et il semble que je sois le seul dans le service à pouvoir y
répondre. Il s’agit d’un « bénévolat professionnel » en quelque sorte…

Bref, ce programme va tourner sur deux environnements différents :
-sur PC classiques
-sur « Citrix », émulation PC sur station et environnement Unix
Sur la première feuille du classeur (activée à l’ouverture de ce dernier),
on trouve les boutons de commande et un superbe « cache misère » constitué
d’une image représentant…des automobiles (je voulais mettre des chatons dans
un panier, mais ma hiérarchie a refusée).
Le problème est que lorsque l’on ouvre Excel sur PC la taille de la fenêtre
n’est pas la même que lorsqu’on l’ouvre sur Citrix. Ceci est probablement du
aux résolutions d’écran que je ne peux pas modifier. Pour exemple
-Ouverture sur PC : ligne 35, colonne L
-Ouverture sur Citrix : ligne 46, colonne N
Si l’image est correctement dimensionnée pour PC, elle ne cache plus la
misère sur Citrix, à l’inverse si elle est correctement dimensionnée pour
Citrix on ne voit plus apparaître le logo « PSA » sur PC, ce qui est
proprement scandaleux ( on est au bord du crime de lèse Majesté).

Y a t’il un moyen de redimensionner ( par VB ) automatiquement l’image ? Ou,
à défaut de reconnaître la taille d’ouverture de la fenêtre ? Ou tout autre «
truc » qui me permettrais de savoir si Excel s’ouvre sur PC ou Citrix ? Je
pourrai appliquer alors les méthodes ScaleHeight et ScaleWidth avec les
facteurs que j’aurai préalablement définit par enregistrement de macro.
D’avance merci
Slts

3 réponses

Avatar
RGI
bonjour

tu peux essayer ça

dans un module

'résolution de l'écran du poste de travail
'Tom Ogilvy, mpep cité par Frédéric Sigonneau sur son site Web

'*****************************************************************
' DECLARATIONS SECTION
'*****************************************************************
Option Explicit
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type

' NOTE: The following declare statements are case sensitive.
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
(ByVal hWnd As Long, rectangle As RECT) As Long

'*****************************************************************
' FUNCTION: GetScreenResolution() ' ' PURPOSE:
' To determine the current screen size or resolution. '
' RETURN:
' The current screen resolution. Typically one of the following:
' 640 x 480 ' 800 x 600 ' 1024 x 768 '
'*****************************************************************
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long

hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)

End Function
'******************************************************************************
Sub tamacro()
Dim ecran
ecran = GetScreenResolution
MsgBox "La resolution d'écran est :" & ecran
End Sub

et dans thisworkbook

Private Sub Workbook_Open()
If GetScreenResolution = "640x480" Then tamacro
If GetScreenResolution = "800x600" Then tamacro
If GetScreenResolution = "1024x768" Then tamacro
If GetScreenResolution = "1280x1024" Then tamacro

End Sub


"El pequeno" a écrit dans le message
de news:
Bonjour à tous
Voilà un petit problème que je soumet aux demi-Dieux de la
programmation VBA pour Excel ; demi-Dieux car, à l'instar d'Achille
ou d'Héraclès, ils ne sont que mortels.

Le programme sur lequel je travail est une petite application
professionnelle
que je développe pour PSA. Je ne suis absolument pas programmeur de
profession et ce n'est donc pas ma fonction au sein de l'entreprise, mais
le
besoin existe et il semble que je sois le seul dans le service à pouvoir y
répondre. Il s'agit d'un « bénévolat professionnel » en quelque sorte.

Bref, ce programme va tourner sur deux environnements différents :
-sur PC classiques
-sur « Citrix », émulation PC sur station et environnement Unix
Sur la première feuille du classeur (activée à l'ouverture de ce dernier),
on trouve les boutons de commande et un superbe « cache misère » constitué
d'une image représentant.des automobiles (je voulais mettre des chatons
dans
un panier, mais ma hiérarchie a refusée).
Le problème est que lorsque l'on ouvre Excel sur PC la taille de la
fenêtre
n'est pas la même que lorsqu'on l'ouvre sur Citrix. Ceci est probablement
du
aux résolutions d'écran que je ne peux pas modifier. Pour exemple
-Ouverture sur PC : ligne 35, colonne L
-Ouverture sur Citrix : ligne 46, colonne N
Si l'image est correctement dimensionnée pour PC, elle ne cache plus la
misère sur Citrix, à l'inverse si elle est correctement dimensionnée pour
Citrix on ne voit plus apparaître le logo « PSA » sur PC, ce qui est
proprement scandaleux ( on est au bord du crime de lèse Majesté).

Y a t'il un moyen de redimensionner ( par VB ) automatiquement l'image ?
Ou,
à défaut de reconnaître la taille d'ouverture de la fenêtre ? Ou tout
autre «
truc » qui me permettrais de savoir si Excel s'ouvre sur PC ou Citrix ? Je
pourrai appliquer alors les méthodes ScaleHeight et ScaleWidth avec les
facteurs que j'aurai préalablement définit par enregistrement de macro.
D'avance merci
Slts



Avatar
Michel Pierron
Bonjour El pequeno;
Pourquoi ne pas définir directement les dimensions de ton image à
l'ouverture avec

Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
With ActiveSheet.Shapes("Picture 1")
.LockAspectRatio = msoFalse
.Left = 0
.Top = 0
.Width = ActiveWindow.UsableWidth
.Height = ActiveWindow.UsableHeight
End With

MP

"El pequeno" a écrit dans le message
de news:
Bonjour à tous
Voilà un petit problème que je soumet aux demi-Dieux de la
programmation VBA pour Excel ; demi-Dieux car, à l'instar d'Achille
ou d'Héraclès, ils ne sont que mortels.

Le programme sur lequel je travail est une petite application
professionnelle

que je développe pour PSA. Je ne suis absolument pas programmeur de
profession et ce n'est donc pas ma fonction au sein de l'entreprise, mais
le

besoin existe et il semble que je sois le seul dans le service à pouvoir y
répondre. Il s'agit d'un « bénévolat professionnel » en quelque sorte.

Bref, ce programme va tourner sur deux environnements différents :
-sur PC classiques
-sur « Citrix », émulation PC sur station et environnement Unix
Sur la première feuille du classeur (activée à l'ouverture de ce dernier),
on trouve les boutons de commande et un superbe « cache misère » constitué
d'une image représentant.des automobiles (je voulais mettre des chatons
dans

un panier, mais ma hiérarchie a refusée).
Le problème est que lorsque l'on ouvre Excel sur PC la taille de la
fenêtre

n'est pas la même que lorsqu'on l'ouvre sur Citrix. Ceci est probablement
du

aux résolutions d'écran que je ne peux pas modifier. Pour exemple
-Ouverture sur PC : ligne 35, colonne L
-Ouverture sur Citrix : ligne 46, colonne N
Si l'image est correctement dimensionnée pour PC, elle ne cache plus la
misère sur Citrix, à l'inverse si elle est correctement dimensionnée pour
Citrix on ne voit plus apparaître le logo « PSA » sur PC, ce qui est
proprement scandaleux ( on est au bord du crime de lèse Majesté).

Y a t'il un moyen de redimensionner ( par VB ) automatiquement l'image ?
Ou,

à défaut de reconnaître la taille d'ouverture de la fenêtre ? Ou tout
autre «

truc » qui me permettrais de savoir si Excel s'ouvre sur PC ou Citrix ? Je
pourrai appliquer alors les méthodes ScaleHeight et ScaleWidth avec les
facteurs que j'aurai préalablement définit par enregistrement de macro.
D'avance merci
Slts



Avatar
El pequeno
Bonjour Michel ( Bonsoir en l'occurence )
Parce qu'étant moins pro que vous je ne savais pas le faire !
Cette procédure semble répondre parfaitement à mon probléme.
A écrire sous l'évenement Workbook_Open i suppose ?
Petit bémol : dans mon cas il s'agit d'un objet ShapeRange
mais je présume que ça fonctionne aussi.
Encore une vie sauvée. Quand je pense qu'il y en a qui risque leur peau avec
médecin sans frontière pour le mème résultat...
Un GRAND merci à tous
Slts


Bonjour El pequeno;
Pourquoi ne pas définir directement les dimensions de ton image à
l'ouverture avec

Application.WindowState = xlMaximized
ActiveWindow.WindowState = xlMaximized
With ActiveSheet.Shapes("Picture 1")
..LockAspectRatio = msoFalse
..Left = 0
..Top = 0
..Width = ActiveWindow.UsableWidth
..Height = ActiveWindow.UsableHeight
End With

MP

"El pequeno" a écrit dans le message
de news:
Bonjour à tous
Voilà un petit problème que je soumet aux demi-Dieux de la
programmation VBA pour Excel ; demi-Dieux car, à l'instar d'Achille
ou d'Héraclès, ils ne sont que mortels.

Le programme sur lequel je travail est une petite application
professionnelle

que je développe pour PSA. Je ne suis absolument pas programmeur de
profession et ce n'est donc pas ma fonction au sein de l'entreprise, mais
le

besoin existe et il semble que je sois le seul dans le service à pouvoir y
répondre. Il s'agit d'un « bénévolat professionnel » en quelque sorte.

Bref, ce programme va tourner sur deux environnements différents :
-sur PC classiques
-sur « Citrix », émulation PC sur station et environnement Unix
Sur la première feuille du classeur (activée à l'ouverture de ce dernier),
on trouve les boutons de commande et un superbe « cache misère » constitué
d'une image représentant.des automobiles (je voulais mettre des chatons
dans

un panier, mais ma hiérarchie a refusée).
Le problème est que lorsque l'on ouvre Excel sur PC la taille de la
fenêtre

n'est pas la même que lorsqu'on l'ouvre sur Citrix. Ceci est probablement
du

aux résolutions d'écran que je ne peux pas modifier. Pour exemple
-Ouverture sur PC : ligne 35, colonne L
-Ouverture sur Citrix : ligne 46, colonne N
Si l'image est correctement dimensionnée pour PC, elle ne cache plus la
misère sur Citrix, à l'inverse si elle est correctement dimensionnée pour
Citrix on ne voit plus apparaître le logo « PSA » sur PC, ce qui est
proprement scandaleux ( on est au bord du crime de lèse Majesté).

Y a t'il un moyen de redimensionner ( par VB ) automatiquement l'image ?
Ou,

à défaut de reconnaître la taille d'ouverture de la fenêtre ? Ou tout
autre «

truc » qui me permettrais de savoir si Excel s'ouvre sur PC ou Citrix ? Je
pourrai appliquer alors les méthodes ScaleHeight et ScaleWidth avec les
facteurs que j'aurai préalablement définit par enregistrement de macro.
D'avance merci
Slts