EXCEL 2007 - INSERER UNE IMAGE

Résolu/Fermé
Anna - 19 juin 2009 à 12:14
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 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
A voir également:

33 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 13:06
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)
0
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
0
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
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 13:37
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)
0

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

Posez votre question
Bon ben en fait cela a marché une fois... bizarre...

maintenant erreur : Select method range class failed
0
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é???
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 13:42
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)
0
Sheets("AENA").Range("b21").Select

c'est la que ca coince...
0
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!
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 14:09
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)
0
ça marche! c'était vraiment tou bête... je m'en souviendrai!
merci mike.

Reste que l'image ne se colle pas en B21...
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 14:16
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)
0
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
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 14:32
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é

https://www.cjoint.com/

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
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...
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 14:54
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)
0
Merci mike mais je ne sais pas utiliser ce code, je ne le comprends pas...

Comment va t'il chercher mon image?
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 16:33
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)
0
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
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 juin 2009 à 17:55
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)
0