Posez votre question Signaler

EXCEL 2007 - INSERER UNE IMAGE [Résolu]

Anna - Dernière réponse le 16 janv. 2011 à 18:52
Bonjour,
Sous EXCEL 2007, je cherche desesperement à insérer une image par VBA dans une feuille et cellule en particulier. j'ai mis un bouton sur la feuil1 et assigner la macro suivante:
j'ai essayé cela:
Sub TestInsertPicture()
InsertPictureInRange "D:\Documents and Settings\anna\Desktop\OW", _
Range("B21"), True, True
End Sub
mais cela ne marche pas...
merci pour votre aide
Anna
Lire la suite 

EXCEL 2007 - INSERER UNE IMAGE »

38 réponses
Réponse
+0
moins plus
Salut,

Expliques ce que tu veux exactement faire, parce que pour mettre un photo dans une cellule, tu n'as pas besoin de VBA, et si tu veux afficher une image en fonction du contenu d'une cellule non plus

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
bonjour mike, merci de ta réponse. Einstein avait raison, par conséquent je vais expliquer un peu plus mon souci?.

J'ai mis un bouton dans ma feuil1 qui devrait faire cela:

- aller chercher l'image jpg dans le même repertoir que le fichier excel présent
- et la coller dans la cellule B21 de toutes les autres feuilles de mon classeur.

Pour le moment j'ai trouvé cela sur le net (auteur de la macro: JBOIGONTIER)

Sub ImportImages()
repertoire = ThisWorkbook.Path & "\"
nf = Dir(repertoire & "*.jpg") ' premier fichier
Workbook.Sheets("AENA").cell("b21").Select
Do While nf <> ""
Set monimage = ActiveSheet.Pictures.Insert(nf)
monimage.Name = Left(nf, Len(nf) - 4) ' Donne un nom à l'image
ActiveCell.EntireRow.RowHeight = monimage.Height + 0
nf = Dir ' suivant
ActiveCell.Offset(1, 0).Select
Loop
End Sub

j'ai modifier la ligne en gras pour essayer de selectionner une feuille en particulier et une cellule. Mais cela ne fonctionne pas.

Merci pour votre aide

Anna
Ajouter un commentaire
Réponse
+0
moins plus
Bon j'ai résolou le souci, en partie:

Sub ImportImages()
repertoire = ThisWorkbook.Path & "\"
nf = Dir(repertoire & "*.jpg") ' premier fichier
Sheets("AENA").Range("b21:C21").Select
Do While nf <> ""
Set monimage = ActiveSheet.Pictures.Insert(nf)
monimage.Name = Left(nf, Len(nf) - 4) ' Donne un nom à l'image
ActiveCell.EntireRow.RowHeight = monimage.Height + 0
nf = Dir ' suivant
ActiveCell.Offset(1, 0).Select
Loop
End Sub

le souci maintenant c'est que l'image ne se place pas en B21:C21 !!!
vous savez?

Anna
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Pourquoi as tu mis ("b21:C21") si tu souhaites la coller en B21 ("B21")

Sheets("AENA").Range("B21") .Select


A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
Bon ben en fait cela a marché une fois... bizarre...

maintenant erreur : Select method range class failed
Ajouter un commentaire
Réponse
+0
moins plus
merci pour l'info mike...

Mais je ne comprends pas pourquoi cela a marché une fois et la fois d'après j'ai une erreur (post ci-dessus) alors qu le code n'a pas changé???
Ajouter un commentaire
Réponse
+0
moins plus
Tu dois avoir une erreur dans une ligne, ou ligne pas à sa place dans le code, exécutes ton code pas à pas détaillé pour trouver la ligne qui bloque

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
Sheets("AENA").Range("b21").Select

