Word Automatiser un Document Word

Arch974

XLDnaute Junior
Bonjour,

J'ai un document Word que j'ai l'habitude d'utiliser et je voudrais pouvoir automatiser la saisie de certaines parties de mon texte (en fond jaune). C'est à dire j'aimerais si possible qu'en ouvrant mon fichier qu'il y est un formulaire qui apparaît et me demande de remplir les parties à modifier uniquement (en jaune).

Merci d'avance

Cordialement.
 

Pièces jointes

  • EXEMPLE WORD.docx
    16.4 KB · Affichages: 4
Solution
Bonjour Arch974,

Voyez le fichier .docm joint et cette macro dans l'UserForm :
VB:
Private Sub CommandButton1_Click() 'bouton Valider
Dim nlig&, p As Paragraph, deb&, c As Range, fin&, n%, x$
nlig = 3 'nombre de lignes colorées à traiter = nombre de TextBox, à adapter
For Each p In ActiveDocument.Paragraphs
    deb = 0
    For Each c In p.Range.Characters
        If c.HighlightColorIndex = wdYellow Then 'jaune
            If deb = 0 Then deb = c.Start
            fin = c.End
        End If
    Next c
    If deb Then
        n = n + 1
        If n > nlig Then Exit For
        x = Trim(Me("TextBox" & n))
        If x <> "" Then ActiveDocument.Range(deb, fin) = x
    End If
Next p
Unload Me
End Sub
Elle remplace les textes...

job75

XLDnaute Barbatruc
Bonjour Arch974,

Voyez le fichier .docm joint et cette macro dans l'UserForm :
VB:
Private Sub CommandButton1_Click() 'bouton Valider
Dim nlig&, p As Paragraph, deb&, c As Range, fin&, n%, x$
nlig = 3 'nombre de lignes colorées à traiter = nombre de TextBox, à adapter
For Each p In ActiveDocument.Paragraphs
    deb = 0
    For Each c In p.Range.Characters
        If c.HighlightColorIndex = wdYellow Then 'jaune
            If deb = 0 Then deb = c.Start
            fin = c.End
        End If
    Next c
    If deb Then
        n = n + 1
        If n > nlig Then Exit For
        x = Trim(Me("TextBox" & n))
        If x <> "" Then ActiveDocument.Range(deb, fin) = x
    End If
Next p
Unload Me
End Sub
Elle remplace les textes surlignés en jaune par les contenus des TextBox.

Je n'ai mis que 3 TextBox, à vous de compléter, il en faut 16.

A+
 

Pièces jointes

  • EXEMPLE WORD(1).docm
    26.8 KB · Affichages: 10

Arch974

XLDnaute Junior
Bonjour Arch974,

Voyez le fichier .docm joint et cette macro dans l'UserForm :
VB:
Private Sub CommandButton1_Click() 'bouton Valider
Dim nlig&, p As Paragraph, deb&, c As Range, fin&, n%, x$
nlig = 3 'nombre de lignes colorées à traiter = nombre de TextBox, à adapter
For Each p In ActiveDocument.Paragraphs
    deb = 0
    For Each c In p.Range.Characters
        If c.HighlightColorIndex = wdYellow Then 'jaune
            If deb = 0 Then deb = c.Start
            fin = c.End
        End If
    Next c
    If deb Then
        n = n + 1
        If n > nlig Then Exit For
        x = Trim(Me("TextBox" & n))
        If x <> "" Then ActiveDocument.Range(deb, fin) = x
    End If
Next p
Unload Me
End Sub
Elle remplace les textes surlignés en jaune par les contenus des TextBox.

Je n'ai mis que 3 TextBox, à vous de compléter, il en faut 16.

A+
Merci ça fonctionne très bien !
 

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Arch974, bonsoir job75

J'ai utilisé des signets pour le fichier. C'est une procédure un peu plus longue mais bon je n'ai pas LA connaissance de notre ami job75 que je salue au passage.

VB:
Comment procéder : 
1/ Insérer des signets dans ton document (tes zones surlignées en jaune) – Je vais faire un exemple avec 2 signets Nom & Prénom.
     Alt + F11 pour se rendre dans l’éditeur VBE
2/ Créer un Userform sous VBA avec dans le présent exemple 2 TextBoxs nommés TextBoxNom et TextBoxPrénom (Si dans ton fichier, les noms et sociétés reviennent fréquemment, il faudra plutôt utiliser des ComboBoxs).
3/ A la fermeture, ne pas enregistrer les modifications apportées au fichier sous peine de ré ouvrir le document avec les données de la veille ou alors exécuter une macro pour effacer les enregistrements apportés à la fermeture du fichier.
Bonne soirée à toutes & à tous
@+ Eric c
Doc Word.gif
 

Pièces jointes

  • Je soussigné .docm
    19.3 KB · Affichages: 4

Arch974

XLDnaute Junior
Bonsoir le forum
Bonsoir Arch974, bonsoir job75

J'ai utilisé des signets pour le fichier. C'est une procédure un peu plus longue mais bon je n'ai pas LA connaissance de notre ami job75 que je salue au passage.

VB:
Comment procéder :
1/ Insérer des signets dans ton document (tes zones surlignées en jaune) – Je vais faire un exemple avec 2 signets Nom & Prénom.
     Alt + F11 pour se rendre dans l’éditeur VBE
2/ Créer un Userform sous VBA avec dans le présent exemple 2 TextBoxs nommés TextBoxNom et TextBoxPrénom (Si dans ton fichier, les noms et sociétés reviennent fréquemment, il faudra plutôt utiliser des ComboBoxs).
3/ A la fermeture, ne pas enregistrer les modifications apportées au fichier sous peine de ré ouvrir le document avec les données de la veille ou alors exécuter une macro pour effacer les enregistrements apportés à la fermeture du fichier.
Bonne soirée à toutes & à tous
@+ Eric c
Regarde la pièce jointe 1114103
Bonsoir @Eric C merci pour ta participation j'apprécie !
 

job75

XLDnaute Barbatruc
Bonjour Arch974, Eric C,

Finalement il vaut mieux utiliser les signets, c'est plus simple et il est facile de les rétablir :
VB:
Private Sub CommandButton1_Click() 'bouton Valider
Dim signet, n%, br As Range, pos&, x$
signet = Array("Nom1", "Prenom1", "Age1") 'liste des signets à étudier, autant que de TextBox
With ThisDocument
    For n = 0 To UBound(signet)
        Set br = .Bookmarks(signet(n)).Range
        pos = br.Start
        x = Trim(Me("TextBox" & n + 1))
        If x <> "" Then
            br = x 'écrase le signet
            .Bookmarks.Add signet(n), .Range(pos, pos + Len(x)) 'rétablit le signet
        End If
    Next
End With
Unload Me
End Sub
A+
 

Pièces jointes

  • EXEMPLE WORD(2).docm
    27.1 KB · Affichages: 11

Discussions similaires