rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Insertion automatique d'images sous excel

Posté par luseve, le dimanche 16 septembre 2007 à 14:14:26
bonjour a tous

Sous excel 2003, je cherche à inserer des photos dans des cellules de la maniere suivante :

je dispose en B1, d'une adresse url du type http:/monsite.fr/maphoto.jpg
je souhaiterai de maniere automatique que la photo s'affiche en A1

et ainsi de suite, d'autres liens en B2,B3, .... Bn , automatiquement s'affichent en A2,A3, ... An

comment faire ? une macro ? j'y connais pas grand chose, si quelqu'un pourrait m'aiguiller ...
Configuration: Windows Vista
Internet Explorer 7.0
Répondre à luseve  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
popie1976, le jeudi 20 septembre 2007 à 22:10:59
Bonsoir,

Désolée pour cette réponse, mais je crains que ce que tu souhaites ne soit pas possible.

Déjà qu'en faisait un simple copier coller de par exemple word, excel ne le mets pas sur la cellule spécifiée, alors là...

Bon courage !
Répondre à popie1976

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
luseve, le vendredi 21 septembre 2007 à 06:53:16
Bonjour, je pense que c'est possible avec notamment la fonction activeSheet.Pictures.Insert (chemin du fichier)
ce que je n'arrive pas a faire : c'est indiqué dans chemin du fichier, que le chemin est indiqué dans la cellule B1.

autre probleme quand on insere plusieus activesheet.pictures.insert, les images se superposent sur une meme cellule.

Je rapelle le but de la maneouvre : B1 donne le lien url d une image, en A1 s'affiche l image. et ainsi de suite.

J'ai cherche sur pas mal de forums, mais personne ne semble savoir repondre. Je vais encore chercher ...

Merci à popie1976 pour ses encouragements ....
Répondre à luseve

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le vendredi 21 septembre 2007 à 08:13:02
Bonjour,


