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

VBA : trouver les liens hypertexte et agir dessus

4 réponses
Avatar
Quetzalcoatl
Bonsoir,

Comment scruter un fichier pour y trouver les liens hypertexte ?
Comment faire alors 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:=(???? pour ajouter en lieu et place du
lien existant), 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 !

--
Sayonara

4 réponses

Avatar
Geo
Bonjour Quetzalcoatl


Bonsoir,

Comment scruter un fichier pour y trouver les liens hypertexte ?
Comment faire alors un test sur chaque lien ?


Un hyperlien est un champ.
Donc tu peux balayer tous les champs de ton document et regarder pour
chacun si le texte est HYPERLINK.
Tu as un exemple similaire dans l'aide :
For Each aField In ActiveDocument.MailMerge.Fields
If InStr(1, aField.Code.Text, "Title", 1) Then
MsgBox "A Title merge field is in this document"
End If
Next aFieldPour voir ce qu'il y a dans un champ faire ALT+F9 dessus.--
A+

Avatar
Anacoluthe
Bonjour !

'Quetzalcoatl' nous a écrit ...
Comment scruter un fichier pour y trouver les liens hypertexte ?
Comment faire alors 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:=(???? pour ajouter en lieu et place du
lien existant), Address:="http://LINK_2/", SubAddress:=""


Votre question est aussi curieuse qu'un serpent à plumes ;-)
car 3 lignes plus bas vous utilisez pourtant la collection
/Hyperlinks/ et ses propriétés, non ?????
Le début de votre code serait donc tout simplement
for each lien_hypertexte in ActiveDocument.Hyperlinks
if Left(lien_hypertexte.Address , 14) = "http://LINK_1/" then
etc...(et pourquoi ajouter un lien?? changez son .Address)

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS

Avatar
Quetzalcoatl
Merci Geo


Un hyperlien est un champ.
Donc tu peux balayer tous les champs de ton document et regarder pour
chacun si le texte est HYPERLINK.
Tu as un exemple similaire dans l'aide :
For Each aField In ActiveDocument.MailMerge.Fields
If InStr(1, aField.Code.Text, "Title", 1) Then
MsgBox "A Title merge field is in this document"
End If
Next aFieldPour voir ce qu'il y a dans un champ faire ALT+F9 dessus.--



--
Ave amice

Avatar
Quetzalcoatl

Votre question est aussi curieuse qu'un serpent à plumes ;-)
car 3 lignes plus bas vous utilisez pourtant la collection
/Hyperlinks/ et ses propriétés, non ?????


c'est du copier/coller, je ne maîtrise pas bien.

Le début de votre code serait donc tout simplement
for each lien_hypertexte in ActiveDocument.Hyperlinks
if Left(lien_hypertexte.Address , 14) = "http://LINK_1/" then
etc...


merci.

(et pourquoi ajouter un lien?? changez son .Address)


comment ?
lien_hypertexte.Address = "[nouvelle adresse]"
ne fonctionne pas (lecture seule) sous WORD97.

--
Bien sincèrement