Ajouter un lien hypertexte à chaque photo
Bonjour à tous,
Dans un tableur Excel, j'ai une feuille dans laquelle j'ai une colonne qui contient un chemin d'accès vers une image sur le disque dur (par exemple C:\Mes documents\Mes images\image.jpg) dans chaque cellule.
Mon but est d'afficher chaque image au niveau de la cellule dans laquelle se trouve le lien, puis d'ajouter un lien hypertexte à cette image pour pouvoir l'afficher quand on clique dessus (par exemple pour la cellule A1 contenant la valeur C:\Mes documents\Mes images\image.jpg j'insère image.jpg en A1 et je lui ajoute un lien hypertexte menant vers C:\Mes documents\Mes images\image.jpg).
J'ai déjà trouvé sur internet une macro qui marche très bien pour afficher les images.
Sub SelectColAffImage()
Range("M:M").Select
Call AffImage
End Sub
Sub AffImage()
' Sélectionner les cellules contenant un lien vers une image et appeler la macro
' AffImage les affichera sur le lien ou dans la colonne de gauche ou de droite
Const h = 150 ' hauteur des images
Const imgDefaut = "" ' saisir chemin complet et le nom de l'image par défaut à afficher si erreur
Dim msg As String, r As Long, lmax As Long
Dim c As Range, numfich As Integer
Dim fich
r = 0
For Each c In Selection
'c.ColumnWidth = 10
fich = c.Value
' test fichier
If fich <> "" Then
If Left(fich, 7) = "http://" Then
' on conserve le lien sur le net
Else
numfich = FreeFile()
On Error GoTo errfich
Open fich For Input As #numfich
Close #numfich
On Error GoTo 0
End If
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 proportions
.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)
.Top = c.Top + 2 'et positionner verticalement
End With
End If
Next c
Exit Sub
errfich:
fich = imgDefaut
Resume Next
End Sub
Je l'ai légèrement modifiée pour l'adapter à mon besoin mais je ne sais pas coder en VBA, j'ai simplement retiré quelques lignes en essayant de comprendre la logique donc il reste peut-être des choses inutiles et elle est peut-être à améliorer.
Il me manque cependant la partie qui ajoute un lien hypertexte à l'image insérée à partir du chemin d'accès dans la cellule.
J'ai essayé de manière empirique en m'informant sur internet (je suis par exemple tombé sur la méthode Hyperlinks.Add) mais sans succès à cause de ma non-connaissance du VBA, et c'est pour ça que je sollicite votre aide !
Si quelqu'un pouvait m'écrire ce petit bout de code qui me manque ce serait super !
Merci d'avance.