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.