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 :

Code vba fonctionnel sous Word, mais erreur de compilation sous Excel [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Code vba fonctionnel sous Word, mais erreur de compilation sous Excel
    Bonjour à toutes et à tous,

    Je tente de faire fonctionner une macro vba à partir d'excel 365, macro qui donne pleinement satisfaction lorsqu'elle est exécutée dans Word 365 .

    La macro source d'origine est disponible ici : https://stackoverflow.com/questions/77284063/a-macro-to-search-a-word-document-for-a-string-and-change-it-to-a-hyperlink



    Je reprends une partie du code :

    'Find all instances of text `findWhat` in document `doc`, and
    ' apply a hyperlink using URL `linkURL`
    'Add a fourth parameter if you also need to control the link text.
    Sub Linkify(doc As Document, findWhat As String, linkURL As String)
    Dim rng As Range, col As New Collection, i As Long
    Set rng = doc.Range
    ResetFind rng.Find
    Do While rng.Find.Execute(findtext:=findWhat)
    ' `rng` is now the found text
    col.Add rng.Duplicate 'collect all found ranges
    Loop
    Debug.Print col.Count & " instances of '" & findWhat & "'"
    For i = col.Count To 1 Step -1 'link all found ranges
    doc.Hyperlinks.Add Anchor:=col(i), Address:=linkURL, _
    SubAddress:="", ScreenTip:="", TextToDisplay:=col(i).Text
    Next i
    End Sub

    Sub ResetFind(f As Find)
    With f
    .ClearFormatting
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    End With
    End Sub


    Sous excel, moyennant l'ajout de la référence Object library Word 16.0, le code se déroule bien jusqu'à l'instruction :

    ResetFind rng.Find

    Où excel me met le message suivant : "Erreur de compilation - Argument non facultatif" ...


    Je me répète : la même séquence dans Word ne fait pas apparaitre cette erreur de compilation et s’exécute parfaitement ...

    Quelqu'un aurait une piste à me proposer ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 332
    Points : 1 944
    Points
    1 944
    Par défaut
    Salut,

    Cas classique de type de donnée ambigu.

    Excel définit un type Range.
    Word définit également un type Range.
    Lorsque tu déclares ta variable, tu n'indique pas de quelle librairie provient le type.
    Dans ces cas, VBA prend le type de la première librairie qui passe, pas de chance pour toi, ce n'est pas celui qu'il te faut.

    Prend l'habitude de qualifier pleinement tes variable, et ce genre de soucis disparaitra.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim rng As Excel.Range
        '// ou
    Dim rng As Word.Range

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Vraiment super ce forum d'entraide.

    Merci vivement à deedolith pour sa réponse rapide et précise qui règle le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Erreur code vba état/sous-états
    Par marg0t dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/08/2013, 14h20
  2. Deux codes pour un même but mais erreur
    Par Proggies dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 30/05/2010, 10h04
  3. Code non fonctionnel sous Firefox
    Par linar009 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 24/07/2006, 16h13
  4. Réponses: 2
    Dernier message: 09/06/2006, 14h38
  5. Code non fonctionnel sous IE
    Par Nip dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2006, 14h59

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