Ecrire dans pied de page WORD depuis Excel avec VBA

Bonjour,

Je ne suis pas parvenu à trouver la réponse sur le forum alors je dois faire appel à vous !

Je souhaiterais, depuis un fichier EXCEL, renseigner le pied de page d'un document Word créé à partir de la macro sous EXCEL. Seulement je n'y parviens pas, avez-vous une idée ?

Je poste ici mon fichier EXCEL

Merci à vous !

JB

Bonjour,

A adapter :

VBA Word est plus difficile à manier car l'enregistreur de macro n'a pas la même souplesse que pour Excel. Plutôt que de travailler en "late binding" comme vous le faites, mettez au point votre code en référençant Word (early binding) pour bénéficier de l'intellisens. (Une fois instanciées vos variables Word, un point derrière les variables vous donne accès aux propriétés et méthodes possibles pour la variable, vous allez gagner un temps fou).

Une fois votre code au point, vous pourrez repasser en late binding en déclarant vos variables en tant qu'Object. Cependant, les paramètres Wd.... ne seront plus utilisables, il vous faudra utiliser les valeurs numériques cf : Fileformat:=12 par exemple.

Les pieds de pages et entêtes sont des parties de la collection Sections.

Sub ECRIRE_word()

Dim AppWord As Word.Application
Dim DocWord As Word.Document
Dim Chemin As String

     Chemin = ActiveWorkbook.Path & "\Essai doc 2022-05-01 V1.docx"
     Set AppWord = CreateObject("Word.Application")

       ' Création d'un nouveau document :
     With AppWord
          .Visible = True
          Set DocWord = .Documents.Add
         ' Ecriture d'un petit texte dans ce nouveau document :
          .Selection.TypeText "Nous sommes le " & Date
          With DocWord
               .Sections(1).Footers(1).Range.Text = "Nous sommes le " & Date
               .SaveAs2 Filename:=Chemin, FileFormat:=12

          End With
     End With

     With DocWord
          .Close True
     End With

     AppWord.Quit

   Set DocWord = Nothing
   Set AppWord = Nothing

End Sub

Merci pour votre retour Eric mais là je suis perdu

Par quoi dois-je commencer ?

Merci

JB

La question était d'écrire dans le pied de page. La réponse est dans cette ligne, vous avez juste à modifier le contenu.

.Sections(1).Footers(1).Range.Text = "Nous sommes le " & Date

Pour le reste, ne modifiez rien si vous avez juste cela à faire.

Merci Éric, seulement j'ai un message d'erreur à l'exécution de la macro :(

Vous avez réussi à la faite fonctionner de votre côté ?

Sinon, pour référencer Word. Dans l'éditeur VBA, Outils / Références, cocher Microsoft Word.

capture

Utilisez ce fichier :

Bonjour JeanBaptisteP, Eric Kergresse,

Si ton but est de n'utiliser que succinctement le pied de page de Word.

Tu peux ajouter ce court code dans ta macro Excel.

Sub ECRIRE_word()

    Dim MonWord As Object
    Set MonWord = CreateObject("Word.Application")
    'Création d 'un nouveau document
    Set DocWord = MonWord.Documents.Add
    'Ecriture d'un petit texte dans ce nouveau document :
    MonWord.Selection.TypeText "Nous sommes le " & Date
    'Ecriture sur Pied de page
    With DocWord
    .Sections(1).Footers(1).Range.Text = "Bonjour à tous"
    End With
    MonWord.Visible = True

End Sub

Merci Éric et Xcellus je vais regarder ça de plus près !

Sinon j'ai ouvert un autre sujet sur lequel je bloque.Si vous avez la gentillesse de regarder c'est par ici =》

Créer étiquettes fichier Word depuis tableau Excel

Hier à 00:26JJeanBaptisteP

Merci

Jb

Que reste-t-il comme problème ?

Tout est expliqué dans le sujet figurant dans le lien.

Je dois convertir chaque ligne de la colonne A de mon classeur de donnés sur 1 étiquette. Seulement je n'ai que 40 étiquettes sur le doc Word alors que mon classeur de données Excel peut comporter 200 lignes voire plus. Quelle méthode adopter pour créer 200 étiquettes si il y a 200 cellules dans la colonne A de mon classeur données ?

un grand merci en tout cas !

JB

