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

tableau Excel -> image -> papier peint du Bureau

3 réponses
Avatar
Jean-Claude
Bonjour,

j'essaye de faire une petite macro qui transforme ma feuille Excel en image
pour ensuite la mettre en papier peint du Bureau (XP, Excel 2003).

Pour exporter en image :
---
Feuil1.Range("A2:H19").CopyPicture
Feuil1.Paste
'Crée un graphique temporaire
With Feuil1.ChartObjects.Add(0, 0, Cells(19, 8).Left, Cells(18,
9).Top).Chart
.Paste
.Export ThisWorkbook.Path & "\test.jpg", "JPG"
End With
With Feuil1
.ChartObjects(Feuil1.ChartObjects.Count).Delete
.Shapes(Feuil1.Shapes.Count).Delete
End With

Pour mettre le papier peint :
---
Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long,
ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Sub SetWallpaper(ByVal FileName As String)
Dim ret As Long
ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, FileName,
SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE)
End Sub

Les deux fonctionnent séparément, sauf que :
- l'export ne génère que du JPG (et GIF, PNG mais pas intéressant), pas de
BMP (sinon message d'erreur)
- le SetWallpaper met des images BMP, mais pas de JPG (alors que
manuellement, par Propriété/Bureau, on peut mettre des JPG)

Ai-je mal compris quelque chose ? Y a-t-il une autre solution ?
Merci d'avance.

Jean-Claude

3 réponses

Avatar
DanielCo
Bonjour,
Il est possible que tu n'aies pas le filtre BMP. Les filtres doivent se
trouver dans le dossier :
C:Program FilesCommon Filesmicrosoft sharedGRPHFLT
cela peut dépendre de ton OS.
Cherche à télécharger le fichier BMPIMP32.FLT
Il y a cependant l'air d'y avoir pas mal de problèmes avec.
Cordialement.
Daniel

Bonjour,

j'essaye de faire une petite macro qui transforme ma feuille Excel en image
pour ensuite la mettre en papier peint du Bureau (XP, Excel 2003).

Pour exporter en image :
---
Feuil1.Range("A2:H19").CopyPicture
Feuil1.Paste
'Crée un graphique temporaire
With Feuil1.ChartObjects.Add(0, 0, Cells(19, 8).Left, Cells(18,
9).Top).Chart
.Paste
.Export ThisWorkbook.Path & "test.jpg", "JPG"
End With
With Feuil1
.ChartObjects(Feuil1.ChartObjects.Count).Delete
.Shapes(Feuil1.Shapes.Count).Delete
End With

Pour mettre le papier peint :
---
Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long,
ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Public Sub SetWallpaper(ByVal FileName As String)
Dim ret As Long
ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&, FileName,
SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE)
End Sub

Les deux fonctionnent séparément, sauf que :
- l'export ne génère que du JPG (et GIF, PNG mais pas intéressant), pas de
BMP (sinon message d'erreur)
- le SetWallpaper met des images BMP, mais pas de JPG (alors que
manuellement, par Propriété/Bureau, on peut mettre des JPG)

Ai-je mal compris quelque chose ? Y a-t-il une autre solution ?
Merci d'avance.

Jean-Claude



--
Pour plaus de facilité, veuillez préciser votre version d'Excel
Cordialement.
Daniel
Avatar
Jean-Claude
"DanielCo" a écrit dans le message de news:
j0e2o2$38s$
Bonjour,
Il est possible que tu n'aies pas le filtre BMP. Les filtres doivent se
trouver dans le dossier :
C:Program FilesCommon Filesmicrosoft sharedGRPHFLT
cela peut dépendre de ton OS.
Cherche à télécharger le fichier BMPIMP32.FLT
Il y a cependant l'air d'y avoir pas mal de problèmes avec.
Cordialement.
Daniel




Merci de la réponse, mais le fichier BMPIMP32.FLT est bien présent, je l'ai
recopié depuis un autre PC, toujours le même pb. Et vu les pb qu'il semble
poser, je ne vais pas me risquer à vérifier les clés de registres (d'autant
que je souhaite ensuite utiliser le script sur d'autres postes).
D'autes idées ?
Pour ma part, je vais explorer d'autres pistes pour pouvoir générer un
fichier BMP, comme peut-être :
- passer par le presse-papier (je sais faire) et enregistrer le contenu en
image (à voir...)
- ou alors lire les pixels de la feuille (de l'écran je sais, mais peut-on
le faire pour le contenu d'une feuille, au-delà de la partie affichée ?) et
écrire moi-même le BMP (le format n'a pas l'air très compliqué).
Je sais, ça fait un peu bricolage, mais...

Jean-Claude
Avatar
Jean-Claude
Yes !
J'ai fini par trouvé à force de fouiller, en tombant sur le site
http://www.oaltd.co.uk/Excel/Default.htm avec le PastePicture.zip (qui date
pourtant de 1999 !) mais qui fonctionne nickel :
le vba permet d'enregistrer le contenu du presse-papier au format BMP ! (un
peu long, je le reporte pas ici)
Et comme il suffit d'utiliser CopyPicture xlScreen, xlBitmap pour copier
dans le presse-papier, cela répond à mon besoin.
Merci et bon week end.

Jean-Claude