Un coup de pouce pour finaliser une macro MsWord 2007
Résolu
stephdem
Messages postés
40
Statut
Membre
-
stephdem Messages postés 40 Statut Membre -
stephdem Messages postés 40 Statut Membre -
Bonjour,
J’ai un long fichier, texte-pour-macro-Vba.docm, tout en texte, dans lequel se trouvent de nombreux liens vers des pages Internet du type http://www.xxxxxxxx.php ou https://yyyyy.htm (etc.) sachant que tous commencent par http et tous forment un tout sans espace (le lien est suivi d‘un espace qui délimite, puis un ‘]’) et je voudrais créer par macro des liens hypertextes pour tous ces liens, un par un.
Donc dans un premier temps j’ai fait une macro qui colore en vert ces liens hypertextes (globalement), comme ci-après :
Cà marche !
Ensuite, j’ai cherché comment créer une boucle pour que les cas de la sélection soient pris un par un.
J’ai pas pu tester (cela me dépasse), désolée mais cela donne quelque chose comme cela :
Enfin, j’ai trouvé sur Internet la fonction hyperlinks qui permet de spécifier (convertir) une série de caractères en lien hypertexte :
Voilà j’aurais besoin d’un expert de VBA Word qui me permette de finaliser cette macro en fusionnant (correctement c’est là le souci pour moi… j’y ai déjà passé des heures !) ces 3 bouts de codes.
Merci d’avance,
Steph
PS: désolée je ne souviens plus comment identifier le code VBA, j'ai mis <code>
J’ai un long fichier, texte-pour-macro-Vba.docm, tout en texte, dans lequel se trouvent de nombreux liens vers des pages Internet du type http://www.xxxxxxxx.php ou https://yyyyy.htm (etc.) sachant que tous commencent par http et tous forment un tout sans espace (le lien est suivi d‘un espace qui délimite, puis un ‘]’) et je voudrais créer par macro des liens hypertextes pour tous ces liens, un par un.
Donc dans un premier temps j’ai fait une macro qui colore en vert ces liens hypertextes (globalement), comme ci-après :
Sub greencolor()
Selection.HomeKey unit:=wdStory
ScreenUpdating = False
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Font.Bold = True
.Replacement.Font.Color = wdColorGreen
.MatchWildcards = True
.Text = "(\http*\ )"
.Forward = True
.Execute Replace:=wdReplaceAll
.Text = "\1"
End With
End Sub
Cà marche !
Ensuite, j’ai cherché comment créer une boucle pour que les cas de la sélection soient pris un par un.
J’ai pas pu tester (cela me dépasse), désolée mais cela donne quelque chose comme cela :
Sub boucle
Dim p As Paragraph
Dim i As Long
Dim doc1, As String
doc1 = "texte-pour-macro-Vba.docm"
Documents(doc1).Activate
For Each p In Documents(doc1).Paragraphs
If blabla (le processus de sélection commençant par ‘htt’ suivi de caractères variables formant un mot entier
Next
End With
Do While Selection.Find.Execute = True
Loop
Next i
End Sub
Enfin, j’ai trouvé sur Internet la fonction hyperlinks qui permet de spécifier (convertir) une série de caractères en lien hypertexte :
With Selection
.Value = TexteLien
.Hyperlinks.Add Anchor:=Selection, Address:=ClasseurDestination, SubAddress:="'" & FeuilleDestination & "'" & "!" & AdresseDestination, TextToDisplay:=TexteLien
End With
expression . Add( Anchor, Address, SubAddress, ScreenTip, TextToDisplay, Target)
seulement anchor est obligatoire
exemple :
ActiveDocument.Hyperlinks.Add Address:="http://www.msn.com/", _
Anchor:=Selection.Range
Voilà j’aurais besoin d’un expert de VBA Word qui me permette de finaliser cette macro en fusionnant (correctement c’est là le souci pour moi… j’y ai déjà passé des heures !) ces 3 bouts de codes.
Merci d’avance,
Steph
PS: désolée je ne souviens plus comment identifier le code VBA, j'ai mis <code>
A voir également:
- Un coup de pouce pour finaliser une macro MsWord 2007
- Save as pdf office 2007 - Télécharger - Bureautique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Coup d'un soir avis ✓ - Forum Consommation & Internet
- Comment supprimer une page sur word 2007 - Guide
- Couper une video - Guide
4 réponses
Bonjour,
Désolée, mais je ne comprends pas grand chose. Tu dis " je voudrais créer par macro des liens hypertextes pour tous ces liens"
Mais si ce sont déjà des liens, que faut il faire en plus ?
Alors j'essaie d'imaginer : serait-ce du texte brut ? et tu voudrais convertir ces textes bruts en vrais liens ?
Alors si c'est ça, je ne comprends rien à tes macros. Pourquoi le passage en vert ? etc.
Et si c'est ça le problème il n'y a pas besoin de macro. Si tu tiens à la macro :
A noter que la propriété Options permet de savoir ce qu'on veut faire comme corrections automatiques. Donc, on peut compléter si nécessaire. Par exemple si tu as des guillemets dactylographiques et que tu veux les conserver ainsi, etc.
m@rina
Désolée, mais je ne comprends pas grand chose. Tu dis " je voudrais créer par macro des liens hypertextes pour tous ces liens"
Mais si ce sont déjà des liens, que faut il faire en plus ?
Alors j'essaie d'imaginer : serait-ce du texte brut ? et tu voudrais convertir ces textes bruts en vrais liens ?
Alors si c'est ça, je ne comprends rien à tes macros. Pourquoi le passage en vert ? etc.
Et si c'est ça le problème il n'y a pas besoin de macro. Si tu tiens à la macro :
Sub liens()
Options.AutoFormatReplaceHyperlinks = True
With ActiveDocument
.Kind = wdDocumentNotSpecified
.Range.AutoFormat
End With
End Sub
A noter que la propriété Options permet de savoir ce qu'on veut faire comme corrections automatiques. Donc, on peut compléter si nécessaire. Par exemple si tu as des guillemets dactylographiques et que tu veux les conserver ainsi, etc.
m@rina
Bonjour M@rina
Ah merci de bien vouloir m'aider.
J'y ai passé du temps mais je n'ai pas le niveau.
Vous dites ne pas comprendre (désolée du manque de clarté) mais en fait vous êtes en plein dedans.
Le texte a plus de 50 liens inactifs dans la longue page (du texte brut venant d'un autre programme que Word), et il y aura d'autres pages dans le futur à modifier pareillement.
Donc j'ai besoin d'une macro pour automatiser.
J'ai mis 3 bouts de macro pour montrer ma démarche pas à pas mais bien sûr il n'y a qu'une macro à faire.
Le 1er bout montre comment cherche l'occurrence http(etc), mot entier suivi d'un espace puis ']'
Le 2ème bout c'est la boucle et là je ne sais que faire, trouver la première occurrence, activer lien, passer à la seconde, etc.
Le 3ème bout est l'activation du lien qui vient à la place de la 'teinture' en vert du texte.
Est-ce que c'est limpide maintenant?
Encore une fois merci, vous me sauvez!
A+, Steph
Ah merci de bien vouloir m'aider.
J'y ai passé du temps mais je n'ai pas le niveau.
Vous dites ne pas comprendre (désolée du manque de clarté) mais en fait vous êtes en plein dedans.
Le texte a plus de 50 liens inactifs dans la longue page (du texte brut venant d'un autre programme que Word), et il y aura d'autres pages dans le futur à modifier pareillement.
Donc j'ai besoin d'une macro pour automatiser.
J'ai mis 3 bouts de macro pour montrer ma démarche pas à pas mais bien sûr il n'y a qu'une macro à faire.
Le 1er bout montre comment cherche l'occurrence http(etc), mot entier suivi d'un espace puis ']'
Le 2ème bout c'est la boucle et là je ne sais que faire, trouver la première occurrence, activer lien, passer à la seconde, etc.
Le 3ème bout est l'activation du lien qui vient à la place de la 'teinture' en vert du texte.
Est-ce que c'est limpide maintenant?
Encore une fois merci, vous me sauvez!
A+, Steph
Ah m@arina, j'avais pas percuté.
Et j'avais tant compliqué le processus!!!
Eh bien çà marche, merci beaucoup!!!
Il y a juste un micro détail (je peux le contourner, mais cela doit être facile à régler, j'ai un peu regardé mais je n'ai pas trouvé).
Le texte comprend d'abord une section en 2 colonnes sans lien avec du texte plus gros et une image à gauche.
Puis vient le texte avec les liens à activer dans une 2ème section.
Lorsque j'exécute la macro, les liens sont bien activés mais en plus:
- les textes de la 1ère section (titres) sont changés en Cambria au lieu de Colibri avec une police plus grande resp 14 ou 26 pour d'autres.
- les textes avec les liens commencent toujours par "*" et après la macro j'ai une liste à puces!
Une idée?
Encore merci je suis tirée d'affaires... c'est bon de voir qu'il y a des expertes féminines (sans allusion à la polémique actuelle!)
A plus, Steph
Et j'avais tant compliqué le processus!!!
Eh bien çà marche, merci beaucoup!!!
Il y a juste un micro détail (je peux le contourner, mais cela doit être facile à régler, j'ai un peu regardé mais je n'ai pas trouvé).
Le texte comprend d'abord une section en 2 colonnes sans lien avec du texte plus gros et une image à gauche.
Puis vient le texte avec les liens à activer dans une 2ème section.
Lorsque j'exécute la macro, les liens sont bien activés mais en plus:
- les textes de la 1ère section (titres) sont changés en Cambria au lieu de Colibri avec une police plus grande resp 14 ou 26 pour d'autres.
- les textes avec les liens commencent toujours par "*" et après la macro j'ai une liste à puces!
Une idée?
Encore merci je suis tirée d'affaires... c'est bon de voir qu'il y a des expertes féminines (sans allusion à la polémique actuelle!)
A plus, Steph
Bon, comme il n'y a pas de réaction et que le sujet est à 99% résolu, je marque résolu.
Encore une fois merci M@rina
Steph
Encore une fois merci M@rina
Steph
Bonjour,
Désolée de n'être pas intervenue plus tôt.
Comme je l'ai dit dans mon précédent post, on peut compléter le code si nécessaire en fonction des corrections automatiques souhaitées ou non.
Donc, tu pourrais modifier le code ainsi :
A noter néanmoins que le changement de police automatique vient du fait que le document n'est pas nickel du point de vue Style.
m@rina
Désolée de n'être pas intervenue plus tôt.
Comme je l'ai dit dans mon précédent post, on peut compléter le code si nécessaire en fonction des corrections automatiques souhaitées ou non.
Donc, tu pourrais modifier le code ainsi :
Sub liens()
With Options
.AutoFormatReplaceHyperlinks = True
.AutoFormatAsYouTypeApplyHeadings = False
.AutoFormatAsYouTypeApplyBulletedLists = False
.AutoFormatAsYouTypeApplyNumberedLists = False
End With
With ActiveDocument
.Kind = wdDocumentNotSpecified
.Range.AutoFormat
End With
End Sub
A noter néanmoins que le changement de police automatique vient du fait que le document n'est pas nickel du point de vue Style.
m@rina