OVH Cloud OVH Cloud

Lien hyper-texte document

11 réponses
Avatar
Zszzz
Bonjour,

Je veux changer l'arborescence de document Office=20
contenant des liens hyper-textes entre eux...

Existe-t'il un outil me permettant de savoir dans quels=20
documents j'ai ou j'aurai des liens cass=E9s ?

Ou bien, encore mieux de red=E9finir automatiquement ces=20
liens... Mais il ne faut pas r=EAver...

Merci d'avance

10 réponses

1 2
Avatar
Anacoluthe
Bonjour !

'Zszzz' nous a écrit ...
Je veux changer l'arborescence de document Office
contenant des liens hyper-textes entre eux...
Existe-t'il un outil me permettant de savoir dans quels
documents j'ai ou j'aurai des liens cassés ?
Ou bien, encore mieux de redéfinir automatiquement ces
liens... Mais il ne faut pas rêver...


Si vos documents sont en html, il y a plein de programmes
petits et gros qui font ça. Pour des documents Word,
faudra sortir la meule à macros ...

Anacoluthe
« C’est par la séparation qu’on évalue la force des liens. »
- Gérard GEVRY

Avatar
Geo
Bonjour Zszzz,


Bonjour,

Je veux changer l'arborescence de document Office
contenant des liens hyper-textes entre eux...

Existe-t'il un outil me permettant de savoir dans quels
documents j'ai ou j'aurai des liens cassés ?

Ou bien, encore mieux de redéfinir automatiquement ces
liens... Mais il ne faut pas rêver...


Si, rêvons un peu.
on peut accéder au contenu des champs avec des macros et y changer le
contenu.
Le tout est que ça en vaille la peine.
On devrait pouvoir aussi tester les liens quitte à ouvrir chaque
fichier et rechercher les signets concernés.
A moins qu'il y ait une idée plus simple.

A+

Avatar
Zszzz
Bonjour Geo,

Je veux bien me mettre à faire une moulinette en vbs pour
analyser tous mes fichiers Word. Mais connais-tu les
fonctions qui me permettrait d'atteindre les liens hyper-
textes dans un document ?

Je ne peux pas me permettre de mettre en place une macro
au niveau du document. Il y a trop de documents...

Merci


-----Message d'origine-----
Bonjour Zszzz,


Bonjour,

Je veux changer l'arborescence de document Office
contenant des liens hyper-textes entre eux...

Existe-t'il un outil me permettant de savoir dans quels
documents j'ai ou j'aurai des liens cassés ?

Ou bien, encore mieux de redéfinir automatiquement ces
liens... Mais il ne faut pas rêver...


Si, rêvons un peu.
on peut accéder au contenu des champs avec des macros et
y changer le

contenu.
Le tout est que ça en vaille la peine.
On devrait pouvoir aussi tester les liens quitte à
ouvrir chaque

fichier et rechercher les signets concernés.
A moins qu'il y ait une idée plus simple.

A+

.




Avatar
Zszzz
Bonjour Anacoluthe,

Il s'agit de documents Word (voir Excel...), Je ne peux
pas mettre en place de macros dans chaque document.

Je peux me "connecter" en vbs sur chaque document, mais
comment est-ce que je peux récupérer les liens hyper-
textes ?

Merci

-----Message d'origine-----
Bonjour !

'Zszzz' nous a écrit ...
Je veux changer l'arborescence de document Office
contenant des liens hyper-textes entre eux...
Existe-t'il un outil me permettant de savoir dans
quels


documents j'ai ou j'aurai des liens cassés ?
Ou bien, encore mieux de redéfinir automatiquement ces
liens... Mais il ne faut pas rêver...


Si vos documents sont en html, il y a plein de programmes
petits et gros qui font ça. Pour des documents Word,
faudra sortir la meule à macros ...

Anacoluthe
« C'est par la séparation qu'on évalue la force des
liens. »

- Gérard GEVRY
.




Avatar
Geo
Bonjour Zszzz,


Bonjour Geo,

Je veux bien me mettre à faire une moulinette en vbs pour
analyser tous mes fichiers Word. Mais connais-tu les
fonctions qui me permettrait d'atteindre les liens hyper-
textes dans un document ?

Je ne peux pas me permettre de mettre en place une macro
au niveau du document. Il y a trop de documents...


Je suis sec en vbs, mais il y a quelques personnes qui fréquentent ce
forum qui devraient pouvoir t'aider.
En vba voici comment je procèderais :
mettre les documents concernés dans un répertoire de travail
faire un balayage complet de ce répertoire pour y récupérer les
documents un par un et y faire les modifications souhaitées.
Pour récupérer les textes des champs :
For Each afield In ActiveDocument.Fields
T = afield.Code.Text
...
Next afield


--

A+

Avatar
Geo
Bonjour Zszzz,


Je ne peux pas me permettre de mettre en place une macro
au niveau du document. Il y a trop de documents...


