Macro VBA - Ajouter automatiquement une photo depuis lien Hyper

Fermé
William3000 - Modifié par pijaku le 3/10/2014 à 08:13
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 3 oct. 2014 à 23:58
Bonjour à tous,

Je suis encore assez novice en VBA, l'envie d'apprendre mais pas forcément le temps qui va avec !

Je vous explique mon petit problème : En gros j'ai des liens hypertexte situés dans une plage de cellules, et j'aimerai trouver un code VBA qui me permettrait d'automatiquement ouvrir la photo depuis le lien qui se situe puis de la faire apparaître dans la cellule en respectant taille et forme de la ligne.

En trainant sur le web j'ai trouvé cette première macro :
Sub insere_image()
Dim ficimg As Variant
    ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image")  ' choix nom du fichier
    ActiveSheet.Pictures.Insert(ficimg).Select ' insertion
    With Selection.ShapeRange
        .LockAspectRatio = False        ' proportions d'origine lorsque vous la redimensionnez
        .Top = ActiveCell.Top           ' haut de la cellule
        .Left = ActiveCell.Left         ' gauche de la cellule
        .Height = ActiveCell.RowHeight  ' hauteur de la cellule
        .Width = ActiveCell.Width ' largeur de la cellule
    End With
    With Selection
        .PrintObject = True             ' l'objet est imprimé en même temps que le document
        .Placement = xlMoveAndSize      ' manière dont l'objet est lié aux cellules
    End With
End Sub


qui me permet en effet d'insérer une photo qui respecte la taille et forme de la ligne/colonne où je suis situé, mais ce code demande à chaque fois le chemin de la photo.

Au départ j'étais parti sur la volonté d'insérer les photos en Commentaire via les liens hypertextes, j'utilisais ce code qui lui prenait bien toute la plage de liens et me permettait d'effectuer l'ensemble des changements en une seule éxécution :

Sub insert_image()
Dim i
For i = 2 to 934

With Cells(i,60)
.AddComment.Visible = True
.Comment.Shape.Fill.UserPicture Application.ActiveSheet.Cells(i,60).Value
.Comment.Shape.Height = 100
.Comment.Shape.Width = 100

End With
Next i
End Sub


J'aimerai beaucoup pouvoir combiner les deux, mais j'ai toujours des erreurs ou autres problèmes !

Si quelqu'un a une idée ou tout conseil, je suis preneur !

Merci d'avance pour votre aide à tous

Très Bonne Soirée
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 3/10/2014 à 23:44
Bonsoir,

un discussion sur le thème utilisation de lien hypertexte dans ccm en mars 2012

le classeur
https://www.cjoint.com/?3JdxQqElUTM

dont le code
Option Explicit
'-----
Sub mettre_imageweb()
'Michel_M pour CCM
Dim Derlig As Integer, lien As String, cptr As Integer
Dim image As Picture, cellule As Range
'initialisations
Derlig = Columns("D").Find("*", , , , , xlPrevious).Row
Application.ScreenUpdating = False
'parcours la liste
For cptr = 2 To Derlig
' mémorise url
lien = "http://www.tubconcept.fr/visuels/" & Cells(cptr, 4)
Set cellule = Cells(cptr, 4)
Set image = ActiveSheet.Pictures.Insert(lien)
'insere l'mage web dans la liste du matos
With image.ShapeRange
.Top = cellule.Top + 1
.Left = cellule.Left + 1
.Height = cellule.Height - 10
.Width = cellule.Width - 2
.LockAspectRatio = msoFalse 'garde les proportions de l'original
End With
Next
End Sub

mais dans ton cas, je me demande si la solution par lien hypetexte est la +efficace...Tout dépend où se trouvent tes images...

Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
3 oct. 2014 à 23:58
Un autre exemple sans lien hypertexte, photos regroupées dans un ss-dossier

https://www.cjoint.com/?DJeabihEa8r
0