Option Explicit
Sub ListeDesDocDansDossier()
Const CelluleRépertoire = "A2"
Const CelluleFichier = "C9"
Const NomShapeImage = "ImagePourLeLien"
Call SelectionFichier(ActiveSheet.Range(CelluleRépertoire), ActiveSheet.Range(CelluleFichier), Worksheets("Feuil2").Shapes(NomShapeImage))
End Sub
Sub SelectionFichier(CelluleRépertoire As Range, CelluleFichier As Range, Image As Shape)
Dim TabFichier As Variant
Dim RépertoireCourant As String
Dim NomShapeImage As String
Dim ErrNumber As Integer
'Nom de l'image pour le lien
NomShapeImage = Image.Name
'Sauvegarde du répertoire courant
RépertoireCourant = CurDir
'Changement de répertoire
On Error Resume Next
ChDrive Left(CelluleRépertoire.Value, 2)
ChDir CelluleRépertoire.Value
ErrNumber = Err.Number
On Error GoTo 0
If ErrNumber <> 0 Then
MsgBox "Répertoire en cellule " & CelluleRépertoire.Address & " incorrect !"
GoTo FinSub
End If
'Sélection d'un fichier dans le répertoire
TabFichier = Application.GetOpenFilename(, , , , True)
If VarType(TabFichier) = vbBoolean Then
MsgBox "Aucun fichier sélectionné !"
GoTo FinSub
End If
'Supprime l'image actuelle
On Error Resume Next
ActiveSheet.Shapes(NomShapeImage).Delete
On Error GoTo 0
'Copie l'image fournie en argument dans la cellule fichier fournie en argument
Image.Copy
CelluleFichier.Select
ActiveSheet.Paste
'Insert le lien hypertexte
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Shapes(NomShapeImage), Address:=TabFichier(1)
If CelluleFichier.Column > 1 Then CelluleFichier.Offset(0, -1).Select
GoTo FinSub
FinSub:
'Restore répertoire courant
ChDrive Left(RépertoireCourant, 2)
ChDir RépertoireCourant
End Sub