Petit complément :
un macro est rarement dans un document,
en général on la met (c'est même par défaut)
dans le modèle usuel.
Une macro peut ouvrir, modifier, fermer, supprimer ...
n'importe quel fichier.


--

A+

Avatar
Anacoluthe
Bonjour !

'Zszzz' nous a écrit ...
Il s'agit de documents Word (voir Excel...), Je ne peux
pas mettre en place de macros dans chaque document.


Inutile de mettre une macro dans chaque document !!!
Une macro dans un modèle global (y compris Normal.dot)
(ou dans un script vbs si vous y tenez) suffit.

Cette macro par exemple liste à la fin du document
actif tous les liens hypertexte avec leur destination:

Public Sub ListeLiens()
' Dresse une liste des liens hypertexte à la fin du document
Dim L As Hyperlink
With ActiveDocument.Content
.InsertAfter vbCr & "LISTE DES LIENS:" & vbCr
For Each L In .Hyperlinks
.InsertAfter L.Range.Text & vbCr & vbTab & L.Address & vbCr
Next L
End With
End Sub

Pour tester les liens en vba, il n'y a pas d'autre
solution que de suivre (follow) les liens...

Anacoluthe
« C’est par la séparation qu’on évalue la force des liens. »
- Gérard GEVRY

Avatar
Zszzz
Bonjour,

-----Message d'origine-----
Bonjour !

'Zszzz' nous a écrit ...
Il s'agit de documents Word (voir Excel...), Je ne
peux


pas mettre en place de macros dans chaque document.


Inutile de mettre une macro dans chaque document !!!
Une macro dans un modèle global (y compris Normal.dot)
(ou dans un script vbs si vous y tenez) suffit.

Cette macro par exemple liste à la fin du document
actif tous les liens hypertexte avec leur destination:

Public Sub ListeLiens()
' Dresse une liste des liens hypertexte à la fin du
document

Dim L As Hyperlink
With ActiveDocument.Content
..InsertAfter vbCr & "LISTE DES LIENS:" & vbCr
For Each L In .Hyperlinks
..InsertAfter L.Range.Text & vbCr & vbTab & L.Address &
vbCr

Next L
End With
End Sub

Pour tester les liens en vba, il n'y a pas d'autre
solution que de suivre (follow) les liens...

Anacoluthe
« C'est par la séparation qu'on évalue la force des
liens. »

- Gérard GEVRY
.



Voici la fonction que j'ai fait en VBScript :

Function TraiteDocument(Document, FichLog)
Const ForAppending = 8
Const wdDoNotSaveChanges =0
Const ReadOnly = True

Set MyFile = fso.OpenTextFile(FichLog, ForAppending)
On Error Resume Next
Set objWord = WScript.CreateObject("Word.Application")
objWord.Documents.Open Document, ReadOnly
If Err <> 0 Then
On Error GoTo 0
MyFile.Writeline "Vérifier les autorisations du
fichier " & Document
MyFile.WriteBlankLines 1
Else
On Error GoTo 0
objWord.Selection.WholeStory
If objWord.Selection.HyperLinks.Count >= 1 Then
MyFile.writeline Document & " - Lien(s) HyperText
trouvé(s) :"
For i = 1 To objWord.Selection.HyperLinks.Count
MyFile.writeline objWord.Selection.HyperLinks(i).name
Next
MyFile.WriteBlankLines 1
End If
End If
MyFile.close
objWord.quit wdDoNotSaveChanges
Set ObjWord = Nothing
End Function

Néanmoins je voulais utiliser ta fonction, car je ne
renvoie que la destination du lien et non le lien en lui-
même... :
If objWord.Content.HyperLinks.Count >= 1 Then
MyFile.writeline Document & " - Lien(s) HyperText trouvé
(s) :"
For Each L In objWord.Content.Hyperlinks
MyFile.Writeline L.Range.Text & " - " & L.Adress
Next
MyFile.WriteBlankLines 1
End If

Mais objWord.Content.HyperLinks n'existe pas. Je suis
obligé de passer par une "Selection", mais je ne parviens
pas à utiliser "Adress".

As-tu une piste ?

Merci !


Avatar
Zszzz
Bonjour,

-----Message d'origine-----
Bonjour Zszzz,


Bonjour Geo,

Je veux bien me mettre à faire une moulinette en vbs
pour


analyser tous mes fichiers Word. Mais connais-tu les
fonctions qui me permettrait d'atteindre les liens
hyper-


textes dans un document ?

Je ne peux pas me permettre de mettre en place une
macro


au niveau du document. Il y a trop de documents...


Je suis sec en vbs, mais il y a quelques personnes qui
fréquentent ce

forum qui devraient pouvoir t'aider.
En vba voici comment je procèderais :
mettre les documents concernés dans un répertoire de
travail

faire un balayage complet de ce répertoire pour y
récupérer les

documents un par un et y faire les modifications
souhaitées.

Pour récupérer les textes des champs :
For Each afield In ActiveDocument.Fields
T = afield.Code.Text
...
Next afield


--

A+

.


En VBScript, je me connecte au fichier :
Set objWord = WScript.CreateObject("Word.Application")
objWord.Documents.Open Document, ReadOnly

Mon objet n'est pas ActiveDocument, mais objWord.

Cet objet ne gère à priori pas Content. Est-ce que je
l'utilise mal ? :
For Each afield In objWord.Fields
wscript.echo afield.Code.Text
Next
J'ai :
Erreur d'exécution Microsoft VBScript: Cet objet ne gère
pas cette propriété ou cette méthode: 'objWord.Fields'

Merci !


Avatar
Anacoluthe
Bonjour !

'Zszzz' nous a écrit ...
(...)
Mais objWord.Content.HyperLinks n'existe pas. Je suis
obligé de passer par une "Selection", mais je ne parviens
pas à utiliser "Adress". As-tu une piste ?


objWord = Application , pas Document ! Il faut écrire
objWord.ActiveDocument.Content.Hyperlinks

Ceci répond aussi à ta question à Geo de 10:47 ...

Anacoluthe
« C’est par la séparation qu’on évalue la force des liens. »
- Gérard GEVRY

1 2