Export liste colonne Excel vers Word

Résolu/Fermé
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021
- Modifié le 30 mars 2018 à 10:46
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021
- 15 juil. 2018 à 16:33
Bonjour,

Voilà mon petit souci. J'ai une macro (procedure) qui me permet d'exporter les données d'un fichier excel (une feuille) vers Word. Je rajoute une deuxième macro pour faire le même travail, mais depuis une autre feuille du même fichier, mais cela ne m'exporte pas toute la colonne (sachant qu'il y a des cellules vides). ça m'exporte uniquement les deux premières cellules qui deplus, contiennent la même référence. J'aimerais pouvoir exporter les données de ma colonne 33 (AG) sans les doublons. J'ai également le petit souci, car quand je lance la deuxième macro, la 1ère ne fonctionne pas... J'aimerais pouvoir exporter les données des deux feuilles, en même temps.

Je pense qu'il manque clairement quelque chose dans ma procedure...

Merci par avance pour votre aide !

1ère macro

Public Sub Export_List()

Dim WordApp As Object
Dim WordDoc As Object

Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open("Mon doc word")
WordApp.Visible = True

lig1 = 18
While Not IsEmpty(ThisWorkbook.Sheets("Tableaux de Bord").Cells(lig1, 1))
If vale = "" Then
vale = ThisWorkbook.Sheets("Tableaux de Bord").Cells(lig1, 1).Text
Else
vale = vale & Chr(10) & ThisWorkbook.Sheets("Tableaux de Bord").Cells(lig1, 1).Text
End If
lig1 = lig1 + 1
Wend


WordDoc.Bookmarks("Tableau_de_Bord").Range.Text = vale

'WordDoc.Save
'WordDoc.Close

Set WordDoc = Nothing
Set WordApp = Nothing

End Sub


Et la 2ème macro

Public Sub Eport_DLT()

Dim WordApp As Object
Dim WordDoc As Object

Set WordApp = CreateObject("word.application")
Set WordDoc = WordApp.Documents.Open("Mon doc word")
WordApp.Visible = True

lig1 = 6
While Not IsEmpty(ThisWorkbook.Sheets("2018").Cells(lig1, 33))
If vale = "" Then
vale = ThisWorkbook.Sheets("2018").Cells(lig1, 33).Text
Else
vale = vale & Chr(10) & ThisWorkbook.Sheets("2018").Cells(lig1, 33).Text
End If
lig1 = lig1 + 1
Wend

WordDoc.Bookmarks("DLT").Range.Text = vale

'WordDoc.Save
'WordDoc.Close

Set WordDoc = Nothing
Set WordApp = Nothing

End Sub


Merci !


3 réponses

yg_be
Messages postés
19514
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 juin 2022
1 127
Modifié le 30 mars 2018 à 11:36
bonjour, pour ton second soucis, je pense qu'il faut retirer les commentaires de save et close.
pour ton premier soucis, les doublons se suivent-ils toujours?
1
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

30 mars 2018 à 17:00
Bonjour, merci pour ta rapidité de réponse ! Je vais tester en enlevant les lignes mais pourtant ils ne devraient pas être pris dans le code, puisqu'il y a un apostrophe devant. Pour les doublons, oui, ils sesuivent.
0
yg_be
Messages postés
19514
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 juin 2022
1 127 > criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

Modifié le 30 mars 2018 à 17:33
je voulais suggérer de garder les lignes et de retirer les apostrophes.
Option Explicit

Public Sub Eport_DLT()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim ancien As String, nouveau As String, vale As String
Dim lig1 As Long
Dim sh As Worksheet

Set sh = ThisWorkbook.Sheets("2018")
ancien = ""
For lig1 = 6 To sh.UsedRange.Rows(sh.UsedRange.Rows.Count).row
    nouveau = sh.Cells(lig1, 33).Text
    If nouveau <> "" And nouveau <> ancien Then
        If vale = "" Then
            vale = nouveau
        Else
            vale = vale & Chr(10) & nouveau
        End If
    End If
    ancien = nouveau
Next lig1
Set WordApp = New Word.Application
Set WordDoc = WordApp.Documents.Open("Mon doc word")
WordApp.Visible = True
WordDoc.Bookmarks("DLT").Range.Text = vale
WordDoc.Save
WordDoc.Close
Set WordDoc = Nothing
Set WordApp = Nothing

End Sub
0
Petite précision : En fait, ça me colle uniquement les deux premières cellules, qui ont la même valeur.
0
yg_be
Messages postés
19514
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 juin 2022
1 127 > criscrof
Modifié le 30 mars 2018 à 17:31
sans doute parce que la suivante est vide: tu as écrit ton code pour qu'il s'arrête dès une cellule vide. vois ma suggestion.
0
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

30 mars 2018 à 22:29
Bonsoir,

Désolé de rpondre tardivement, je viens de tester chez moi. mais sous excel 2013... j'ai la version 2010 au boulot.

Le code s'arrete à la première ligne

Dim WordApp As Word.Application

et ouvre la fenetre : Erreur de compilation : type défini par l'utilisateur non défini.
0
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
31 mars 2018 à 08:37
Bonjour,

voir ceci et lire le 1er commentaire

https://excel.developpez.com/faq/?page=Word#LireChampWord

1
yg_be
Messages postés
19514
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 juin 2022
1 127
31 mars 2018 à 09:55
petite amélioration:
Option Explicit

Public Sub Eport_DLT()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim ancien As String, nouveau As String, vale As String
Dim lig1 As Long
Dim sh As Worksheet

Set sh = ThisWorkbook.Sheets("2018")
ancien = ""
For lig1 = 6 To sh.UsedRange.Rows(sh.UsedRange.Rows.Count).row
    nouveau = sh.Cells(lig1, 33).Text
    If nouveau <> "" And nouveau <> ancien Then
        If vale = "" Then
            vale = nouveau
        Else
            vale = vale & Chr(10) & nouveau
        End If
        ancien = nouveau
    End If
Next lig1
Set WordApp = New Word.Application
Set WordDoc = WordApp.Documents.Open("Mon doc word")
WordApp.Visible = True
WordDoc.Bookmarks("DLT").Range.Text = vale
WordDoc.Save
WordDoc.Close
Set WordDoc = Nothing
Set WordApp = Nothing

End Sub
1
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

3 avril 2018 à 10:51
Bonjour,

Merci pour tout, mais le souci reste le même. Le code s'arrete à la première ligne
Dim WordApp As Word.Application
et ouvre la fenetre : Erreur de compilation : type défini par l'utilisateur non défini.

Je ne suis pas très câlé en VBA.

La première macro est liée à un bouton, qui se trouve sur ma feuille "Tableau de Bord" et qui me permet d'ourvrir Word et exporter les données, jusque là pas de souci.

La deuxième macro doit récupérer les données d'une autre feuille "2018" (même classeur) et doit les exporter dans le même doc word et en même temps que la première.
Je dois bien la déclarer dans un module, et normalement cela devrait fonctionner avec le même bouton ?

Merci encore pour vos conseils et aides.
0
yg_be
Messages postés
19514
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 juin 2022
1 127 > criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

3 avril 2018 à 18:35
dans l'éditeur VBA, sans doute menu outils, dans références, il faut ajouter "Microsoft Word xx.x Object Library"
0
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

3 avril 2018 à 11:05
Peut-être qu'on pourrait faire une requete avec une seule macro ?
0
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
3 avril 2018 à 18:39
Si il ne lit pas les réponses qui lui sont faites, il ne risque pas d'y arriver!

https://forums.commentcamarche.net/forum/affich-35288167-export-liste-colonne-excel-vers-word#7
0
criscrof
Messages postés
67
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
26 octobre 2021

4 juil. 2018 à 14:41
Bonjour,

Je me rends compte que je n'avais pas dit un "grand merci beaucoup" à toutes vos réponses et conseilles... Désolé pour ce "raté" ! je reviens vers vous car j'aimerais faire une petite modif (un petit plus) dans le code ci-dessus. Je cherche à insérer la suppression des doublons de la colonne (AG ou 33), afin qu'il ne m'exporte pas toute les données dans le fichier Word. Est-ce possible sans réécrire l'ensemble du code ? Ce n'est peut-être pas sorcié, mais je n'y arrive pas.

Merci par avance !
0