Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : insertion de liens hypertexte

3 réponses
Avatar
Quetzalcoatl
Bonsoir,

1/ J'ai un fichier Word 2000, dont le texte contient, ici ou là, des références
à d'autres documents. Ces documents "externes" se trouvent sur un réseau
d'entreprise, on peut y accéder par ailleurs au moyen d'une adresse de type
"http://......". La racine de l'adresse est fonction du type de document externe
et le complément d'adresse correspond à la référence du document externe.
Je voudrais utiliser une macro VBA qui scrute chaque mot de mon fichier, détecte
s'il contient une référence à un document externe et associe à cette référence
un lien hypertexte pointant sur l'adresse http du document externe.
L'idéal serait que je puisse baser cette macro sur un tableau donnant la
structure des différentes références possibles et les adresses associées, par
exemple :

CONTRAT_aa_nnn/nnn --> http://réseau_entreprise/contrats/
FICHE_nnnn/aaaa --> http://réseau_entreprise/fiches_produits/
etc...

ou CONTRAT, FICHE, _, / représentent respectivement les chaînes de caractères
"CONTRAT", "FICHE", "_", "/"
et ou aa représente 2 caractères alphanumériques, aaaa 4 caractères
alphanumériques, nnn 3 caractères numériques, nnnn 4 caractères numériques.

Peut-être faudrait-il éviter d'associer un lien hypertexte lorsqu'il y en a déjà
un.

2/ Je voudrais aussi utiliser une macro qui soit capable de défaire ce que la
macro citée en 1/ réalise, c'est-à-dire supprimer les liens hypertexte : -
option 1 : sur la base du tableau de structure ci-dessus,
- option 2 : tous les liens hypertexte du fichier.

Merci pour toute aide que vous pourriez m'apporter (pas trop de temps pour
tâtonner, malheureusement, je dois avancer vite !).

--
Wedersah

3 réponses

Avatar
Anacoluthe
Bonjour !

'Quetzalcoatl' nous a écrit ...
1/ J'ai un fichier Word 2000, dont le texte contient, ici ou là, des références ||
Je voudrais utiliser une macro VBA qui scrute chaque mot de mon fichier ||
L'idéal serait que je puisse baser cette macro sur un tableau ||
2/ Je voudrais aussi utiliser une macro qui soit capable de défaire ||
option 1 : sur la base du tableau de structure ci-dessus, ||
- option 2 : tous les liens hypertexte du fichier. ||
Merci pour toute aide || je dois avancer vite !


Aide ? Aide pour quoi ? :-p
Si vous avez l'habitude de vba, il n'y a pas de difficulté
particulière dans ce projet. Si vous n'avez pas l'habitude de
vba, abandonnez vite l'idée d'avancer vite !!! :-)

Anacoluthe
« On ne peut rien enseigner à autrui.
On ne peut que l'aider à le découvrir lui-même. »
- GALILÉE

Avatar
Quetzalcoatl

Aide ? Aide pour quoi ? :-p
Si vous avez l'habitude de vba, il n'y a pas de difficulté
particulière dans ce projet. Si vous n'avez pas l'habitude de
vba, abandonnez vite l'idée d'avancer vite !!! :-)



J'ai écrit quelques lignes, en tâtonnant, sous EXCEL, mais jamais sous WORD.
Je sais bien qu'il vaudrait mieux chercher par moi-même, mais j'apprécierais,
pour cette fois, que quelqu'un me donne les instructions de base pour réaliser
cette macro.

Si c'est trop compliqué, peut-être qu'en revanche quelqu'un accepterait de me
donner les quelques lignes pour chacun des 3 problèmes suivants :
- associer un lien hypertexte à la sélection courante (je sélectionnerais alors
à la main chaque référence et lancerais la macro à chaque fois),
- effectuer un remplacement (exemple : remplacer "CONTRAT" par "CONTRACT" dans
tous les liens hypertexte de mon fichier),
- effacer tous les liens hypertexte.

Merci d'avance !

--
Bye-Bye

Avatar
Quetzalcoatl

Si c'est trop compliqué, peut-être qu'en revanche quelqu'un accepterait de me
donner les quelques lignes pour chacun des 3 problèmes suivants :
1/ associer un lien hypertexte à la sélection courante (je sélectionnerais
alors à la main chaque référence et lancerais la macro à chaque fois),
2/ effectuer un remplacement (exemple : remplacer "CONTRAT" par "CONTRACT"
dans

tous les liens hypertexte de mon fichier),
3/ effacer tous les liens hypertexte.



Bon, je me suis pris en main, là !

1/ ça fonctionne :
Const LINK_1 = "http://LINK_1/"
Const LINK_2 = "http://LINK_2/"
Const LINK_3 = "http://LINK_3/"
Sub LINKS()
Dim LINK
Select Case Left(Selection, 7)
Case "PRODUC/"
LINK = LINK_1
Case "COMPTA/"
LINK = LINK_2
Case "VENTES/"
LINK = LINK_3
Case Else
Exit Sub
End Select
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=LINK &
Selection, SubAddress:=""
End Sub

Sub DELETE_LINKS()
Selection.Range.Hyperlinks(1).Delete
End Sub

2/ et 3/ Comment scruter le fichier pour y trouver les liens hypertexte ?
Comment faire un test sur chaque lien ?
(du type :
for each lien_hypertexte in mon_document
if Left(lien_hypertexte,14) = "http://LINK_1/" then
ActiveDocument.Hyperlinks.Add Anchor:=?????, Address:="http://LINK_2/" & ?????,
SubAddress:=""
ou bien
if Left(lien_hypertexte,14) = "http://LINK_1/" or "http://LINK_2/" or
"http://LINK_3/" then Hyperlinks.Delete)

Merci d'avance !

--
Adessiatz