Contrôle d'image VBA

Résolu/Fermé
Alex - 14 juin 2016 à 11:22
 Alex - 15 juin 2016 à 15:31
Bonjour tout le monde,

Je souhaite créer dans une feuille un contrôle d'image. Voici le code pour l'instant :

ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=514.5, Top:=101.25, Width:=311.25, Height _
:=212.25).Select

C'est ce qui me permet de créer le contrôle d'image, puis de modifier sa position et ses dimensions. Mais j'aimerais également pouvoir modifier les paramètres "PictureSizeMode", "BackColor" et "BorderColor". Je souhaite changer la couleur en blanc pour que le contrôle n'apparaisse pas à l'impression (si vous avez une meilleure idée).

Merci d'avance pour vos réponses.
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
14 juin 2016 à 16:17
Bonjour,

comme ceci

Sub AddImageControl()
Dim btn As OLEObject
Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=514.5, Top:=101.25, Width:=311.25, Height _
:=212.25)
With btn
    .Object.Picture = LoadPicture("C:\chemin fichier image.jpg") 'chemin de l'image a adapter
    .Object.PictureSizeMode = fmPictureSizeModeZoom 'a adapter
     .Object.BorderColor = RGB(255, 0, 0) 'rouge a adapter
      .Object.BackColor = RGB(0, 128, 64) 'vert a adapter
End With
End Sub

0
Ah merci c'est génial!

Pour ma gouverne, que signifie "btn"? c'est juste le nom que tu donne à ce que tu créer?

Et j'aurais 2 dernières requêtes, est-ce possible que lorsque se lance la macro, une boite de dialogue s'ouvre pour pouvoir choisir l'image? pck je compte changer d'image à chaque fois...

Et enfin, peut-on compresser l'image dès son insertion grâce à la macro?

Sinon encore merci, c'est vraiment cool!
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
14 juin 2016 à 16:51
btn est une variable, tu mets ce que tu veux.

Il faut savoir que ce code crée à chaque fois un contrôle image. Donc si tu veux mettre une image différente, il faut supprimer le contrôle. voici le code:

Option Explicit
Dim chemin
Private Sub CommandButton1_Click()
chemin = Application _
    .GetOpenFilename("Images Files (*.jpg), *.jpg")
If chemin <> False Then
EffaceImages
    AddImageControl
End If
End Sub
Sub AddImageControl()
Dim btn As OLEObject
Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=514.5, Top:=101.25, Width:=311.25, Height _
:=212.25)
With btn
    .Object.Picture = LoadPicture(chemin) 'chemin de l'image
    .Object.PictureSizeMode = fmPictureSizeModeZoom
     .Object.BorderColor = RGB(255, 0, 0) 'rouge
      .Object.BackColor = RGB(0, 128, 64) 'vert
End With
End Sub
Sub EffaceImages()
 Dim x As Shape
 For Each x In ActiveSheet.Shapes
         x.Delete
    Next x
 End Sub


l'image en jpg est déjà une image compressée!


0
Merci beaucoup!
0