IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Anomalie sur la modification d'hyperliens dans des documents Word


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Par défaut Anomalie sur la modification d'hyperliens dans des documents Word
    Bonjour,

    Tout d'abord, j'ai pas mal voyagé dans vos forums avant de poster ma question. Et merci pour la qualité des réponses apportées.

    J’ai développé un outil en VBA lancé sous Excel pour formater des documents Word en documents PDF.
    Ce nouvel outil est une refonte d’un outil qui faisait la même chose mais dont le moteur devenait obsolète.
    Les documents Word à transformer contiennent des liens hypertexte permettant de lancer d'autres documents Word, transformés eux aussi en PDF. Une fois livrés au client, il s'est avéré que les liens ne fonctionnaient plus alors que dans notre environnement, nous n'avons eu aucun problème. Je me suis alors aperçu que lorsqu'on veut activer un lien, la textbox de Warning nous avertit de l'ouverture d'un "site" (le document s'ouvre après correctement en PDF) alors que dans les documents PDF, transformés avec l'ancienne version de l'outil, cette même box avertit de l'ouverture d'un "document".
    J’ai comparé l’ancien outil avec le nouveau et je me suis aperçu d’une différence dans la mise à jour des hyperliens Word.

    J’ai donc essayé de caler mon code avec ce qui avait été fait mais je rencontre des problèmes de traduction, sûrement liés aux différences de versions des 2 Excel (Windows 98 pour la 1ère, Windows 7 et Office 2013 pour la seconde).

    Ci-dessous le code que j’ai écrit pour effectuer cette mise à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
           For j = 1 To nbHP
                WordDoc.Hyperlinks(j).Range.Select
                HPLien = WordDoc.Hyperlinks(j).Address
                HPLien = Replace(HPLien, ".docx", ".pdf")
                HPLien = Replace(HPLien, ".doc", ".pdf")
                WordDoc.Hyperlinks(j).Delete
                WordDoc.Hyperlinks.Add Anchor:=Selection.Range, Address:=HPLien
                Selection.collapse Direction:=0
            Next j
    Lors de l’exécution, j’obtiens une erreur 450 sur l’instruction Hyperlinks.Add « Nombre d’arguments incorrect ou affectation de propriété incorrecte).

    Pour information, le code dans la nouvelle version de l'outil et avant que je le modifie, était le suivant (beaucoup plus simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           nbHP = WordDoc.Hyperlinks.Count  'nombre de liens hypertextes dans le fichier word
           For j = 1 To nbHP
               WordDoc.Hyperlinks(j).Address = Replace(WordDoc.Hyperlinks(j).Address, ".docx", ".pdf")
               WordDoc.Hyperlinks(j).Address = Replace(WordDoc.Hyperlinks(j).Address, ".doc", ".pdf")
           Next j
    Autre chose, le code de l'ancienne version de l'outl, que j'ai donc essayé d'adapter, est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
           For Each aHyper in ActiveDocument.hyperlinks
               aHyper.Range.Fields(1).Result.Select
               Cible$ = aHyper.Address
               Cible$ = RemplacerSousChaine$(Cible$, cheminOld$, cheminNew$)
                            aHyper.Delete
                            ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
                     Cible$, SubAdress:=""
                Selection.Collapse direction:=wdCollapseEnd
           Next
    où aHyper = variable déclarée en Hyperlink
    Cible$ = variable déclarée en String
    RemplacerSousChaine$ = fonction de modification de chaine de caractère

    Merci d'avance de votre aide.
    Bruno

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Puisque ton code est exécuté dans Excel, lorsque tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                WordDoc.Hyperlinks.Add Anchor:=Selection.Range, Address:=HPLien
                Selection.collapse Direction:=0
    , l'objet Selection est implicitement celui appartenant à Excel, alors que c'est celui appartenant à Word qu'il faudrait utiliser. Il faut donc le préciser explicitement.

    Essaie de remplacer les deux occurrences de Selection par WordDoc.Application.Selection (ou par WordApp.Selection si tu as un objet WordApp qui référence l'application Word)

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/04/2015, 13h04
  2. [XL-2010] Recherche multiple d’occurrences dans des documents Word depuis un fichier Excel
    Par Meynur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/04/2015, 16h16
  3. Réponses: 33
    Dernier message: 22/08/2011, 14h33
  4. modification,suppression ajout dans des tableaux liée
    Par ninikosim dans le forum Access
    Réponses: 0
    Dernier message: 15/03/2011, 11h26
  5. Recherche de contenu dans des documents (Word, Excel, PDF ..)
    Par Morad ISSOULGHANE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/02/2010, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo