• Initiateur de la discussion Initiateur de la discussion momo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

momo

XLDnaute Occasionnel
Bonjour à tous

Je viens vers vous pour m'aider sur un projet.

j'ai un classeur Excel avec des tableaux et quelques commentaires en bas de chaque tableaux.
L'objectif est de transférer dans l'intégral tous les tableaux et commentaires vers un fichier Word.
Je demande votre assistance et je joins le fichier excel et le Word qui montre le résultat attendu
 

Pièces jointes

Bonjour momo,

Voyez le fichier joint et la macro affectée au bouton :
VB:
Sub Word()
Dim chemin$, doc$, Wapp As Object
chemin = ThisWorkbook.Path & "\" 'à adapter
doc = "Analyse_xld.docx" 'à adapter
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
Wapp.Documents(doc).Close False 'si le document Word est ouvert on le ferme
ActiveSheet.UsedRange.Copy 'copier
With Wapp.Documents.Add 'document vierge
    .Range.Paste 'coller
    .SaveAs chemin & doc 'enregistre
End With
Application.CutCopyMode = 0
End Sub
A+
 

Pièces jointes

Bonjour momo, le forum,
Par contre le texte lui même arrive sous forme de tableau (Certes sans bordures). Mais ca pourrait compliquer certains ajouts
Oui et pour y remédier on peut fusionner avant le copier-coller les lignes entre les tableaux c'est à dire les plages A7:F7 A8:F8 A9:F9 etc... et les défusionner ensuite, voyez ce fichier (2) :
VB:
Sub Word()
Dim chemin$, doc$, Wapp As Object, i&
chemin = ThisWorkbook.Path & "\" 'à adapter
doc = "Analyse_xld.docx" 'à adapter
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
Wapp.Documents(doc).Close False 'si le document Word est ouvert on le ferme
With ActiveSheet.UsedRange
    '---fusionne les lignes entre les tableaux---
    For i = 1 To .Rows.Count
        If .Cells(i, 1) = "Désignation" Then i = i + .Cells(i, 1).CurrentRegion.Rows.Count
        .Rows(i).Merge
    Next
    '---copier-coller dans Word---
    .Copy 'copier
    With Wapp.Documents.Add 'document vierge
        .Range.Paste 'coller
        .SaveAs chemin & doc 'enregistre
    End With
    '---défusionne les lignes entre les tableaux---
    For i = 1 To .Rows.Count
        If .Cells(i, 1) = "Désignation" Then i = i + .Cells(i, 1).CurrentRegion.Rows.Count
        .Rows(i).UnMerge
    Next
End With
End Sub
A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
251
Réponses
22
Affichages
810
Réponses
16
Affichages
397
Réponses
4
Affichages
282
Réponses
4
Affichages
631
Retour