Export Excel vers Word en utilisant des signets (perte des signets)

Bonjour

J'édite une macro permettant d'exporter des données de EXCEL vers un modèle WORD via des signets dans le WORD.

Le soucis est que l'export EXCEL -> WORD efface les signets du WORD (que je souhaite pouvoir utiliser pour faire du WORD -> EXCEL plus tard).

Je fais donc appelle à la fonction ci-dessous. Avec :

MyBM = Nom du signet (à chercher dans le WORD)

stTexte = TEXTE issu de excel à exporter vers WORD

LE soucis est que lorsque je lance la macro j'ai message d'erreur suivant à cette ligne:

Set MyRng = Word.Application.ActiveDocument.Range(Start:=intI, End:=intI + Len(stTexte))

Run-time error '13': Type mismatch

Pourriez vous m'aidier?

Function RemplacerTexteSignet(MyBM As Bookmark, stTexte As String) As Boolean

'Déclaration des variables

'intI pour le début de notre Bookmark
Dim intI As Long

'stBM pour le nom de notre Bookmark
Dim stBM As String

'un objet range pour le range de notre Bookmark
Dim MyRng As Range

'Récupération du nom du signet

stBM = MyBM.Name

'Récupération de la position de départ de notre signet
intI = MyBM.Start

'Affectation du texte à notre Bookmark
MyBM.Range.Text = stTexte

'Affectation de l'objet Range, où la position de départ est
' la même que pour le Bookmark et la fin sera le début augmenté de la longueur du texte
Set MyRng = Word.Application.ActiveDocument.Range(Start:=intI, End:=intI + Len(stTexte))

' Crée le Bookmark sur l'objet Range
ActiveDocument.Bookmarks.Add stBM, MyRng
Set MyRng = Nothing

'Affectation de la valeur True à la fonction
emplacerTexteSignet = True

End Function

help!

Bonjour,

un essai

Function RemplacerTexteSignet(MyBM As Bookmark, stTexte As String) As Boolean

    ' Déclaration des variables
    Dim stBM As String  ' Nom du signet
    Dim intI As Long    ' Position de début du signet
    Dim docWord As Object ' Objet Document Word

    ' Récupération du nom du signet
    stBM = MyBM.Name

    ' Récupération de la position de départ de notre signet
    intI = MyBM.Start

    ' Référence au document Word actif
    Set docWord = Word.Application.ActiveDocument

    ' Affectation du texte à notre signet
    MyBM.Range.Text = stTexte

    ' Recherche et remplacement du texte dans le document Word
    docWord.Content.Find.Execute FindText:=stBM, ReplaceWith:=stTexte, Replace:=wdReplaceOne

    ' Ajout ou mise à jour du signet
    If docWord.Bookmarks.Exists(stBM) Then
        docWord.Bookmarks(stBM).Delete ' Supprime le signet existant
    End If
    docWord.Bookmarks.Add stBM, docWord.Range(intI, intI + Len(stTexte))

    ' Affectation de la valeur True à la fonction
    RemplacerTexteSignet = True

End Function

Bonne journée

Oiseau bleu

Merci, ca fonctionne très bien!

Par contre, si j'ai trop de caractères dans ma cellule excel, j'ai l'erreur suivante! Il semble y avoir une limite de caractère sur une variable String?

Y a t"il une solution? ou faut il limiter la taille de la chaine de caractères ?

sans titre

Help! Please

Bonjour,

Au lieu de définir votre variable "String" définissez votre variable en "Variant".

Sinon, il faut diviser votre chaine de caractères.

Bonne journée,

Oiseau bleu

Rechercher des sujets similaires à "export word utilisant signets perte"