Loadpicture

M

Micka

Guest
Bonjour,

Je suis novice en programmation VBA et afin d'y connaitre un peu plus, j'ai fais l'acquisition d'un livre traitant de VBA6. Je n'ai malheureusement pas trouvé de livre sur VBA pour Excel.
J'utilise Excel 97 et me lance donc dans les premiers chapitres du livre.
Lors du premier exercice, un exemple est donné sur l'utilisation de la commande "Loadpicture" dans un objet image qui est lancé depuis un bouton de commande (de type "click"). Malgré avoir suivi scrupuleusement les instructions, je ne parviens pas à faire fonctionner cette commande. Le message d'erreur est le suivant: "Object doesn't support this property or method". Ci -joint ma ligne de commande:

Private Sub cmdHappy_Click()

imgHappy = LoadPicture("C:\Program Files\MSOffice\Clipart\Bullets\Green Ball.gif")

End Sub

Cela est-il dû au fait que cette commande n'existe pas sous VBA-Excel 97 ou alors y-at-il une erreur de syntaxe ?

Merci pour votre aide,
Micka
 
@

@+Thierry

Guest
Bonsoir Micka, le Forum

Bien que VB et VBA soient des cousins proches au niveau language il existe tout de même de grosses différences, dès lors je ne peux te conseiller que de trouver un bouquin sur VBA (Visual Basic pour Application).

Ensuite Excel 97 a fait des miracles en son temps, mais nous en sommes maintenant à la troisième version depuis. Donc attends toi aussi à des difficultés d'adaptation dans pas mal d'exemples que tu trouveras ici ou là.

Sinon pour LoadPicture, je n'ai aucune idée si cette commande passe sous XL97, mais il faut aussi que ton Objet Image soit un Control ActiveX, ce que tu ne précises pas.

Dommage que Vériland ne soit pas par là en ce moment, c'est lui le Grand Maître des Images sous Excel (et dans le Forum aussi)

Enfin, essaie cette procédure en ayant pris soin d'avoir une image placée dans le même répertoire que le classeur (ThisWorkbook.Path) ou bien indique le Path à la place, et bien sûr tu initialise la Variable "NomFichier" par le nom de ton image.

Pour éviter de se tromper de type de frame d'image, la macro suivante la fabrique à la volée une Frame Image de Type ActiveX de la Barre d'Outils Contrôles.

Dans le Private Module de La Feuille en Question

Private Sub CommandButton1_Click()
Dim Image As OLEObject
Dim NomFichier As String

NomFichier = "MyPic.Jpg" '<<< à modifier ou à renvoyer la valeur d'une cellule

With Me.Range("A1")
Set Image = OLEObjects.Add(ClassType:="Forms.Image.1", _
Left:=.Left, Top:=.Top, Height:=1)
End With
With Image
With .Object
.AutoSize = True
.Picture = LoadPicture(ThisWorkbook.Path & "\" & NomFichier)
End With
End With
Set Image = Nothing
End Sub

Tout ceci est bien plus simple si on parle de UserForm plutot que d'image sur une feuille de calcul, dans ce cas, une fois un cadre dessiné dans le UserForm, il suffit de faire par exemple ceci :

Private Sub UserForm_Initialize()
With Me.Image1
.Picture = LoadPicture(ThisWorkbook.Path & "\enjoy coke.jpg")
.AutoSize = True
End With
End Sub

En espérant ne pas t'embrouiller encore plus ;-) Je souhaite une bonne fin d'année à tout le monde.

Bien à Vous
@+Thierry
 

Statistiques des forums

Discussions
312 502
Messages
2 089 047
Membres
104 011
dernier inscrit
dfr