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

Macro insertion image, directement en arrière-plan ?

4 réponses
Avatar
fifigim
Bonjour,

J'avais posé cette question il a un quelques jours, mais suite aux problèmes
du forum, je n'ai pas eu de réponses, et ma question s'est "perdu"...

Donc, j'ai une macro "insertion image", qui fonctionne très bien, cependant,
je souhaiterai que l'image, lors de son apparition sur ma feuille, soit
disposée directement en arrière-plan. En effet, lors de son apparition, elle
s'insère de suite au premier plan, masquant donc des informations utiles
disposées derrière elle.
Je peux évidement faire un clic droit sur l'image, et "ordre", puis "en
arrière-plan", mais si je peux m'éviter cette manoeuvre, cela serait plus
pratique.

Merci d'avance.

ps : ma macro "insertion image", à laquelle il manque donc le concept "
arrière plan" :

Application.ScreenUpdating = False
Set Sh = Worksheets("Feuille1").Shapes("Image 10").Duplicate
Sh.CopyPicture

With Worksheets("Feuille2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
End With

4 réponses

Avatar
Michel Pierron
Bonjour fifigim;
Tu dois utiliser la propriété SetBackgroundPicture pour l'arrière plan.

MP

"fifigim" a écrit dans le message de
news:
Bonjour,

J'avais posé cette question il a un quelques jours, mais suite aux
problèmes

du forum, je n'ai pas eu de réponses, et ma question s'est "perdu"...

Donc, j'ai une macro "insertion image", qui fonctionne très bien,
cependant,

je souhaiterai que l'image, lors de son apparition sur ma feuille, soit
disposée directement en arrière-plan. En effet, lors de son apparition,
elle

s'insère de suite au premier plan, masquant donc des informations utiles
disposées derrière elle.
Je peux évidement faire un clic droit sur l'image, et "ordre", puis "en
arrière-plan", mais si je peux m'éviter cette manoeuvre, cela serait plus
pratique.

Merci d'avance.

ps : ma macro "insertion image", à laquelle il manque donc le concept "
arrière plan" :

Application.ScreenUpdating = False
Set Sh = Worksheets("Feuille1").Shapes("Image 10").Duplicate
Sh.CopyPicture

With Worksheets("Feuille2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
End With




Avatar
fifigim
Désolé de ne pas être un vrai pro des macros, mais je la met où cette
propriété "SetBackgroundPicture" dans ma macro ??

Merci encore



Bonjour fifigim;
Tu dois utiliser la propriété SetBackgroundPicture pour l'arrière plan.

MP

"fifigim" a écrit dans le message de
news:
Bonjour,

J'avais posé cette question il a un quelques jours, mais suite aux
problèmes

du forum, je n'ai pas eu de réponses, et ma question s'est "perdu"...

Donc, j'ai une macro "insertion image", qui fonctionne très bien,
cependant,

je souhaiterai que l'image, lors de son apparition sur ma feuille, soit
disposée directement en arrière-plan. En effet, lors de son apparition,
elle

s'insère de suite au premier plan, masquant donc des informations utiles
disposées derrière elle.
Je peux évidement faire un clic droit sur l'image, et "ordre", puis "en
arrière-plan", mais si je peux m'éviter cette manoeuvre, cela serait plus
pratique.

Merci d'avance.

ps : ma macro "insertion image", à laquelle il manque donc le concept "
arrière plan" :

Application.ScreenUpdating = False
Set Sh = Worksheets("Feuille1").Shapes("Image 10").Duplicate
Sh.CopyPicture

With Worksheets("Feuille2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
End With









Avatar
Michel Pierron
Re fifigim;
Apparemment, tes images sont déjà dans une feuille de ton classeur; tu ne
peux donc pas le faire directement car la propriété SetBackgroundPicture
nécessite de pointer sur un fichier d'image. Tu peux t'en sortir comme ceci:

' En tête de ton module, les déclarations suivantes:
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Private Type PicDesc
Size As Long
Type As Long
hBmp As Long
End Type

Private Declare Function OpenClipboard& _
Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& _
Lib "user32" ()
Private Declare Function GetClipboardData& _
Lib "user32" (ByVal wFormat%)
Private Declare Function CloseClipboard& Lib "user32" ()
Private Declare Function OleCreatePictureIndirect& _
Lib "olepro32.dll" (pDesc As PicDesc, RefIID As GUID _
, ByVal fPictureOwnsHandle&, pPic As IPicture)
Private Declare Function CopyImage& Lib "user32" _
(ByVal handle&, ByVal un1&, ByVal n1&, ByVal n2&, ByVal un2&)

Sub BackgroundPicture()
Worksheets("Feuille2").Activate
Range("A1").Select
Worksheets("Feuille1").Shapes("Image 10").CopyPicture 1, 2
OpenClipboard 0&
Dim PD As PicDesc, SP As StdPicture, GD As GUID
GD.Data1 = &H20400: GD.Data4(0) = &HC0: GD.Data4(7) = &H46
PD.Size = Len(PD): PD.Type = 1
PD.hBmp = CopyImage(GetClipboardData(2), 0, 0, 0, &H4)
OleCreatePictureIndirect PD, GD, False, SP
CloseClipboard: SavePicture SP, "c:Recup.bmp"
ActiveSheet.SetBackgroundPicture "c:Recup.bmp"
OpenClipboard 0&: EmptyClipboard: CloseClipboard
On Error Resume Next
Kill "c:Recup.bmp"
End Sub

MP

"fifigim" a écrit dans le message de
news:
Désolé de ne pas être un vrai pro des macros, mais je la met où cette
propriété "SetBackgroundPicture" dans ma macro ??

Merci encore



Bonjour fifigim;
Tu dois utiliser la propriété SetBackgroundPicture pour l'arrière plan.

MP

"fifigim" a écrit dans le message de
news:
Bonjour,

J'avais posé cette question il a un quelques jours, mais suite aux
problèmes

du forum, je n'ai pas eu de réponses, et ma question s'est "perdu"...

Donc, j'ai une macro "insertion image", qui fonctionne très bien,
cependant,

je souhaiterai que l'image, lors de son apparition sur ma feuille,
soit



disposée directement en arrière-plan. En effet, lors de son
apparition,



elle
s'insère de suite au premier plan, masquant donc des informations
utiles



disposées derrière elle.
Je peux évidement faire un clic droit sur l'image, et "ordre", puis
"en



arrière-plan", mais si je peux m'éviter cette manoeuvre, cela serait
plus



pratique.

Merci d'avance.

ps : ma macro "insertion image", à laquelle il manque donc le concept
"



arrière plan" :

Application.ScreenUpdating = False
Set Sh = Worksheets("Feuille1").Shapes("Image 10").Duplicate
Sh.CopyPicture

With Worksheets("Feuille2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
End With











Avatar
michdenis
Bonjour Fifigim,

Attention, les manipulations que tu as décrites sont effectives si tu as une supposition d'images ou d'objet.
Dans le cas qui nous occupe, si tu désires insérer une image en arrière plan de la feuille de calcul,
Tu dois utiliser cette commande :
ActiveSheet.SetBackgroundPicture Filename:= "C:CheminMonImage.JPG"

L'image couvre l'ensemble de la feuille et non seulement une section définie de celle-ci.

Cependant, si tu as une supperpostion d'images, tu peux utiliser la propriété "ZOrder"
pour définir laquelle des images se retrouvent en dessus.

Dans ce dernier cas, tu pourrais modifier ta macro très légèrement comme ceci :

Ta macro serait transformée comme ceci :
'------------------------------
Application.ScreenUpdating = False
Set sh = Worksheets("Feuil1").Shapes("Image 1").Duplicate
sh.CopyPicture

With Worksheets("Feuil2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
sh.ZOrder msoSendToBack
End With
'------------------------------


Salutations!



"fifigim" a écrit dans le message de news:
Désolé de ne pas être un vrai pro des macros, mais je la met où cette
propriété "SetBackgroundPicture" dans ma macro ??

Merci encore



Bonjour fifigim;
Tu dois utiliser la propriété SetBackgroundPicture pour l'arrière plan.

MP

"fifigim" a écrit dans le message de
news:
Bonjour,

J'avais posé cette question il a un quelques jours, mais suite aux
problèmes

du forum, je n'ai pas eu de réponses, et ma question s'est "perdu"...

Donc, j'ai une macro "insertion image", qui fonctionne très bien,
cependant,

je souhaiterai que l'image, lors de son apparition sur ma feuille, soit
disposée directement en arrière-plan. En effet, lors de son apparition,
elle

s'insère de suite au premier plan, masquant donc des informations utiles
disposées derrière elle.
Je peux évidement faire un clic droit sur l'image, et "ordre", puis "en
arrière-plan", mais si je peux m'éviter cette manoeuvre, cela serait plus
pratique.

Merci d'avance.

ps : ma macro "insertion image", à laquelle il manque donc le concept "
arrière plan" :

Application.ScreenUpdating = False
Set Sh = Worksheets("Feuille1").Shapes("Image 10").Duplicate
Sh.CopyPicture

With Worksheets("Feuille2")
.Activate
.Paste
With .Range("a10:g30")
Selection.Top = .Top
Selection.Left = .Left
Selection.Height = .Height
Selection.Width = .Width
.Select
End With
End With