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

VBA Word Discussion :

Erreur 4198 en insérant des renvois avec la fonction insertCrossReference


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Erreur 4198 en insérant des renvois avec la fonction insertCrossReference
    Bonjour,

    je tente de créer des signets automatique dans une partie spécifique et puis de créer des renvois dans la suite du document où l'on trouve la chaine de caractère brute.
    J'ai d'abord tout tester sous word puis j'ai fait une interface dans excel qui permet de modifier le document word.
    Sous word directement cela fonctionne très bien mais quand je passe sous excel je n'arrive plus à insérer mes renvois.
    La ligne d'insertion de renvois (insertCrossReference) provoque une erreur de type 4198 que je ne parviens pas à corriger, quelqu'un a t il une solution ?

    En bref le principe de ma fonction : j'ai une collection de Signet, une collection des paragraphes de mon doc. Le TitreRecherche est le titre de la partie qui contient mes signets que je dois donc passer pour détecter mes chaines de caractères à remplacer par des renvois.
    Une fois que j'ai passé la partie où se trouve mes signets je peux commencer à vérifier si chaque paragraphe contient la chaine de caractère qui correspond à mon signet => si oui j'ajoute un renvoi à la place du texte brut.

    Merci d'avance pour votre aide,
    Cordialement,

    Ci-dessous la fonction de création des renvois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Function CreateRenvois(TitreRecherche As String, TitreStop As String, Doc As Collection, TabSignet As Collection, WordDoc As Variant, WordApp As Variant) As Boolean
     
    Dim ChapitreEntetePasse As Integer
    ChapitreEntetePasse = 0
    Dim Occurrence_signet As String
    Dim i As Integer
    i = 1
     
    For Each ParagraphIt In Doc
        If ChapitreEntetePasse = 0 Then
            If InStr(ParagraphIt.Contenu.Range.Text, TitreRecherche) > 0 Then
                ChapitreEntetePasse = 1
            End If
        ElseIf ChapitreEntetePasse = 1 Then
            If ParagraphIt.Contenu.Range.Style = "Titre 1" Then
                ChapitreEntetePasse = 2
            End If
        Else
            If InStr(ParagraphIt.Contenu.Range.Text, TitreStop) > 0 And ParagraphIt.Contenu.Range.Style = "Titre 1" Then
                Exit For
            End If
     
            For Each SignetIt In TabSignet
                Occurrence_signet = InStr(ParagraphIt.Contenu.Range.Text, SignetIt.Chaine)
                If Occurrence_signet > 0 Then
                    WordDoc.Paragraphs(i).Range.Select
                    posStart = WordApp.Selection.Start
                    WordDoc.Range(Start:=posStart + Occurrence_signet - 1, End:=posStart + Occurrence_signet + Len(SignetIt.Chaine) - 1).Select
                    ' Insertion d'un renvoi
                    WordApp.Selection.InsertCrossReference ReferenceType:="Signet", ReferenceKind:= _
                              wdContentText, ReferenceItem:=SignetIt.nom, InsertAsHyperlink:=True, _
                              IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
                 End If
             Next SignetIt
        End If
        i = i + 1
    Next ParagraphIt
     
    CreateRenvois = True
     
    End Function

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par superlucile Voir le message
    Bonjour,

    De mon point de vue, les paramètres WordDoc et WordApp dans la déclaration de la fonction ne peuvent pas être de type variant, mais de type Object si vous avez instancié Word en late binding ou Word.Document ou Word.Application si vous avez référencé Word dans vos DLL.

    Les variables WordDoc et WordApp ont elles le même nom que celles entrées en paramètres ? Quelle est leur portée : Public ?

    Si vos variables Document et Application sont déclarées public, j'essaierais de les utiliser directement dans la fonction, momentanément, sans passer par les paramètres (juste pour voir).

    Sinon, si vous n'arrivez pas à trouver l'erreur et si vous souhaitez que je regarde, mettez vos documents Excel + Word en ligne sans données confidentielles, ou envoyez les moi en privé.

Discussions similaires

  1. [AJAX] Erreur jQuery au chargement des Images avec upload.js
    Par Toufik83 dans le forum jQuery
    Réponses: 2
    Dernier message: 09/02/2016, 23h01
  2. [FPDF] Concatener des PDF avec la fonction pdf_concat()
    Par Agité dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 08/11/2007, 17h50
  3. Réponses: 5
    Dernier message: 16/11/2006, 07h09
  4. Réponses: 3
    Dernier message: 15/11/2005, 18h50
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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