Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Exportation d'une succession de texte vers un seul signet word ?

bilbinou

XLDnaute Nouveau
Bonjour à tous !

Je voulais savoir s'il était possible d'exporter successivement le contenu d'une TextBox vers un signet Word.

J'expose mon problème: j'ai un bouton de commande qui me permet d'exporter le contenu d'une TextBox dans un document Word déjà ouvert vers un signet se trouvant à un endroit précis du document.
Le code : Word.ActiveDocument.Bookmarks ("signet1").Range = TextBox1.Value me permet de faire cette envoi.
Néanmoins, après cette première exportation, le contenu de la TextBox1 change par la suite pour proposer un autre texte. J'aimerai que lorsque l'on appuie de nouveau sur le bouton de commande, le nouveau texte envoyé vienne s'insérer en dessous du texte qui a été exporté avant (et ceci pour plusieurs textes).

Faut-il faire une incrémentation de signet et donc avoir plusieurs signets de type : signet1, signet2, signet3 dans le document word ou existe-t-il une méthode qui permet de ne pas avoir à créer plusieurs signets ? (peut-être un seul signet où on viendrait copier le range, exporter le texte puis coller ce range en dessous du texte ? De cette façon on garderai le même nom pour le signet ... je ne sais pas si ce que je propose est possible).

Je remercie d'avance ceux qui pourront m'apporter une réponse !

PS : si j'ai mal exposé mon problème et qu'il faut le classeur ou des captures d'écran, n'hésitez pas à me le signaler
 
Solution
Bonjour bilbinou, le forum,

Concernant l'activation de Word voyez ce fichier (3) :
VB:
Sub Remplacer()
Dim nom As String, texte As String, Wapp As Object, deb As Long
nom = "toto" 'nom du signet Word, à adapter
texte = Trim(Replace(TextBox1, vbCrLf, vbLf)) 'texte à ajouter
If texte = "" Then Exit Sub
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le document Word !", 48: Exit Sub
Wapp.Visible = True
With Wapp.ActiveDocument
    If .Path <> "" Then ThisWorkbook.FollowHyperlink .FullName 'force l'activation de Word
    deb = .Bookmarks(nom).Start 'début du signet
    If Err Then MsgBox "Le signet n'existe pas !", 48: GoTo 1
    texte = .Bookmarks(nom).Range.Text & vbLf & texte & vbLf...

job75

XLDnaute Barbatruc
Bonjour bilbinou, le forum,

Concernant l'activation de Word voyez ce fichier (3) :
VB:
Sub Remplacer()
Dim nom As String, texte As String, Wapp As Object, deb As Long
nom = "toto" 'nom du signet Word, à adapter
texte = Trim(Replace(TextBox1, vbCrLf, vbLf)) 'texte à ajouter
If texte = "" Then Exit Sub
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Err Then MsgBox "Ouvrez le document Word !", 48: Exit Sub
Wapp.Visible = True
With Wapp.ActiveDocument
    If .Path <> "" Then ThisWorkbook.FollowHyperlink .FullName 'force l'activation de Word
    deb = .Bookmarks(nom).Start 'début du signet
    If Err Then MsgBox "Le signet n'existe pas !", 48: GoTo 1
    texte = .Bookmarks(nom).Range.Text & vbLf & texte & vbLf 'encadrement par des renvois à la ligne
    .Bookmarks(nom).Range.Text = texte 'remplace le texte contenu
    .Bookmarks.Add nom, .Range(deb, deb + Len(texte) - 1) 'recrée le signet
End With
1 AppActivate Wapp.Caption 'si le document n'est pas sur le disque dur
End Sub
ThisWorkbook.FollowHyperlink force l'activation de Word si le document est sur le disque dur.

A+
 

Pièces jointes

  • Fichier Excel(3).xlsm
    24.8 KB · Affichages: 7
  • Doc Word.docx
    11.7 KB · Affichages: 2

bilbinou

XLDnaute Nouveau
Bonjour,

J'ai en effet tester sur les fichiers que vous avez joints et j'ai pu adapter le code à mon projet.
Tout fonctionne parfaitement !
Merci beaucoup pour ce temps que vous m'avez consacré ! Cela m'a permis d'en apprendre beaucoup que ce soit les propriétés TRIM, vblf, vbcrlf , len ...
Une très bonne journée à vous et bonne continuation !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…