Comment envoyer un texte avec sommaire automatique dans Word depuis Excel en 1 clic ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, nous allons générer du contenu dans Word directement à partir d'Excel.

En effet, dans une vidéo précédente, nous avions vu comment exploiter la puissance de Chat GPT pour générer du contenu directement sur une feuille de calcul.

Cependant, Excel n’a pas vocation à gérer du texte, c’est pourquoi je vais vous montrer comment utiliser un simple bouton pour l’'exporter directement dans Word.

Nous verrons également comment personnaliser le style des titres et surtout comment créer un sommaire automatisé.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Comment exporter du texte contenu dans une cellule dans WORD

 

   1.1. Enregistrement du contenu de la page dans une variable VBA

 

Pour illustrer ce tutoriel, nous allons utiliser le fichier créé dans le tutoriel « Comment utiliser l'intelligence artificielle Chat GPT dans Excel ? - Excel formation » dans lequel nous avons vu comment faire écrire un livre à Chat GPT très rapidement en cliquant sur un simple bouton.

Seulement, le texte que nous avions écrit étant stocké dans des cellules Excel, celui-ci n’est facilement lisible ni transmissible.

Excel formation - excel to word - 01

Pour exporter le contenu d'Excel vers Word, nous allons créer une nouvelle macro VBA que nous nommerons « exportPlanWord » au sein du projet :

Sub exportPlanWord()
    
End Sub

Ensuite, nous allons commencer par créer une variable de type « String » appelée « texte », qui va stocker le texte que nous souhaitons exporter.

Nous y enregistrons dans un premier temps la valeur de la cellule A1 dans laquelle se trouve le titre du livre :

    Dim texte As String
    texte = [a1].Value

Ensuite, nous allons utiliser une boucle Do While pour y stocker tous les couples de cellules que nous retrouvons dans les colonnes A et B les uns à la suite des autres :

   Dim c as Range
   Set c = [a2]
   Do While c <> ""
        ' Ajout du type de titre, du contenu de la cellule c  et de la cellule qui suit c à la variable texte
        texte = texte & vbNewLine &  vbNewLine & c & vbNewLine & Replace(c.Offset(0, 1), c,  "")
        ' Déplacement à la cellule suivante
        Set c = c.Offset(1, 0)
    Loop

Nous concaténons avec une esperluette (« & ») ainsi à la suite de la variable le titre de chaque partie (situé dans la cellule correspondant à la variable c) ainsi que la cellule située directement sur sa droite, que nous obtenons grâce à l’instruction Offset, laquelle permet d’effectuer un décalage de cellule.

Pour finir, avant de redémarrer la boucle, nous passons sur la cellule située juste en dessous.

Si nous souhaitons contrôler le contenu de la variable « texte », nous pouvons utiliser un « Debug.Print » pour l’afficher dans la fenêtre d’exécution.

Excel formation - excel to word - 02

 

   1.2. Création d'un document Word en VBA et saisi des données

 

Maintenant que nous avons stocké le contenu de la page dans une variable, nous allons créer un document Word en utilisant VBA.

Pour cela, nous allons utiliser la fonction « CreateObject » pour créer une instance de l'application Word.

    ' Déclaration de la variable aWord
    Dim aWord As Object
    ' Chargement une instance de Word
    Set aWord = CreateObject("Word.Application") 

Ensuite, nous affichons l’application Word avec la propriété Visible à laquelle nous donnons la valeur de True :

    aWord.Visible = True

Puis, nous allons créer un nouveau document Word en utilisant la méthode « Documents.Add » afin d’y ajouter du texte en utilisant la méthode « InsertAfter ». Nous allons insérer le texte stocké dans la variable « texte » :

    aWord.documents.Add
    aWord.Selection.InsertAfter texte

 

Excel formation - excel to word - 03

 

2. Modifier la mise en forme des titres depuis Excel

 

   2.1. Appliquer des styles aux titres

 

Maintenant que le texte est inséré dans le document Word, voyons comment personnaliser le style affecté aux titres.

Pour cela, nous allons revenir dans la boucle de génération de la variable « texte », afin d’insérer des balises devant les titres (« [TITRE-2] » et « [TITRE-3]).

Pour cela, nous pourrons utiliser une astuce que nous avions déjà utilisée dans un tutoriel précédent, qui consiste à compter le nombre de points que nous retrouvons sur les 6 premiers caractères de chaque paragraphe. Nous pourrons alors utiliser une petite astuce qui consiste à compter la différence entre la chaîne constituée des 6 premiers caractères, et la même chaîne dans laquelle nous avons retiré les points :

        Dim nbPoints As Integer, typeTitre As String
        ' Initialisation de nbPoints avec la longueur des  points dans la cellule c
        nbPoints = 6 - Len(Replace(Left(Trim(c), 6),  ".", ""))

Ainsi, si la variable « nbPoints » est égale à 1, alors il s’agira d’un titre de niveau 2 (sous la forme « 1. Premier titre ») et s’il en contient deux alors, ce sera un titre de niveau 3 (sous la forme « 1.1. Premier sous-titre ») :

        If nbPoints = 1 Then
            typeTitre = "[TITRE-2]"
        ElseIf nbPoints = 2 Then
            typeTitre = "[TITRE-3]"
        End If

