OVH Cloud OVH Cloud

Comment tester les liens hypertextes ?

5 réponses
Avatar
Laurent
Bonjour à tous,
Je viens vers vous pour savoir si vous aviez déjà rencontré ce problème.
Tout mon système a été réorganisé il y a peu, je dois avoir une centaine
(peut -etre même plus) de documents Word qui contiennent des liaisons vers
d'autres documents. Malheureusement depuis la réorganisation j'ai beaucoup de
lien qui ne fonctionnent plus.

Auriez vous une solution qui me permettrait de lister les documents dans
lesquels les liens ne focntionnent plus.
Merci d'avance si vous avez une réponse, en attendant je cherche un moyen en
macro de lire les liens.

Laurent

5 réponses

Avatar
Geo

Bonjour à tous,
Je viens vers vous pour savoir si vous aviez déjà rencontré ce problème.
Tout mon système a été réorganisé il y a peu, je dois avoir une centaine
(peut -etre même plus) de documents Word qui contiennent des liaisons vers
d'autres documents. Malheureusement depuis la réorganisation j'ai beaucoup de
lien qui ne fonctionnent plus.


Faites déjà une recherche sur l'historique de ce forum vous pourriez
trouver des idées
http://groups.google.fr/group/microsoft.public.fr.word/search?group=microsoft.public.fr.word&q=hyperlien&qt_g=1&searchnow=Rechercher+dans+ce+groupe

Auriez vous une solution qui me permettrait de lister les documents dans
lesquels les liens ne focntionnent plus.
Merci d'avance si vous avez une réponse, en attendant je cherche un moyen en
macro de lire les liens.


C'est peut-être la bonne solution.
Voici une réponse donnée par Guy Moncomble trouvée grâce au lien
ci-dessus :
------------------
Si tu veux parcourir un document il te faut une boucle, par exemple :
Selection.WholeStory
For Each Champ In ActiveDocument.Fields
If Champ.Type = wdFieldHyperlink Then
' .....
End If
End Sub
Le problème c'est que cette série d'instruction ne traite que les
champs de l'article principal. Donc si tes champs se trouvent dans un
haut ou un pied de page, il te va falloir les ouvrir (c'est également
vrai pour certaines opérations sur les signets !)
Pour les hyperliens , il y a plus spécifique :
ActiveDocument.Hyperlinks
------------------
On peut donc imaginer de récupérer tous les chemins indiqués dans ces
champs, préparer la correspondance et refaire un tour pour les
remplacer.

Dans la faq il y a la batchmacro d'anacoluthe qui permet de traiter
tous les fichiers d'un dossier.

Bon courage

--
A+

Avatar
Laurent
Bonjour,
Je n'avais rien trouvé d'interessant dans le news group, j'avais déjà
l'explorateur de dossier et je pense que le bout de code trouvé va me
convenir, je fgais ma macro et je vous donnerais mon résultat.

@ bientôt
Laurent



Bonjour à tous,
Je viens vers vous pour savoir si vous aviez déjà rencontré ce problème.
Tout mon système a été réorganisé il y a peu, je dois avoir une centaine
(peut -etre même plus) de documents Word qui contiennent des liaisons vers
d'autres documents. Malheureusement depuis la réorganisation j'ai beaucoup de
lien qui ne fonctionnent plus.


Faites déjà une recherche sur l'historique de ce forum vous pourriez
trouver des idées
http://groups.google.fr/group/microsoft.public.fr.word/search?group=microsoft.public.fr.word&q=hyperlien&qt_g=1&searchnow=Rechercher+dans+ce+groupe

Auriez vous une solution qui me permettrait de lister les documents dans
lesquels les liens ne focntionnent plus.
Merci d'avance si vous avez une réponse, en attendant je cherche un moyen en
macro de lire les liens.


C'est peut-être la bonne solution.
Voici une réponse donnée par Guy Moncomble trouvée grâce au lien
ci-dessus :
------------------
Si tu veux parcourir un document il te faut une boucle, par exemple :
Selection.WholeStory
For Each Champ In ActiveDocument.Fields
If Champ.Type = wdFieldHyperlink Then
' .....
End If
End Sub
Le problème c'est que cette série d'instruction ne traite que les
champs de l'article principal. Donc si tes champs se trouvent dans un
haut ou un pied de page, il te va falloir les ouvrir (c'est également
vrai pour certaines opérations sur les signets !)
Pour les hyperliens , il y a plus spécifique :
ActiveDocument.Hyperlinks
------------------
On peut donc imaginer de récupérer tous les chemins indiqués dans ces
champs, préparer la correspondance et refaire un tour pour les
remplacer.

Dans la faq il y a la batchmacro d'anacoluthe qui permet de traiter
tous les fichiers d'un dossier.

