Liens hypertext

Bonjour,

J'ai crée un tableau Excel pour le suivi de tous les courriers reçu ou envoyés dans mon service. Et hier tous les liens hypertexte étaient mort ! Je ne comprend pas suis je obligée de refaire tous les liens c'est à dire environs 1000 ?

Merci pour votre aide.

Bonjour Kahina,

Ces liens hypertextes renvoient vers un courrier enregistrer dans un dossier ?

Exemple : Vous recevez un mail dans votre service que vous voulez archiver, alors vous l'enregistrer sous

Puis vous insérer son lien HyperTexte dans votre tableau de suivi

Si c'est le cas, alors c'est plutôt simple a automatiser

Bonjour Juice,

Oui c'est bien ca j'ai un dossier ou je scan les courriers ou transfères les mails et je fais un lien hypertexte sur la cellule du tableau au document en question.

Quelle peut être la solution ?

D'avance merci

Re-

Super! Est-ce que vous vous y connaissez en VBA ?

Avec la macro ci-dessous, vous pouvez lister tout les fichiers ".msg" présent dans un dossier, et insérer dans la colonne voulu, des lien hypertexte allant vers chacun d'entre eux :

Sub List_Hyperlinks()
'Activer la référence Microsoft Scripting Runtime
Dim x As Long
Dim fi, fold As Object
Dim Fso As Scripting.FileSystemObject
Set Fso = CreateObject("Scripting.FileSystemObject")
Set fold = Fso.GetFolder("N:\MonChemin\MailEnregistrer\")
x = 1
For Each fi In fold.Files
    If fi.Type = "Data Base File" Or Right(fi.Name, 3) <> "msg" Then GoTo NextIteration
    Cells(x, 1).Hyperlinks.Add Anchor:=Cells(x, 1), Address:=fi.Path, TextToDisplay:=fi.Name
    x = x + 1
NextIteration:
Next fi
End Sub

A dispo!

je suis une autodidacte j'ai appris sur le tas avec des tutos sur YouTube pour faire mon tableau.

Mais il n'y a pas que des .msg il y'a aussi des pdf ca peut toujours fonctionner ?

Re-

Mais il n'y a pas que des .msg il y'a aussi des pdf ca peut toujours fonctionner ?

Ah ! Alors utilise plutôt le code ci-dessous pour prendre en compte les "pdf" :

Sub List_Hyperlinks()
'Activer la référence Microsoft Scripting Runtime
Dim x As Long
Dim fi, fold As Object
Dim Fso As Scripting.FileSystemObject
Set Fso = CreateObject("Scripting.FileSystemObject")
Set fold = Fso.GetFolder("P:\PERSONNEL\Excel\Pour moi\Fichier tem\")
x = 1
For Each fi In fold.Files
    If (Right(fi.Name, 3) = "msg" Or Right(fi.Name, 3) = "pdf") And fi.Type <> "Data Base File" Then
        Cells(x, 1).Hyperlinks.Add Anchor:=Cells(x, 1), Address:=fi.Path, TextToDisplay:=fi.Name
        x = x + 1
    End If
Next fi
End Sub

A dispo!

merci beaucoup, étant novice, je préfère demander, est ce qu'il me suffit juste de copier coller la macro dans mon module ? comment faire pour que la macro puisse savoir dans quel dossier récupérer les documents et sur quelles cellules faire le lien ?

Encore merci pour tour.

Re-

merci beaucoup, étant novice, je préfère demander, est ce qu'il me suffit juste de copier coller la macro dans mon module ?

En effet, vous devez coller ce code dans un module standard mais également activer la référence "Microsoft Scripting Runtime"

comment faire pour que la macro puisse savoir dans quel dossier récupérer les documents

Dans le code, vous avez une ligne où j'indique un faux chemin de dossier.

Remplacer le par celui qui vous intéresse :

Set fold = Fso.GetFolder("P:\PERSONNEL\Excel\Pour moi\Fichier temp\")

En oubliant pas le signe "\" à la fin

sur quelles cellules faire le lien ?

Toujours dans le code :

x = 1

Représente la ligne à laquelle la liste de lien hypertexte doit débuter

Si vous ne voulez pas que sa commence à la ligne 1 mais 25 alors remplacer le x = 1 par x = 25

Cells(x, 1).Hyperlinks.Add Anchor:=Cells(x, 1), Address:=fi.Path, TextToDisplay:=fi.Name

Le 1 de Cells(x, 1) représente le numéro de colonne.

1 = A

2 = B

3 = C

Dans mon exemple, vous allez donc coller votre premier lien hypertexte dans la ligne 1 de la colonne A donc la cellule A1

Si vous ne voulez pas coller vos lien dans la colonne A mais la colonne C alors remplacer Cells(x,1) par Cells(x,3)

attention il y a deux Cells(x,1) dans la même ligne

A dispo pour des infos complémentaires

Bonjour JUICE,

Je m'y met de suite

Ca fonctionne les liens hypertext ont bien été relié au document du dossier mais de manière aléatoire comment faire pour qu'ils soient reliés au bon document en sachant que :

La première ligne de mon tableau correspond a mon premier courrier enregistré en 2018 le 02/01/2018 - le pdf correspondant ce comme 2018_01_02_nom de l'Expediteur.

Merciii juice.

Deux solutions possible :

  • Est-ce que sur ton tableau où mettre ton lien hypertexte tu as le nom de ton fichier (si oui quelle colonne)
  • Est-ce que sur ton tableau les lignes sont rangées par ordre chronologique (si oui peux tu me dire à quelle moment tu as une colonne vide)

A dispo

Voici la maquette vierge du tableau pour que tu puisses mieux comprendre et mieux me faire comprendre aussi .

Et oui les lignes sont par ordre chronologique mais il peut y avoir trois ligne dont la date d'arrivée est identiques (si je reçois trois courrier le 03/03/2019) il y'aura un courrier enregistré par ligne avec une date de réception identique.

Concernant les document devant être reliés Il ' y a un dossier arrivé et un départ avec dedans les courriers scannés ou les mails.

Bonjour JUICE,

Je me permets de revenir vers toi pour ton accompagnement dans mon projet.

Merci beaucoup.

Re- Kaniha,

Excuse moi pour mon absence :p

Bon, je comprend rien à ton fichier x)

"Départ" "Arrivée" "Numéro de départ" etc... etc...

Je préfère continuer à répondre à tes questions et que tu les adaptes ensuite à ton fichier

Donc !

Sub List_Hyperlink()
Dim ch, fi As String
ch = "N:\Ton_chemin\"
fi = Dir(ch)
If fi <> "" Then
    i = 1
    Do While fi <> ""
        Cells(i, 1) = ch & fi
        Cells(i, 2) = FileDateTime(Cells(i, 1))
        Cells(i, 1).Hyperlinks.Add Anchor:=Cells(i, 1), Address:=ch & fi, TextToDisplay:=fi
        fi = Dir
        i = i + 1
    Loop
End If
End Sub

Avec ce code, en colonne 1 il y aura le nom de ton fichier, et en colonne 2 la date et l'heure à laquelle le fichier a été enregistré dans le dossier

Plus qu'a appliquer une tri (du plus ancien au plus récent) sur ta colonne 2 !

A dispo

Bonjour Juice,

Merciiii ma question si dans mon tableau :

La date est en colonne 1,

Le nom du fichier en colonne 2

le lien hypertexte en colonne 9,

La macro ci-dessous te semble t'elle correcte :

Sub List_Hyperlink()

Dim ch, fi As String

ch = "U:\Enregistrement courrier\scans courriers arrivées DST\2018\"

fi = Dir(ch)

If fi <> "" Then

I = 4

Do While fi <> ""

Cells(I, 4) = ch & fi

Cells(I, 1) = FileDateTime(Cells(I, 1))

Cells(I, 9).Hyperlinks.Add Anchor:=Cells(I, 1), Address:=ch & fi, TextToDisplay:=fi

fi = Dir

I = I + 1

Loop

End If

End Sub

car pour le moment elle ne fonctionne pas comme ca.

Merciiiii

Re-

En effet, sa ne peux pas fonctionner car certaine référence aux cellules sont incorrect.

Je te laisse modifier ton code comme ci-dessous :

Sub List_Hyperlink()
 Dim ch, fi As String
 ch = "U:\Enregistrement courrier\scans courriers arrivées DST\2018\"
 fi = Dir(ch)
 If fi <> "" Then
 I = 4
 Do While fi <> ""
 Cells(I, 2) = ch & fi
 Cells(I, 1) = FileDateTime(Cells(I, 2))
 Cells(I, 9).Hyperlinks.Add Anchor:=Cells(I, 9), Address:=ch & fi, TextToDisplay:=fi
 fi = Dir
 I = I + 1
 Loop
 End If
 End Sub

A dispo

Bonjour Juice,

Ca ne fonctionne pas peux tu m'expliquer à quoi correspond chacune des lignes de la macro pour que je puisse essayer de comprendre d'où vient mon pb.

Encore merci.

Bonjour Kahina,

Est-ce que tu as eu un message d'erreur pendant que la macro tournait ?

Ca ne fonctionne pas peux tu m'expliquer à quoi correspond chacune des lignes de la macro

'Nom de la Macro
Sub List_Hyperlink()
'Déclaration des variables
'ch as string = chemin est une variable de type "Texte"
'fi as string = fichier est une variable de type "Text"
Dim ch, fi As String
'ch stock la chaîne de caractère "U:\Enregistrement..."
ch = "U:\Enregistrement courrier\scans courriers arrivées DST\2018\"
'fi stock la chaîne de caractère "premier fichier présent dans le ch"
fi = Dir(ch)
'Si fi est différent de rien alors
If fi <> "" Then
'variable I de type num stock la valeur 4
I = 4
'tant que fi est différent de rien
Do While fi <> ""
'on écrit dans la cellule ligne I colonne 2 le ch et le fichier stocké dans ma var fi
Cells(I, 2) = ch & fi
'on écrit dans la cellule ligne I colonne 1 la date du fichier stocké dans ma var fi
Cells(I, 1) = FileDateTime(Cells(I, 2))
'on écrit dans la cellule ligne I colonne 9 le lien hypertexte vers le fichier stocké dans ma var fi
Cells(I, 9).Hyperlinks.Add Anchor:=Cells(I, 9), Address:=ch & fi, TextToDisplay:=fi
'ma var fi stock le fichier suivant
fi = Dir
'ma var I stock 1 chiffre de plus pour sauter de ligne
I = I + 1
'Si fi est différent de rien, alors retour à mon Do While fi <> ""
Loop
End If

A dispo

Désolée pour mon temps de réponse ! Il me dit "l'adresse de ce site n'est pas valide vérifier l'adresse er réessayer",

Voilà la macro avec mes modifs et ce que j'ai compris :

Sub List_Hyperlink()

Dim ch, fi As String

'Ici j'ai noté le chemin de mon dossier source ou son tous les pdf'

ch = "U:\Enregistrement courrier\scans courriers arrivées DST\2018-2019\"

fi = Dir(ch)

If fi <> "" Then

I = 4

Do While fi <> ""

Cells(I, 2) = ch & fi

'Ici j'ai mis la colonne A qui est la colonne de la date'

Cells(A, 1) = FileDateTime(Cells(A, 2))

'Ici la colonne I qui est la colonne ou doit se trouver le lien hypertexte et 2 pour la première ligne du tableau'

Cells(I, 2).Hyperlinks.Add Anchor:=Cells(I, 2), Address:=ch & fi, TextToDisplay:=fi

fi = Dir

I = I + 1

Loop

End If

End Sub

Encore merci, je n'ai pas fini de te remercier lol.

Re-

Ici [...]

'Ici j'ai mis la colonne A qui est la colonne de la date'

 Cells(A, 1) = FileDateTime(Cells(A, 2))

Tu met un A (peut-être pour dire colonne A sauf que le code prend sa pour une variable qui est vide)

A remplacer par :

'Ici j'ai mis la colonne A qui est la colonne de la date'
 Cells(I, 1) = FileDateTime(Cells(I, 2))

Merci de réessayer

A dispo

Rechercher des sujets similaires à "liens hypertext"