Nous modifierons ensuite la chaine « texte » pour inclure ces balises :

        texte = texte & vbNewLine  & vbNewLine & typeTitre & c & vbNewLine & Replace(c.Offset(0,  1), c, "")

Excel formation - excel to word - 04

Maintenant, nous allons pouvoir appliquer des styles aux paragraphes de notre texte.

Tout d’abord, le premier paragraphe sera toujours le « Titre 1 » :

aWord.activedocument.Paragraphs(1).Range.Style  = "Titre 1"

Puis, nous passerons tous les autres paragraphes en revue pour appliquer un style en fonction de la présence de balise au tout début :

    Dim para As Object
   For Each para In aWord.activedocument.Paragraphs
        Dim balise As String
        balise = Left(para, 9)
        
        If balise = "[TITRE-2]" Then
            para.Range.Style = "Titre 2"
        ElseIf balise = "[TITRE-3]" Then
            para.Range.Style = "Titre 3"
        End If
    Next

Comme vous le voyez, pour appliquer un style sur un paragraphe, nous utilisons la propriété « Range.Style » du paragraphe.

Pour finir, il ne reste plus qu’à supprimer les balises du document en utillsant la méthode « Find » :

    With aWord.Selection.Find
        .Text = "[TITRE-2]"
        .replacement.Text = ""
        .Execute Replace:=2
        
        .Text = "[TITRE-3]"
        .replacement.Text = ""
        .Execute Replace:=2
    End With

 

   2.2. Modifier les styles depuis Excel

 

Maintenant que les titres possèdent leurs propres styles, nous allons pouvoir modifier les propriétés de ces derniers en utilisant les propriétés correspondantes :

    With aWord.ActiveDocument.Styles("Titre 1")
        .Font.Size = 36
    End With
    
    With aWord.activedocument.Styles("Titre 2")
        .Font.Size = 16
        
        .ParagraphFormat.Borders(-1).LineStyle = 1
        .ParagraphFormat.Borders(-2).LineStyle = 1
        .ParagraphFormat.Borders(-3).LineStyle = 1
        .ParagraphFormat.Borders(-4).LineStyle = 1
        
        .ParagraphFormat.Alignment = 1
        .ParagraphFormat.SpaceAfter = 12
        .ParagraphFormat.pagebreakbefore = True
        
        
    End With

Si vous souhaitez obtenir plus d’informations sur ces lignes, je vous invite à consulter la vidéo de présentation de ce tutoriel dans laquelle nous revenons sur chaque point du tutoriel dans le détail.

Dans l'ensemble, la mise en forme des titres permet de rendre un document plus clair et plus facile à lire, et il est donc important de prendre le temps de bien choisir les styles appliqués.

Excel formation - excel to word - 05

 

3. Créer un sommaire automatique dans Word depuis Excel

 

Nous en arrivons à la troisième partie de ce tutoriel, dans lequel nous allons voir comment créer un sommaire automatique dans Word directement à partir d'Excel.

Ce sommaire doit également nous nous permettre d'accéder directement à l'endroit voulu au sein du document.

Pour cela, nous allons tout d’abord nous positionner tout en haut de la deuxième page du document avec la ligne suivante :

    aWord.Selection.Goto what:=1, which:=1, Count:=2

Nous allons ensuite insérer un saut de page pour que la suite du contenu se positionne sur la troisième page :

    aWord.Selection.insertbreak

Maintenant, nous allons revenir sur la deuxième page pour saisir le titre « SOMMAIRE » :

    aWord.Selection.Goto what:=1, which:=1, Count:=2 
    aWord.Selection.typetext Text:="SOMMAIRE"

Il ne reste plus qu’à insérer le sommaire en lui-même juste après :

        aWord.ActiveDocument.TablesOfContents.Add  Range:=aWord.Selection.Range, UpperHeadingLevel:=2, LowerHeadingLevel:=3, UseHyperlinks:=True 

Pour insérer ce sommaire, nous utilisons donc la méthode « Add » de l’objet « ActiveDocument.TablesOfContents » avec les arguments suivants :

  • Range : permet de définir l’endroit où nous souhaitons insérer le sommaire (ici à l’endroit actuellement actif, c’est-à-dire en dessous du titre « SOMMAIRE »
  • UpperHeadingLevel : permet de spécifier le niveau le plus haut du style de titre utilisé pour le sommaire (« 2 » est le niveau défini du « Titre 2 »)
  • LowerHeadingLevel : permet de spécifier le niveau le plus bas du style de titre utilisé pour le sommaire (« 3 » est le niveau défini du « Titre 3 »)
  • Enfin, comme nous l’avons vu un peu plus tôt, nous souhaitons activer la redirection du sommaire sur les parties du texte correspondantes.

 

Et voilà, il ne reste plus qu’à créer un bouton et le lier avec la macro « exportPlanWord » pour balancer le contenu de la feuille dans un nouveau document Word, avec style et sommaire automatique.

Excel formation - excel to word - 06

 



Articles qui pourraient vous intéresser

Comment remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.