Insérer une image sur un objet

Résolu
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007
- 11 juil. 2007 à 09:41
chonburi
Messages postés
8
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
16 mai 2011
- 20 mars 2009 à 09:45
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

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
11 juil. 2007 à 10:13
Set CommandButton1.Picture = LoadPicture("C:\image1.jpg")
3
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
11 juil. 2007 à 10:27
Exact renfield, VBA gère directement le style graphical !

Pour enlever l'image :
Set CommandButton1.Picture = Nothing
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
11 juil. 2007 à 09:46
voir sa propriété Picture ...

tout simplement
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
11 juil. 2007 à 09:56
Ne pas oublier de mettre le style du bouton à Graphical par contre !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
11 juil. 2007 à 09:59
pas en VBA, DarkSidious, juste besoin de spécifier la Picture

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

11 juil. 2007 à 10:08
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
0
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

11 juil. 2007 à 10:22
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
0
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

11 juil. 2007 à 10:41
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
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
11 juil. 2007 à 10:50
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....
0
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

11 juil. 2007 à 10:59
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
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
11 juil. 2007 à 11:02
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...
0
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

11 juil. 2007 à 11:12
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
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
11 juil. 2007 à 11:15
utilises un controle Image, plutot qu'un CommandButton

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

11 juil. 2007 à 11:22
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
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
11 juil. 2007 à 11:25
0
taj88
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

11 juil. 2007 à 11:32
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
0
chonburi
Messages postés
8
Date d'inscription
mardi 15 janvier 2008
Statut
Membre
Dernière intervention
16 mai 2011

20 mars 2009 à 09:45
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
0