Convertir Excel en Word, Excel VBA

Convertir Excel en Word, Excel VBA

Voici un exemple détaillé de code VBA pour convertir le contenu d’un fichier Excel en un document Word. Ce processus consiste à créer un nouveau document Word, puis à copier le contenu des cellules Excel dans ce document Word de manière structurée. 

Objectifs du code : 

  • Copier des données d’Excel (par exemple une plage de cellules) dans Word. 
  • Mettre en forme ce contenu dans Word. 
  • Générer un fichier Word à partir d’Excel. 

Code VBA pour convertir Excel en Word 

Sub ConvertirExcelEnWord() 
    ' Déclare les objets nécessaires 
    Dim objWord As Object 
    Dim objDoc As Object 
    Dim ws As Worksheet 
    Dim cell As Range 
    Dim Plage As Range 
    Dim i As Long, j As Long 
    ' Crée une instance de Word 
    On Error Resume Next 
    Set objWord = CreateObject("Word.Application") 
    On Error GoTo 0 
    ' Si Word n'est pas ouvert, le démarrer 
    If objWord Is Nothing Then 
        MsgBox "Word n'a pas pu être lancé", vbCritical 
        Exit Sub 
    End If 
    ' Rendre Word visible (optionnel) 
    objWord.Visible = True 
    ' Crée un nouveau document Word 
    Set objDoc = objWord.Documents.Add 
    ' Référence la feuille de travail Excel actuelle 
    Set ws = ThisWorkbook.Sheets("Feuille1") ' Remplacez "Feuille1" par le nom de votre feuille 
    ' Définir la plage de cellules à copier (par exemple A1:B10) 
    Set Plage = ws.Range("A1:B10") ' Remplacez la plage par celle que vous voulez 
    ' Copier la plage de cellules dans Word 
    Plage.Copy 
    ' Colle les cellules dans le document Word sous forme de tableau 
    objDoc.Content.Paste 
    ' Optionnel: Mettre en forme le tableau dans Word 
    With objDoc.Tables(1) 
        .AutoFitBehavior (2) ' Ajuster la largeur des colonnes automatiquement 
        .Style = "Table Grid" ' Applique un style de tableau 
        .Rows.Alignment = 1 ' Aligner les lignes au centre 
    End With 
    ' Ajout d'un titre au document 
    objDoc.Paragraphs.Add 
    objDoc.Paragraphs.Last.Range.Text = "Tableau Exporté depuis Excel" 
    objDoc.Paragraphs.Last.Range.Style = "Titre 1" 
    ' Sauvegarder le document Word 
    Dim chemin As String 
    chemin = Application.GetSaveAsFilename("C:\VotreDossier\MonDocument.docx", "Fichiers Word (*.docx), *.docx") 
    If chemin <> "False" Then 
        objDoc.SaveAs chemin 
        MsgBox "Document Word enregistré avec succès!", vbInformation 
    Else 
        MsgBox "Enregistrement annulé.", vbExclamation 
    End If 
    ' Fermer Word 
    objDoc.Close 
    objWord.Quit 
    ' Libérer la mémoire 
    Set objDoc = Nothing 
    Set objWord = Nothing 
End Sub

Explications détaillées du code : 

1. Création d’une instance de Word

Set objWord = CreateObject("Word.Application") 

Cette ligne crée un objet Word via OLE Automation. Si Word est déjà ouvert, il l’utilisera, sinon il le lancera. 

2. Vérification si Word est accessible

If objWord Is Nothing Then 
    MsgBox "Word n'a pas pu être lancé", vbCritical 
    Exit Sub 
End If

Si Word ne peut pas être lancé ou trouvé, un message d’erreur apparaît. 

3. Création d’un nouveau document Word

Set objDoc = objWord.Documents.Add 

Cette ligne crée un nouveau document Word où nous allons coller les données d’Excel. 

4. Référence à la feuille de travail Excel

Set ws = ThisWorkbook.Sheets("Feuille1") 

On fait référence à la feuille de calcul d’Excel dont les données seront copiées. Remplacez « Feuille1 » par le nom de la feuille souhaitée. 

5. Définition de la plage de cellules à copier

Set Plage = ws.Range("A1:B10") 

On définit la plage de cellules à copier. Vous pouvez modifier cette plage selon vos besoins. 

6. Copie des cellules Excel dans Word

Plage.Copy 
objDoc.Content.Paste

La méthode Copy copie la plage sélectionnée dans Excel, et la méthode Paste colle ce contenu dans le document Word. 

7. Mise en forme du tableau Word :

With objDoc.Tables(1) 
    .AutoFitBehavior (2) ' Ajuster la largeur des colonnes automatiquement 
    .Style = "Table Grid" ' Applique un style de tableau 
    .Rows.Alignment = 1 ' Aligner les lignes au centre 
End With

Cela ajuste la taille des colonnes du tableau et applique un style prédéfini à celui-ci. Vous pouvez personnaliser ces options selon vos préférences. 

8. Ajout d’un titre au document Word

objDoc.Paragraphs.Add 
objDoc.Paragraphs.Last.Range.Text = "Tableau Exporté depuis Excel" 
objDoc.Paragraphs.Last.Range.Style = "Titre 1"

Ici, nous ajoutons un titre au début du document pour indiquer que ce tableau provient d’Excel. 

9. Enregistrement du document Word

chemin = Application.GetSaveAsFilename("C:\VotreDossier\MonDocument.docx", "Fichiers Word (*.docx), *.docx") 
If chemin <> "False" Then 
    objDoc.SaveAs chemin 
    MsgBox "Document Word enregistré avec succès!", vbInformation 
Else 
    MsgBox "Enregistrement annulé.", vbExclamation 
End If

Cette section ouvre une boîte de dialogue permettant de choisir où enregistrer le fichier Word. Si l’utilisateur choisit un emplacement et un nom de fichier, le document est sauvegardé à cet endroit. 

10. Fermeture de Word

objDoc.Close 
objWord.Quit

Le document Word est fermé et Word est quitté. 

11. Libération des objets :  

Set objDoc = Nothing 
Set objWord = Nothing

Les objets Word sont libérés de la mémoire pour éviter les fuites de mémoire. 

Conclusion : 

Ce code permet de copier une plage de cellules d’Excel dans un document Word, de mettre en forme ce tableau dans Word, et de sauvegarder le fichier. Vous pouvez ajuster les paramètres selon vos besoins pour personnaliser les données copiées ou la mise en forme du document Word. 

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x