Insérer une image sur un objet [Résolu]

Signaler
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007
-
Messages postés
11
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
16 mai 2011
-
Bonjour,
j'aimerais savoir comment on peut inserer une image sur un commandbutton
si quelqu'un à une idée je suis preneur.

@+

Je viens de découvrir le bonheur de programmer et le VB me le rend bien

17 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
Set CommandButton1.Picture = LoadPicture("C:\image1.jpg")
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
102
Exact renfield, VBA gère directement le style graphical !

Pour enlever l'image :
Set CommandButton1.Picture = Nothing
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
voir sa propriété Picture ...

tout simplement
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
102
Ne pas oublier de mettre le style du bouton à Graphical par contre !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
pas en VBA, DarkSidious, juste besoin de spécifier la Picture

(+possibilité de jouer avec le PicturePosition)
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Bonjour,
désolé de ne pas avoir préciser mais je voudrais le faire de manière "automatique" du genre

image=insert.picture (C: image1.jpg)
CommandButton1.Picture = image

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Merci ca marche, et par contre si je veux l'enlever existe t-il
Set CommandButton1.Picture = UnloadPicture("C:\image1.jpg")

Merci
@+
Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Par contre, je n'arrive pas à utiliser cette comande dans un module (peut on le faire?)

Dim CommandButton1 As CommandButton
Set CommandButton1.Picture = LoadPicture("C:\image1.jpg")

il me dis qu'il na connait pas CommandButton1 alors que je l'ai déclaré ???
Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
l'erreur vient du fait qu'il faudrait, dans l'absolu, faire ce genre de choses...

Dim CommandButton1 As CommandButton
Set CommandButton1 = New CommandButton
Set CommandButton1.Picture = LoadPicture("C:\image1.jpg")

je ne comprend pas pourquoi tu cherches a créer ce bouton dynamiquement....
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

En fait j'utilise une webcam dont je récupére l'image toute les seconde dans image1
et en fait je voudrais insérer toute les seconde cette image dans le CommandButton, pour avoir seconde par seconde la visualisation de ma webcam

Donc comme j'utilisa la fonction Sleep, apparement je ne peu faire cela que dans un module

En fait, j'en suis arivée à l'idée du command bouton car au debut j'inserais mon image toute les seconde avec :


Sub Commencer()
Temporisation
End Sub
Sub Temporisation()
Application.OnTime Now + TimeValue("00:00:01"), "Macro1"
End Sub
Sub Temporisation2()
Application.OnTime Now + TimeValue("00:00:01"), "efface"
End Sub
Sub Macro1()


ActiveSheet.Pictures.Insert( _
        "C:\Documents and Settings\steven thomas\My Documents\My Pictures\image1.jpg" _
        ).Select


       
 Temporisation
 Sleep 200
 Temporisation2
 
End Sub
Sub efface()
    Dim P As Object
   For Each P In ActiveSheet.Pictures
       If TypeOf P Is Picture Then Call P.Delete
   Next
End Sub

Mais le PB c'est que l'image ce met sur la cellule selectionnée alors que je voudrait qu'elle s'insert "automatiquement en haut à gauche de ma feuille" et que je puisse utyiliser le reste de ma feuille librement

Voilà c'est un peu compliquer, mais j'étudie ses pistes

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Bonjour RenField,


 


je crois qu'il ne crée pas dynamiquement mais souhaite simplement définir l'image depuis un module, ce qu'il peut faire en se référant à son bouton de commande et à la Form qui le contient.


genre, donc :


UserForm1.Commandbutton1.picture = .... etc...
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

En fait aprés mon explication j'aimerais un truc du genre :


Sub Macro1()

Set CommandButton1.Picture=LoadPicture("C:image1.jpg")

 Temporisation
End Sub

Ce qui me mettrais l'image toute les seconde dans mon CommandButton

à moins que j'arrive à inserer mon image en haut à gauche de ma feuille (position(0,0)) avec


ActiveSheet.Pictures.Insert( _
        "C:\Documents and Settings\steven thomas\My Documents\My Pictures\image1.jpg" _
        ).Select




sans que cela n'ai d'impact sur le reste de la feuille

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
utilises un controle Image, plutot qu'un CommandButton

et utilises la syntaxe proposée par jmfmarques, que je salue au passage
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Désolé ca va vous paraitre bête....
mais ou se trouve un controle image dans Excel, j'ai jamais entendu parler de  cela...

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Merci pour le lien, je devrais pouvoir m'en sortir, merci à tous de votre aide et bonne journée

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
11
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
16 mai 2011

Bonjour,
Je crois que c'est mon premier post sur ce forum alors je me présente, je vis en Thaïlande où je travaille comme principal d'un collège, j'ai 57 ans et suis autodidacte au niveau VBA. Je me suis mis à programmer en VBA dès la sortie d'Excel 5, mais pas de façon continue.
C'est un autre problème sur le même sujet "Picture"qui m'amène, J'ai une feuille Excel appellé "Form" qui contient plusieurs images (des photos d'élèves), le code suivant génère un message d'erreur:
Sub TotoTriesToReset()
    Dim obj
    For Each obj In Worksheets("Form").OLEObjects
         obj.Object.Picture = Nothing
    Next
End Sub
Il s'agit d'une petite routine que j'ai écrite pour tenter de trouver l'origine de l'erreur, il n'y a bien sûr aucun autre type d'objet sur cette feuille.
Si j'essaye obj.Object.Picture = LoadPicture(), j'ai le même message d'erreur:
"Run-time error '-2147417848 (80010108)
Method 'Picture' of Object 'IImage' failed"
le code complet qui ,si je me souviens bien, fonctionnait, est le suivant:
Sub Reinitialise()
Dim b%
Dim ws as Worksheet
Dim strNameSheet$
Dim s
   b = 1
    For Each ws In ThisWorkbook.Sheets
        strNameSheet = ws.Name
        If Left(strNameSheet, 5) = "Form" Then
            If Len(strNameSheet) > 5 Then
                ws.Delete 'deletes the copies of "Form : Form(2), Form(3) etc."
            End If
        End If
    Next
    With Sheets("Form")
        .Range("C1:C32").ClearContents
        .Range("G1:G32").ClearContents
   For Each s In .Shapes
        .OLEObjects(b).Object.PictureSizeMode = fmPictureSizeModeStretch
        .OLEObjects(b).Object.Picture = LoadPicture() 'unload the picture
       b = b + 1
    Next
    End With
End Sub
Ce qui est curieux c'est qu'après avoir lancé le programme et bug, la feuille propriété de l'image indique
 Picture  (None)
alors que l'image est toujours présente...
Quelqu'un pourrait-il m'aider à me sentir un peu moins C...[javascript:Insert_Emoticon('/imgs2/smile_blush.gif'); ]
Merci