Bon courage

--
A+






Avatar
Laurent
De nouveau Laurent,
Voici la solution que j'ai pu trouver (à améliorer, il manque par exemple
l'exploration d'un sous dossier :
Sub ExplorationDossier()
' Explorer tous les fichiers Word d'un dossier

Dim Tableau() As String
Dim Fichier As String
Dim Compteur As Integer
Dim LigneCompteur As Integer
'Explorer le dossier
Chemin1 = InputBox(Prompt:="Quel dossier voulez-vous imprimer?")
Chemin = Chemin1 + "*.doc"
Compteur = 1
Fichier = Dir(Chemin)
'Pour chaque fichier ouvrir le fichier, l'activer puis explorer les liens
Do While (Len(Fichier) > 0)
ReDim Preserve Tableau(Compteur)
Tableau(Compteur - 1) = Fichier
LigneCompteur = Compteur + 1
Compteur = Compteur + 1
Fichier2 = Fichier
Fichier = Dir()
'Ouvrir le fichier
Documents.Open FileName:=Chemin1 & "" & Fichier2
' Test les liens dans un fichier Word
For Each Liens In ActiveDocument.Hyperlinks
AdressLien = Liens.Address
'Tester l'existence du lien
If Dir(AdressLien) = "" Then
'Le lien ne fonctionne pas
NomDoc = ActiveDocument.Name
ChemDoc = ActiveDocument.Path
LiensMauvais = Liens.TextToDisplay
'Selection.Range.Hyperlinks(1).Range.Fields(1).Result
Erreur = Erreur & Chr(10) & "Fichier : " & ChemDoc & "" &
NomDoc & " , Lien mauvais : " & LiensMauvais
End If
Next Liens
'fermer le fichier
ActiveDocument.Close False
Loop
'Ecrire dans le document les liens mauvais
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.TypeText Text:=Erreur
End Sub

En esperant que ca puisse servir à quelqu'un d'autres

Laurent
Avatar
Geo

De nouveau Laurent,
Voici la solution que j'ai pu trouver (à améliorer, il manque par exemple
l'exploration d'un sous dossier :
Sub ExplorationDossier()
[...]


End Sub

En esperant que ca puisse servir à quelqu'un d'autres


Hop, mis de côté
Si je peux me permettre, utilisez l'option Explicit, ça oblige à tout
déclarer, mais ça apporte une grande sécurité.
Dans votre programme si vous écrivez lien au lieu de liens, il n'y aura
pas d'erreur signalée à la compilation. Ça devient très difficile à
mettre au point.
Et je trouve que ça aide pas mal pour l'écriture du code, quand on tape
le "." on a les propriétés ou les méthodes disponibles.
Enfin ça simplifie la lecture du contenu de la fenêtre des variables.

Pour la suite, vous savez qu'on peut faire un rechercher remplacer dans
les champs ? Il suffit de cocher la case "afficher les champs"
Donc là, vous aurez une liste des liens qui ne marchent plus,
vous pourriez mettre en face, dans un tableau, le nouveau lien et faire
un Rechercher remplacer sur tous les documents.

--
A+

Avatar
Laurent
Hello
Pour les explicite, c'est vrai que je n'y pense pas systématiquement.
Je connais le coup du rechercher remplacer, mais la mon but est de faire un
état des liens qui ne fonctionnent pas, ensuite ca sera la responsabilité de
chaque utilisateur de modifier ces liens.
Sinon ma macro ne fonctionne pas bien lorsque l'on a un lien vers un site.
Il faut que je corrige.

@+
Laurent



De nouveau Laurent,
Voici la solution que j'ai pu trouver (à améliorer, il manque par exemple
l'exploration d'un sous dossier :
Sub ExplorationDossier()
[...]


End Sub

En esperant que ca puisse servir à quelqu'un d'autres


Hop, mis de côté
Si je peux me permettre, utilisez l'option Explicit, ça oblige à tout
déclarer, mais ça apporte une grande sécurité.
Dans votre programme si vous écrivez lien au lieu de liens, il n'y aura
pas d'erreur signalée à la compilation. Ça devient très difficile à
mettre au point.
Et je trouve que ça aide pas mal pour l'écriture du code, quand on tape
le "." on a les propriétés ou les méthodes disponibles.
Enfin ça simplifie la lecture du contenu de la fenêtre des variables.

Pour la suite, vous savez qu'on peut faire un rechercher remplacer dans
les champs ? Il suffit de cocher la case "afficher les champs"
Donc là, vous aurez une liste des liens qui ne marchent plus,
vous pourriez mettre en face, dans un tableau, le nouveau lien et faire
un Rechercher remplacer sur tous les documents.

--
A+