Definis déjà une même hauteur pour toutes les lignes ( ici 75)
en B3 le chemin du fichier "C:\Documents and Settings\All Users\Documents\Mes images\Échantillons d'images\Collines.jpg"
(je n'ai pas testé avec un URL)


Sub test()
fich = [B3].Value 'recup nom fichier
ligne = [B3].Row 'en quelle ligne ?
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
ligne = 3
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With
End Sub

si les hauteurs de ligne et largeur de colonne ne sont pas fixes tu peux recuperer leur valeurs pour calculer .top et .left mais c'est plus lourd à gérer

J'espère t'avoir guidé là il fallait
eric
Répondre à eriiic

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
luseve, le vendredi 21 septembre 2007 à 13:46:03
Merci eriiic, je progresse ... cela correspond a ce que je veux faire, mais peut on automatiser tout ca ?

voila ce que j'ai ecrit pour voir s'afficher le resultat de 3 liens : (ci dessous) - on peut certainement eviter de devoir copier coller et manuellement de modifier le champs [B2] ... [B3] .... est ce possible de realiser une boucle ? n liens correspond à n affichages

au fait, cela marche avec une url !!! grand merci !!!


Sub test()
fich = [B1].Value 'recup nom fichier
ligne = [B1].Row 'en quelle ligne ?
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
ligne = 1
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With

fich = [B2].Value 'recup nom fichier
ligne = [B2].Row 'en quelle ligne ?
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
ligne = 2
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With

fich = [B3].Value 'recup nom fichier
ligne = [B3].Row 'en quelle ligne ?
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
ligne = 3
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With

End Sub
Répondre à luseve

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le vendredi 21 septembre 2007 à 16:54:41
Ah ben oui, c'était juste en exemple pour montrer comment placer une image où on veut mais il ne faut pas le copier 823 fois.
(d'ailleurs je viens de voir que ' ligne = 1' est superflu car ensuite j'avais ajouté la récupération du numéro de ligne à partir des references d'une cellule avec 'ligne = [B1].Row ')

tu pourrais faire qcq chose comme ça :

sub machin()
for each c in selection
fich = c.offset(0,1).value
ligne = c.row
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With
next c
end sub

pour l'utiliser tu selectionnes en colonne A toutes les cellules où tu veux mettre l'image dont l'adresse est en colonne B puis tu appelles la macro.
Bon, pas sûr que tout marche car là je ne peux tester
eric
Répondre à eriiic

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
luseve, le samedi 22 septembre 2007 à 02:31:53
Merci beaucoup !!!
cela fonctionne à merveilles ...

je n'ose pas poussez le bouchon ... mais n'y a t il pas un moyen d'ajuster au mieux les cellules. car au bout d'une 15aine de photos, bien qu'elles soit proporionnées, il y a un decalage du certainement à des approximations ...

en tout cas Eriiic , chapeau bas ... merci encore ...
Répondre à luseve

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le samedi 22 septembre 2007 à 11:26:49
Bonjour luseve,

peux-tu m'expliquer ce que tu appelles ajuster et comment est ce décalage...
je viens de tester et je n'ai pas ce décalage, sans doute parce que j'utilise tjs la même et encore je ne me l'explique pas
si tu pouvais mettre ton fichier ici via www.cijoint.com ça serait mieux
eric

PS: si tu le désires on peut aussi les centrer horizontalement et regler automatiquement la largeur de la colonne A en fonction de la plus grande ou d'autres trucs si tu as des idées.
eric
Répondre à eriiic

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le samedi 22 septembre 2007 à 15:02:22
une amélioration qui résoudra sans doute ton pb:
remplace .Top = 75 * (ligne - 1) par c.top

si c'est ok tes lignes pourront avoir n'importe quelle hauteur mais il faudra quand même que leur hauteur ne change plus après ajout de photos. Il faudrait une autre petite macro pour adapter leur position sur cet evenement
eric
Répondre à eriiic

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siwomyel, le mercredi 7 novembre 2007 à 16:50:07
bonjour!

je souhaiterais inserer des images dans une colonne (par exple une image en C1,une autre en C2, ..., une autre en Cn)
puis-utiliser la formule preconisee, si oui ou et comment l'inserer?

Merci davance

SiwomYel
Répondre à siwomyel

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
luseve, le mercredi 7 novembre 2007 à 17:12:25
Bonjour,
il faut creer une macro
et taper ceci :

sub machin()
for each c in selection
fich = c.offset(0,1).value
ligne = c.row
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 72 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 0 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = 75 * (ligne - 1) 'et positionner verticalement
End With
next c
end sub
merci à eriic, chez moi cela fonctionne !

donner en B1 le chemin ou se trouve la photo , ainsi de suite (...) Bn, puis selectionner B1 à Bn, lancer la macro, les photos s'affichent en A1 (...) An, pour afficher le resultat en C1 (...) Cn il faut modifier .left= la valeur souhaitée correspondant à la position du debut de la colonne C.

C'est tout !
Répondre à luseve

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 7 novembre 2007 à 17:45:47
Bonjour tout le monde,

Faites quand même la modif que j'avais préconisé en 8
cad. remplacer .Top = 75 * (ligne - 1) par c.top
(juste avant le end with)

Comme ça on se cale vraiment sur la cellule même si la hauteur des lignes précédente a été modifiée.

eric
Répondre à eriiic

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siwomyel, le mercredi 7 novembre 2007 à 17:51:31
merci beaucoup, mais je n'ai jamais creer de macros avant, dc comment ca marche.

concretement, dans le menu Macros, j'ai ouvert Visual basic editor (par hasard) ensuite j'ai creerun nouveau fichier, mais je pense qu'il y a des phrases a changer ou a supprimer car je n'y arrive tjrs pas en recopiant simplement la reponse ke tu m'a donnee.

Donc comment on fait concretement, que dois je ouvrir, recopier supprimer changer...

Desolee pr toutes ces questions mais quand on debute c pas evident!

Encore merci pr vos reponses!
Répondre à siwomyel

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le mercredi 7 novembre 2007 à 23:16:23
Bonsoir,

Tu fais un clic-droit sur le nom de l'onglet de ta feuille et tu choisis 'Visualiser le code'
Tu colles:

Sub AffImage()
For Each c In Selection
Dim c As Range
fich = c.Offset(0, 1).Value
ligne = c.Row
ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 73 'hauteur de l'image = hauteur des lignes - 2
.Left = 1 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
.Top = c.Top + 1 'et positionner verticalement
End With
Next c
End Sub

dans la fenetre de droite.
Tu retournes sur ta feuille, tu saisis le lien d'une image en B1 et tu mets la hauteur de ligne à 75.
Tu sélectionne A1 (destination de l'image), ensuite Alt+F8, tu sélectionnes Feuil1.AffImage et executer.
Ca devrait s'afficher.
Quand j'aurai un peu de temps je reprendrai la macro pour la rendre parametrable plus facilement dans le choix des colonnes.
Actuellement il faut jouer sur le 1 de fich = c.Offset(0, 1).Value

Bon courage
eric
Répondre à eriiic

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 8 novembre 2007 à 10:28:15
Si le lien est en colonne A, pour avoir les images en colonne B remplacer fich = c.Offset(0, 1).Value par
fich = c.Offset(0, -1).Value
Sélectionner toutes les cellules devant recevoir une image en colonne B et lancer la macro
pas testé, me dire si pb
eric
Répondre à eriiic

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siwomyel, le jeudi 15 novembre 2007 à 12:41:09
Bonjour,

Eric G essayer en vain je n'y arrive pas
je bloque quand il faut ajouter le lien de l'image en A1. Pourquoi ajouter un lien d'image ici alors que je veux voir apparettre le nom de mon produit en A1 avec sa foto en B1. pour cette partie je fais clic droit ajouter un hyperlien est ce que c bien comme ca qu'il faut faire?
ensuite quand je sélectionne A1 (destination de l'image), ensuite Alt+F8, puis sélection Feuil1.AffImage et executer.
Ca ne s'afficher pas.

px tu s'il te plait me reeexpliquer desolee si je te derange.

SiWoMyel
Répondre à siwomyel

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
luseve, le jeudi 15 novembre 2007 à 14:20:49
Bonjour,
il faut tout de meme indiquer à Excel ou se trouvent vos images ! c'est pour cela que vous devez creer une colonne avec vos liens
vers ces photos (quelles soient sur votre disque dur ou sur internet (peut importe la colonne que vous choississez, pensez à modifier l'offset en fonction de la colonne choisie)
en colonne A mettez vos Titre , en B vos liens, en C les photos s'affichent (pensez à masquer le colonne B, afin de ne pas visualiser la colonne b)
Répondre à luseve

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 15 novembre 2007 à 19:23:08
Bonsoir,

Je pense que luseve t'a répondu.
Je vais modifier un peu la macro pour lui donner un peu de souplesse mais ça sera un peu plus tard.
Sinon dans le code précédent je viens de voir qu'il faut inverser ces 2 lignes:
For Each c In Selection
Dim c As Range

donc mettre
Dim c As Range
For Each c In Selection

C'est peut-être ça qui te genait
eric
Répondre à eriiic

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Divu, le jeudi 3 avril 2008 à 18:05:57
Bonjour

J ai vu ton code que j'utilise pour visualiser des images mais je rencontre un porbleme lorsque la cellule est vide
Comment lui indiquer de ne pas tenir compte des cellules vides ou de passer a la ligne suivante

merci de ton aide
Répondre à Divu

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 3 avril 2008 à 18:48:05
Bonsoir,

normalement la macro en tient compte avec
 If fich <> "" Then

Il faudrait que tu sois plus précis, et éventuellement déposer ton fichier sur cijoint.fr et coller le lien ici
eric
Répondre à eriiic

25


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Divu, le vendredi 4 avril 2008 à 11:22:42
Bonjour

Voila le lien http://www.cijoint.fr/cjlink.php?file=cj200804/cije8DiQBd.xl­s.

Comme tu peux le constater certaines lignes sont vides ( pas de photos pas de lchemin) et je pense que c est a ce niveau que ca bloque

merci de ton aide
Répondre à Divu

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le jeudi 15 novembre 2007 à 21:49:21
Re,

Bon, j'ai refait un peu la macro.
Maintenant sélectionner les cellules où sont les liens pointant sur une image.
En répondant à la 1ère boite de dialogue par 'oui', 'non' ou 'annuler' l'image s'affichera dans la colonne à gauche, ou dans celle du lien ou dans celle de droite (en fait bouton de gauche affiche à gauche etc).
Puis la 2nde boite de dialogue permet de choisir la hauteur des ligne (donc des image). La hauteur par défaut (75) peut être changé en début de code en changeant la valeur de la constante hDefaut.

Sub AffImage2()
    ' Sélectionner les cellules contenant un lien vers une image
    ' AffImage les affichera sur le lien ou dans la colonne de gauche ou de droite
    Const hDefaut = 75
    Dim msg As String, r As Long, h As Long
    Dim c As Range
    msg = "Oui : Afficher les images à gauche des liens sélectionnés" & vbCrLf
    msg = msg & "Non : Afficher les images sur les liens sélectionnés" & vbCrLf
    msg = msg & "Annuler : Afficher les images à droite des liens sélectionnés"
    r = MsgBox(msg, vbYesNoCancel, "Cellules où mettre les images")
    If r = vbYes Then
        r = -1
    ElseIf r = vbNo Then
        r = 0
    Else
        r = 1
    End If
    h = InputBox("Hauteur des lignes :", "Choix hauteur", hDefaut)
    For Each c In Selection
        'c.ColumnWidth = 20
        fich = c.Value
        If fich <> "" Then
            c.RowHeight = h 'fixer la hauteur de ligne
            ActiveSheet.Pictures.Insert(fich).Select 'ouverture image
            With Selection.ShapeRange
                .LockAspectRatio = msoTrue 'conserver les proportion
                .Height = h - 4 'hauteur de l'image = hauteur des lignes - 4
                .Left = c.Offset(0, r).Left + 2 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes
                .Top = c.Top + 2 'et positionner verticalement
            End With
        End If
    Next c
End Sub


eric
Répondre à eriiic

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
siwomyel, le lundi 19 novembre 2007 à 11:19:40
Bonjour,

hO!!!!!!!!!

MERCI BCP!!!!!!!!!!!!!! CA marche!!!!!!!!!!!!!!!!!!!!!

Cependant j'aurai une derniere petite requete. j'ai 900 image a ajouter, y a t-il une formule ou une technique pour ajouter mes liens automatiquement? c'est a dire sans avoir a cliquer droit, ajouter un hyperlink a chaque fois s'il te plait?

Merci d'avance!

SiWomYel
Répondre à siwomyel

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
eriiic, le lundi 19 novembre 2007 à 20:23:14
Bonsoir,

Content que tu aies pu mieux le tester.
Pour ta dernière demande, si ce sont des fichiers sur disque dur tu peux, dans une fenetre DOS, rediriger un DIR dans un fichier texte pour avoir les noms de fichiers (dans le répertoire concerné tu saisis DIR /D >> liste.txt), ou bien il doit y avoir des logiciel sous windows qui te le font.
Tu récupères cette liste dans excel, tu la remets un peu en forme pour avoir tes noms en colonne B par exemple. Tu saisis le chemin en A1 C:\tmp\ par exemple , et tu refabriques tout tes liens avec en C1: =$A$1 & B1 que tu étends vers le bas.
Même si ce ne sont pas des liens hypertextes ce n'est pas un problème, le tout est que l'adresse soit complète pour que ça fonctionne.
Pour des fichiers sur le net il y a peu de chance que tu puisses acceder au répertoire pour pouvoir extraire tous les noms de fichiers sinon le principe serait le même...

Bon courage
eric
Répondre à eriiic

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Connyc, le jeudi 17 janvier 2008 à 20:49:37
Petite question:

Je n'y connais pas grand chose en excel et j'apprend petit a petit en ce moment.

La question est la suivante:

Si je crée un colonne avec toutes les liens vers les photos et que je fais apparaître ces photos dans une celle spécifique de excel (exemple:
Lien en B1 et photo apparaît en A1) comme mentionné dans l'exemple de la macro.

Si par la suite dans mon fichier excelle je prend la cellule D1 et que j'y entre =B1

La photo ce répliquera-t-elle alors dans la cellule D1 ?

Je vais essayer de le faire mais si quelqu'un sait que de cette facon sa ne marchera pas mais qu'il y a une autre facon de le faire laisser le moi savoir !
Répondre à Connyc
Logiciels pertinents trouvés dans les téléchargements
Télécharger CartaGoGo 3.0.6CartaGoGo - Vous aimez les cartes de visites et les étiquettes ? Vous trouvez que les logiciels du commerce sont trop lourds à gérer ?...Catégorie: Emploi/CV
Licence: Freeware/gratuit
Télécharger PDFLab 2.0.3r2PDFLab - PDFLab vous permet de diviser et assembler des documents PDF ainsi que d'y insérer des images, des pages blanches. Vous...Catégorie: PDF
Licence: Freeware/gratuit
Télécharger WinUAE 1.4.6WinUAE - WinUAE est un émulateur Amiga pour Windows. Cet émulateur permet de faire revivre cette formidable machine, qui...Catégorie: Emulation
Licence: Freeware/gratuit
Télécharger ImageWell 3.5.3ImageWell - ImageWell n'est pas à proprement parler un logiciel de Retouche photo. Il permet plutôt de préparer des images pour le...Catégorie: Retouche photo
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Insertion automatique d'images sous excel »