Insertion automatique d'images sous excel
Résolu/Fermé
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 ...
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 ...
A voir également:
- Insérer image automatiquement excel
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image de manchots sur une image de plage. retrouvez l'image originale de la plage. que cachent les manchots ? ✓ - Forum Windows
- Insérer liste déroulante excel - Guide
- Insérer signature word - Guide
- Formule excel - Guide
- Image iso - Guide
42 réponses
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)
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)
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 nov. 2007 à 21:49
15 nov. 2007 à 21:49
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.
eric
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
Kirilov
Messages postés
104
Date d'inscription
dimanche 15 mars 2009
Statut
Membre
Dernière intervention
26 janvier 2022
1
20 août 2009 à 17:07
20 août 2009 à 17:07
Bonjour,
Pour mon boulot je souhaite utiliser votre petit programme... Mais je n'y arrive pas ! Pour une raison que je n'arrive pas à résoudre, une fois lancé le programme affiche une seule et même image. Si vous pouvez m'expliquer...
Merci beaucoup
Kirilov
Pour mon boulot je souhaite utiliser votre petit programme... Mais je n'y arrive pas ! Pour une raison que je n'arrive pas à résoudre, une fois lancé le programme affiche une seule et même image. Si vous pouvez m'expliquer...
Merci beaucoup
Kirilov
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
>
Kirilov
Messages postés
104
Date d'inscription
dimanche 15 mars 2009
Statut
Membre
Dernière intervention
26 janvier 2022
20 août 2009 à 19:26
20 août 2009 à 19:26
Bonjour,
Tu n'as peut -être pas eu le courage de lire tout le fil pour savoir le principe...
Tes liens vers des images sont dans une colonne, il faut sélectionner toutes ces cellules avant de lancer la macro. Là tu choisis si tu les veux à gauche, sur, ou à droite de ces cellules.
Il faut savoir que sur excel 2007 un bug fait que ça ne fonctionne que pour des images sur le disque dur (et pas pour une image sur http://....)
Et je te conseille de prendre la dernière version au post 41 vers la fin de cette discussion
Si tu penses tout faire correctement précise les conditions
eric
Tu n'as peut -être pas eu le courage de lire tout le fil pour savoir le principe...
Tes liens vers des images sont dans une colonne, il faut sélectionner toutes ces cellules avant de lancer la macro. Là tu choisis si tu les veux à gauche, sur, ou à droite de ces cellules.
Il faut savoir que sur excel 2007 un bug fait que ça ne fonctionne que pour des images sur le disque dur (et pas pour une image sur http://....)
Et je te conseille de prendre la dernière version au post 41 vers la fin de cette discussion
Si tu penses tout faire correctement précise les conditions
eric
Kirilov
Messages postés
104
Date d'inscription
dimanche 15 mars 2009
Statut
Membre
Dernière intervention
26 janvier 2022
1
>
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
21 août 2009 à 14:05
21 août 2009 à 14:05
Bonjour,
J'ai repris le modèle du post 41 et modifié mes liens : j'utilisais la fonction "concaténer" qui posait apparemment problème. Désormais, ça marche. Merci de votre réponse.
Une autre question : est-il possible d'afficher les images non pas comme des objets mais "dans" la cellule de destination. Et, si oui, on pourrait alors imaginer que cette vignette soit elle-même un lien vers une version agrandie de l'image.
Cordialement,
Kirilov
J'ai repris le modèle du post 41 et modifié mes liens : j'utilisais la fonction "concaténer" qui posait apparemment problème. Désormais, ça marche. Merci de votre réponse.
Une autre question : est-il possible d'afficher les images non pas comme des objets mais "dans" la cellule de destination. Et, si oui, on pourrait alors imaginer que cette vignette soit elle-même un lien vers une version agrandie de l'image.
Cordialement,
Kirilov
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
19 mai 2008 à 21:50
19 mai 2008 à 21:50
Bonjour,
Le remercié te remercie :-)
eric
Le remercié te remercie :-)
eric
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 juin 2008 à 20:58
15 juin 2008 à 20:58
Bonsoir,
J'ai ajouté une gestion d'erreur rudimentaire pour éviter la majorité des blocages, avec la possibilité d'afficher une image par défaut si la constante imgDefaut est renseignée.
Sinon le chamin des images peut être le résultat d'une fontion.
Par exemple tes liens en colonne A, en B tu saisis :
=SI(DROITE(A1,4)<>".jpg",A1&".jpg",A1)
pour rétablir le .jpg de fin
eric
J'ai ajouté une gestion d'erreur rudimentaire pour éviter la majorité des blocages, avec la possibilité d'afficher une image par défaut si la constante imgDefaut est renseignée.
Sinon le chamin des images peut être le résultat d'une fontion.
Par exemple tes liens en colonne A, en B tu saisis :
=SI(DROITE(A1,4)<>".jpg",A1&".jpg",A1)
pour rétablir le .jpg de fin
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 Const imgDefaut = "" ' saisir chemin complet et nom image par défaut à afficher si erreur Dim msg As String, r As Long, h As Long Dim c As Range, numfich As Integer 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 ' test fichier If fich <> "" Then numfich = FreeFile() On Error GoTo errfich Open fich For Input As #numfich Close #numfich GoTo suite1 errfich: fich = imgDefaut suite1: End If ' 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
cesam.m
Messages postés
16
Date d'inscription
mercredi 5 octobre 2011
Statut
Membre
Dernière intervention
8 avril 2021
6 oct. 2011 à 15:57
6 oct. 2011 à 15:57
Bonjour,
J'ai récupéré un Code sur internet mais j'ai également le problème de message d'erreur quand la photo n'existe pas.
Peux tu me modifier ma macro pour quel passe à la ligne suivante.
merci d'avance pour ton aide
CESAM.m
Sub machin()
Dim sh As Shape
For Each sh In Worksheets("Photos ").Shapes
If sh.Type = msoPicture Then sh.Delete
Next
Application.Goto Reference:="Select1.Photo"
For Each c In Selection
fich = c.Offset(0, 2).Value
ligne = c.Row
ActiveSheet.Pictures.Insert(fich).Select 'Select1.Photo
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 60 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 40 'à 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
J'ai récupéré un Code sur internet mais j'ai également le problème de message d'erreur quand la photo n'existe pas.
Peux tu me modifier ma macro pour quel passe à la ligne suivante.
merci d'avance pour ton aide
CESAM.m
Sub machin()
Dim sh As Shape
For Each sh In Worksheets("Photos ").Shapes
If sh.Type = msoPicture Then sh.Delete
Next
Application.Goto Reference:="Select1.Photo"
For Each c In Selection
fich = c.Offset(0, 2).Value
ligne = c.Row
ActiveSheet.Pictures.Insert(fich).Select 'Select1.Photo
With Selection.ShapeRange
.LockAspectRatio = msoTrue 'conserver les proportion
.Height = 60 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée
.Left = 40 'à 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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
6 oct. 2011 à 18:10
6 oct. 2011 à 18:10
Bonjour,
En supposant que l'erreur soit bien là où je pense comme tu préfères qu'on devine :
eric
En supposant que l'erreur soit bien là où je pense comme tu préfères qu'on devine :
Sub machin() Dim sh As Shape For Each sh In Worksheets("Photos ").Shapes If sh.Type = msoPicture Then sh.Delete Next Application.Goto Reference:="Select1.Photo" For Each c In Selection fich = c.Offset(0, 2).Value ligne = c.Row On Error GoTo suite ActiveSheet.Pictures.Insert(fich).Select 'Select1.Photo With Selection.ShapeRange .LockAspectRatio = msoTrue 'conserver les proportion .Height = 60 'hauteur de l'image - un tit qcq chose pour qu'elle soient séparée .Left = 40 'à gauche colonne A (sinon tu calcules avec la largeur de colonne des colonnes .Top = c.Top + 1 'et positionner verticalement End With suite: On Error GoTo 0 Next c End Sub
eric
cesam.m
Messages postés
16
Date d'inscription
mercredi 5 octobre 2011
Statut
Membre
Dernière intervention
8 avril 2021
7 oct. 2011 à 12:40
7 oct. 2011 à 12:40
Bonjour ERIC,
merci pour ton travail,
mais cela ne fonctionne toujours pas.
Il arrive que certaines références ne correspondent à aucunes de mes photos.
Dans ce cas il y a un message d'erreur "erreur d'exécution 1004 impossible de lire la propriété insert de la classe Pictures"
Quand la référence correspond à une photo c'est OK mais sinon Il y a ce message d'erreur.
Est il possible d'éviter ce message d'erreur de mettre à la place de la photo un Blanc et de passer à la ligne suivante?
Encore merci pour tes talents.
Cesam.m
merci pour ton travail,
mais cela ne fonctionne toujours pas.
Il arrive que certaines références ne correspondent à aucunes de mes photos.
Dans ce cas il y a un message d'erreur "erreur d'exécution 1004 impossible de lire la propriété insert de la classe Pictures"
Quand la référence correspond à une photo c'est OK mais sinon Il y a ce message d'erreur.
Est il possible d'éviter ce message d'erreur de mettre à la place de la photo un Blanc et de passer à la ligne suivante?
Encore merci pour tes talents.
Cesam.m
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
Modifié par eriiic le 7/10/2011 à 13:07
Modifié par eriiic le 7/10/2011 à 13:07
Bonjour,
dépose un fichier exemple simplifié sur cijoint.fr et colle ici le lien fourni.
Et précise ta version excel, il y a des bug sur 2010 inexistants sur 2003
eric
dépose un fichier exemple simplifié sur cijoint.fr et colle ici le lien fourni.
Et précise ta version excel, il y a des bug sur 2010 inexistants sur 2003
eric
cesam.m
Messages postés
16
Date d'inscription
mercredi 5 octobre 2011
Statut
Membre
Dernière intervention
8 avril 2021
7 oct. 2011 à 13:26
7 oct. 2011 à 13:26
Voici le lien:
http://www.cijoint.fr/cjlink.php?file=cj201110/cij3oH6hyH.xls
Version : excel 2000
Cesam.m
http://www.cijoint.fr/cjlink.php?file=cj201110/cij3oH6hyH.xls
Version : excel 2000
Cesam.m
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
luseve
Messages postés
2
Date d'inscription
dimanche 16 septembre 2007
Statut
Membre
Dernière intervention
29 janvier 2014
21 sept. 2007 à 06:53
21 sept. 2007 à 06:53
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 ....
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 ....
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
21 sept. 2007 à 08:13
21 sept. 2007 à 08:13
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
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
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
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
ESCOUGER
Messages postés
31
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
17 juillet 2019
19 oct. 2011 à 13:37
19 oct. 2011 à 13:37
Bonjour,
J'ai un problème similaire sauf que l'image (ou la forme) à recopier dans la cellule active est celle à partir de laquelle est déclenchée la macro.
Comment paramétrer "ActiveSheet.Pictures.Insert.....' afin d'assigner l'image ou la forme sur laquelle je clique pour qu'elle se copie dans la cellule active?
J'ai un problème similaire sauf que l'image (ou la forme) à recopier dans la cellule active est celle à partir de laquelle est déclenchée la macro.
Comment paramétrer "ActiveSheet.Pictures.Insert.....' afin d'assigner l'image ou la forme sur laquelle je clique pour qu'elle se copie dans la cellule active?
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
21 sept. 2007 à 16:54
21 sept. 2007 à 16:54
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
(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
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 ...
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 ...
salut luceve franchement tu as exactement le même problème que moi sauf que je suis une merde en info, je sais même pas ou taper le programme que l'on t'as conseiller!!!!
S'il te plait pourrait tu m'en dir une peu plus voir me transmettre ton fichier ou un truc comme ca pour que je me débrouille par analogie
salut!!!!!!
S'il te plait pourrait tu m'en dir une peu plus voir me transmettre ton fichier ou un truc comme ca pour que je me débrouille par analogie
salut!!!!!!
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
22 sept. 2007 à 11:26
22 sept. 2007 à 11:26
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
22 sept. 2007 à 15:02
22 sept. 2007 à 15:02
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
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
siwomyel
Messages postés
2
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
7 novembre 2007
7 nov. 2007 à 16:50
7 nov. 2007 à 16:50
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
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
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 !
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 !
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
7 nov. 2007 à 17:45
7 nov. 2007 à 17:45
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
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
siwomyel
Messages postés
2
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
7 novembre 2007
7 nov. 2007 à 17:51
7 nov. 2007 à 17:51
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!
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!
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
7 nov. 2007 à 23:16
7 nov. 2007 à 23:16
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
8 nov. 2007 à 10:28
8 nov. 2007 à 10:28
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
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
siwomyel
>
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
15 nov. 2007 à 12:41
15 nov. 2007 à 12:41
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
15 nov. 2007 à 19:23
15 nov. 2007 à 19:23
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
>
Divu
3 avril 2008 à 18:48
3 avril 2008 à 18:48
Bonsoir,
normalement la macro en tient compte avec
Il faudrait que tu sois plus précis, et éventuellement déposer ton fichier sur cijoint.fr et coller le lien ici
eric
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
Divu
>
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
4 avril 2008 à 11:22
4 avril 2008 à 11:22
Bonjour
Voila le lien http://www.cijoint.fr/cjlink.php?file=cj200804/cije8DiQBd.xls.
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
Voila le lien http://www.cijoint.fr/cjlink.php?file=cj200804/cije8DiQBd.xls.
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
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
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
19 nov. 2007 à 20:23
19 nov. 2007 à 20:23
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
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
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 !
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 !