c'est la que ca coince...
Ajouter un commentaire
Réponse
+0
moins plus
en fait le code marche qd je suis sur la feuille "AENA" mais ne marche pas quand je suis sur la feuil1 (la ou il y a mon bouton pour activer la macro...

a l'aide je pete un cable!
Ajouter un commentaire
Réponse
+0
moins plus
Décompose cette ligne

Sheets("AENA").Range("b21").Select


comme cela

Sheets("AENA").Select
Range("b21").Select

Tiens moi au courant

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
ça marche! c'était vraiment tou bête... je m'en souviendrai!
merci mike.

Reste que l'image ne se colle pas en B21...
Ajouter un commentaire
Réponse
+0
moins plus
Alors mets ce code à la place des deux lignes que je t'ai donné, c'est plus propre

Application.Goto Sheets("AENA").Range("B21")


Mets ton statut en résolu, ou demande à la modération de le faire pour toi clic sur le triangle jaune en haut de ton post

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
Merci mike mais mon szouci n'est que partiellement resolu!

l'image se colle bien dans la feuille AENA, mais pas en B21 ! (j'ai beau changer la range dans la macro ca ne change rien de toute facon...)

Des idées?

Anna
Ajouter un commentaire
Réponse
+0
moins plus
si ton fichier n'est pas confidentiel, mets une copie ainsi qu'une image dans un dossier, clic dessus, envoyer vers/dossier compressé et joint le lien pour le récupéter dans un post avec ce lien ou dans un message privé, clic sur mon pseudo et message privé

http://www.cjoint.com/

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
Merci mike pour la proposition c'est très gentil mais le fichier est confidentiel et cela prendrait bcp de temps pour le rendre anonyme...
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Une autre approche, testes ce code, lorsque tu es dans le visual, même ta feuille nommé AENA garde sa denomination Excel et porte le Nom par exemple Feuil3(AENA), dans le code cidessous change Feuil2 par Feuilxxx

Sub test()
Dim Image As Variant
Dim L As Single, T As Single, W As Single, H As Single
L = Feuil2.Range("B21").Left
T = Feuil2.Range("B21").Top
W = Feuil2.Range("B21").Width
H = Feuil2.Range("B21").Height
Image = Application.GetOpenFilename
If Image <> False Then
Feuil2.Shapes.AddPicture Image, True, True, L, T, W, H
End If
End Sub


A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
Merci mike mais je ne sais pas utiliser ce code, je ne le comprends pas...

Comment va t'il chercher mon image?
Ajouter un commentaire
Réponse
+0
moins plus
Ce code sélectionne ta cellule et ouvre la boite de dialogue Fichier Ouvrir, à toi de sélectionner la photo.

Il est possible d'ajouter la sélection de la cellule cible dans une cellule par exemple la A1 dans laquelle on saisira B21 (ce qui ne rend pad le code macro figé sur la cellule B21 et donc en ressaisissant une autre référence en A1 le code s'exécutera sur la nouvelle référence etc ...) , il est également possible de paramétrer la taille de la ligne /colonne soit cellule de réception de la photo

Dans la soirée je regarde d'apporter l'équivalent afin d'afficher la photo qui se trouve dans le même répertoire

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Réponse
+0
moins plus
merci mike pour l'interet que tu porte à mo souci.

j'ai changé un peu mon code:

Sub ImportImages()

repertoire = ThisWorkbook.Path & "\"
nf = Dir(repertoire & "*.jpg") ' premier fichier
Sheets("AENA").Select
Range("b21").Select
Set monimage = ActiveSheet.Pictures.Insert(nf)
End Sub

voila... je suis pas experte comme tu peux le voir... mais j'essaie de bidouiller :-)

Cette macro fonctionne bien, mais l'image ne se colle pas ou je voudrais (en B21, ou au dessus!, pas besoin de resizer ou de la mettre ailleurs...)

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Re,


J'ai cette ligne de ton code qui plante, comme je n'ai pas le code initial pourrait tu me dire
l'image que tu souhaites coller en B21 sur la feuille AENA, est elle dans le même répertoire, et à quoi correspond Pictures dans la ligne de ton code (une page de ton dossier nommé pictures !

et monimage es ce une plage nommée, j'ai l'inpression qu'il manque une variable, ou mal définie

Set monimage = ActiveSheet.Pictures.Insert(nf)

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
Ajouter un commentaire
Ce document intitulé « EXCEL 2007 - INSERER UNE IMAGE » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
EXCEL 2007 - INSERER UNE IMAGE - page 2