Option Explicit 'Placer un bouton de commande (Catégorie contrôle ActiveX) dans une feuille Excel. Puis placer ce code _ dans la feuille qui contient le bouton de commande Private Sub CommandButton1_Click() Dim toto As OLEObject 'Déclaration des variables '================================================================= 'Création, insertion, placement et dimensionnement d'un object sur la feuille (Contrôle image dans cet exemple) 'Set toto ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _ DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5) '============================================================= 'On contrôle ensuite ici l'ensemble des propriétés de l'objet sur lequelles ont souhaite agir 'ActiveSheet.OLEObjects("Image1").Name "nom" ActiveSheet.OLEObjects("nom").Left = Range("F5").Left ActiveSheet.OLEObjects("nom").Top = Range("F5").Top ActiveSheet.OLEObjects("nom").Width = Range("F5:H10").Width ActiveSheet.OLEObjects("nom").Height = Range("F5:H10").Height ActiveSheet.OLEObjects("nom").Object.Picture = LoadPicture("C:\Documents and Settings\MAGIC DD\Bureau\TEST HUE\UE 180 A.bmp") ActiveSheet.OLEObjects("nom").Object.PictureAlignment = 0 ActiveSheet.OLEObjects("nom").Object.PictureSizeMode = 3 ActiveSheet.OLEObjects("nom").Object.BackStyle = 0 ActiveSheet.OLEObjects("nom").Object.SpecialEffect = 6 '============================================================= 'On contrôle les mêmes propriétés que ci-dessus mais avec une syntaxe légèrement différente '' toto.Name "nom" ' toto.Left = Range("F5").Left ' toto.Top = Range("F5").Top ' toto.Width = Range("F5:H10").Width ' toto.Height = Range("F5:H10").Height ' toto.Object.Picture = LoadPicture("C:\Documents and Settings\MAGIC DD\Bureau\TEST HUE\UE 180 A.bmp") ' toto.Object.PictureAlignment = 0 ' toto.Object.PictureSizeMode = 3 ' toto.Object.BackStyle = 0 ' toto.Object.SpecialEffect = 6 End Sub
ActiveSheet.OLEObjects.Add Filename:="D:\bateau.bmp", Left:=Range("B2").Left, Top:=Range("B2").Top, _ Width:=Range("B2:F10").Width, Height:=Range("B2:F10").Height
De toutes manières : on ne peut attribuer de cette manière une image à un tel objet !
ActiveSheet.OLEObjects.Add Filename:="D:\bateau.bmp", Left:=Range("B2").Left, Top:=Range("B2").Top, _ Width:=Range("B2:F10").Width, Height:=Range("B2:F10").Height
Préfère-leur de loin cette des contrôles activex.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub CommandButton1_Click() Dim toto As OLEObject Set toto = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _ DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5 _ ) toto.Name = "nom" '<<=================je lui attribue là un nom qui va me servir ensuite toto.Object.Picture = LoadPicture("D:\bateau.bmp") "<<<====== je lui attribue une image End Sub Private Sub CommandButton2_Click() ' je vais maintenant pointer vers l'objet (via le nom que je lui ai attribué) ' et je vais en modifier la propriété Picture ActiveSheet.OLEObjects("nom").Object.Picture = LoadPicture("D:\imagedegradee.bmp") '<<=== autre image End Sub
ActiveSheet.OLEObjects("nom").Top = 200
Option Explicit Sub Macro1() '============================================================================================ 'Méthode 1 : Création, insertion, placement et dimensionnement d'un object sur la feuille (Bouton de commande dans cet exemple) '============================================================================================ ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=117.857142857143, Top:=61.0714285714286, _ Width:=288.214285714286, Height:=132.321428571429).Select '============================================================================================ 'Méthode 2 : Création, insertion, placement et dimensionnement d'un object sur la feuille (Bouton de commande dans cet exemple) '============================================================================================ ActiveSheet.Buttons.Add(380, 600, 250, 50).Select End Sub
Sub AjoutPhoto(Rg As Range, Fichier, Nom, Num) With Feuil1.Pictures.Insert(Fichier) .Name = Nom .ShapeRange.AlternativeText = Num .ShapeRange.LockAspectRatio = False .Height = Rg.Height .Width = Rg.Width .Left = Rg.Left .Top = Rg.Top If Num 0 Then .OnAction "Memory.PhotoSelect" End With End Sub
Sub CollerImage() If Workbooks.Count Then On Error Resume Next L = PressePapiers.Lecture If ActiveWorkbook.ActiveSheet.ProtectContents Or L = "" Or ShapeIn > "" Then Beep Else Set Wb = ActiveWorkbook Set Sh = Wb.ActiveSheet.Shapes(Wb.ActiveSheet.Pictures.Insert(L).Name) ' pour les IncrementLeft & Top If IsEmpty(Sh) Then Beep Else If Sh.Width > Selection.Width - 4 Then Sh.Width = Selection.Width - 4 If Sh.Height > Selection.Height - 4 Then Sh.Height = Selection.Height - 4 Wb.NewPicture = True Sh.IncrementLeft (Selection.Width - Sh.Width) / 2 Sh.IncrementTop (Selection.Height - Sh.Height) / 2 Sh.Placement = xlMoveAndSize Sh.OnAction = "'" & Wb.Name & "'!" & Wb.CodeName & ".ShapeScale" End If End If End If End Sub
Option Explicit Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode 0 Then Cancel 1 End Sub Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer Run "TRAITEMENT_IMAGE" 'Ordonne de lire la Macro principale End Sub
Option Explicit Sub TRAITEMENT_IMAGE() Application.ScreenUpdating = False 'Rétablit l'affichage Application.DisplayAlerts = False 'Rétablit les alertes UserForm1.Show 'Cache l'UserForm1 'Call CONSTRUCTION_FEUILLE UserForm1.Show 'Afficher l'UserForm1 UserForm1.Left = 0 'Fixe la position de l'UserForm1 UserForm1.Top = 0 Application.ScreenUpdating = True 'Rétablit l'affichage Application.DisplayAlerts = True 'Rétablit les alertes End Sub Private Sub CONSTRUCTION_FEUILLE() Dim Contrôle_Image1 As OLEObject 'Déclaration des variables Dim Fichier_Image As String For Each Contrôle_Image1 In ActiveSheet.OLEObjects Contrôle_Image1.Delete Next Fichier_Image = "C:\Documents and Settings\MAGIC DD\Bureau\TEST HUE\UE 180 A.bmp" '================================================================= 'Création, insertion, placement et dimensionnement d'un object sur la feuille (Contrôle image dans cet exemple) 'Set Contrôle_Image1 ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _ DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5) '============================================================= 'On contrôle ensuite ici l'ensemble des propriétés de l'objet sur lequelles ont souhaite agir 'Contrôle_Image1.Name "Image1" Contrôle_Image1.Left = Range("N16").Left Contrôle_Image1.Top = Range("N16").Top Contrôle_Image1.Width = Range("N16:P21").Width Contrôle_Image1.Height = Range("N16:P21").Height Contrôle_Image1.Object.Picture = LoadPicture(Fichier_Image) Contrôle_Image1.Object.PictureAlignment = 2 Contrôle_Image1.Object.PictureSizeMode = 3 Contrôle_Image1.Object.BackStyle = 0 Contrôle_Image1.Object.SpecialEffect = 6 End Sub
Option Explicit Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode 0 Then Cancel 1 End Sub Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Quand on double-clic pour lancer Run "TRAITEMENT_IMAGE" 'Ordonne de lire la Macro principale End Sub
Option Explicit Sub TRAITEMENT_IMAGE() Dim Contrôle_Image1 As OLEObject 'Déclaration des variables ' ================================================================= 'Création, insertion, placement et dimensionnement d'un object sur la feuille (Contrôle image dans cet exemple) 'Set Contrôle_Image1 ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _ DisplayAsIcon:=False, Left:=210, Top:=124.5, Width:=123, Height:=49.5) UserForm1.Show 'Afficher l'UserForm1 End Sub