Ce ne serait pas plus simple d'éditer les étiquettes directement à partir d'Excel ? Quelle est la plus-value de passer par Word ?

Car le fournisseur d'étiquettes a donné un modèle Word, c'est la marque AVERY. C'est pour cela que je dois utiliser Word tout en sachant que mes données proviennent de Excel

JB

Pour régler votre problème, la solution la plus simple consisterait à transformer votre fichier Etiquette.doc en un fichier modèle .dotx. Et une fois créée l'instance Word, d'enclencher une boucle pour créer un nouveau doc d'après ce modèle en fonction du rapport DerniereLigne Excel / 40.

Merci pour votre proposition Éric mais comment faire tout cela ?

J'ai réussi à créer le document en modèle ".dotx"

Seulement je n'ai pas de vision sur la suite de mon projet :/

JB

Bonjour Eric, bonjour à tous,

Merci pour votre retour. Je pensais faire différemment, mais je bloque sur le développement de la macro. Je m'explique:

Vérifier si le nombre de ligne en colonne A du classeur "données" est > 40

Si oui, alors on applique le code ci-dessous, c'est à dire qu'on renseigne les 40 étiquettes du doc Word avec la valeur des 40 premières cellules de la colonne A, on imprime le doc Word, on supprime les 40 premières lignes du doc Excel "Données". En suite on vérifie à nouveau si le nombre de ligne en colonne A du classeur "données" est toujours > 40. Si oui on répète cette procédure et ainsi de suite. C'est sur ce point que je bloque :/

nb_ligne = Worksheets(2).Range("A65536").End(xlUp).Row
If (nb_ligne) > 40
For i = 1 To 40
'les signets du document Word sont nommés Blank_MP1_panel1 , Blank_MP1_panel2 , Blank_MP1_panel3
With WordDoc.Bookmarks("Blank_MP1_panel" & i).Range
.Text = Worksheets(2).Cells(i, 1) & vbCrLf & vbCrLf & Worksheets(2).Cells(i, 4) & vbCrLf & vbCrLf & Worksheets(2).Cells(i, 5)
.Font.Name = "arial"
.Font.Size = 10
.Font.Bold = True
.Font.Italic = False
.Font.Color = RGB(3, 34, 76)
End With
Next i

WordApp.Visible = False

WordApp.ActiveDocument.PrintOut

Worksheets(2).Rows("1:40").Select
Selection.Delete Shift:=xlUp

Si non ( le nombre de ligne en colonne A du classeur "données" est < 40) alors:

nb_ligne = Worksheets(2).Range("A65536").End(xlUp).Row
If (nb_ligne) < 40
For i = 1 To Worksheets(2).Range("A" & Rows.Count).End(xlUp).Row
'les signets du document Word sont nommés Blank_MP1_panel1 , Blank_MP1_panel2 , Blank_MP1_panel3
With WordDoc.Bookmarks("Blank_MP1_panel" & i).Range
.Text = Worksheets(2).Cells(i, 1) & vbCrLf & vbCrLf & Worksheets(2).Cells(i, 4) & vbCrLf & vbCrLf & Worksheets(2).Cells(i, 5)
.Font.Name = "arial"
.Font.Size = 10
.Font.Bold = True
.Font.Italic = False
.Font.Color = RGB(3, 34, 76)
End With
Next i

WordApp.Visible = False

WordApp.ActiveDocument.PrintOut

Est-ce possible de réaliser une boucle avec tous ces éléments ? Une boucle While ?

Merci à vous :)

JB

Bonjour à tous,

Le code proposé par XCellus me convient bien. Par contre j'aurais aimé que le pied de page soit centré mais je n'ai pas trouvé sur le forum le code à ajouter. Auriez-vous une idée s'il vous plait ?

Sub ECRIRE_word()

    Dim MonWord As Object
    Set MonWord = CreateObject("Word.Application")
    'Création d 'un nouveau document
    Set DocWord = MonWord.Documents.Add
    'Ecriture d'un petit texte dans ce nouveau document :
    MonWord.Selection.TypeText "Nous sommes le " & Date
    'Ecriture sur Pied de page
    With DocWord
    .Sections(1).Footers(1).Range.Text = "Bonjour à tous"
    End With
    MonWord.Visible = True

End Sub

Merci à vous

JB

Rechercher des sujets similaires à "ecrire pied page word vba"