Copier un texte multilignes avec mise en forme

  • Initiateur de la discussion Initiateur de la discussion C60a
  • 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 !

Bonjour C60a, le forum,

Vous n'avez jamais essayé de faire un copier-coller manuel ? Il conserve la mise en forme.

Voyez le fichier joint et cette macro :
Code:
Sub CopierVersWord()
Dim wApp As Object
On Error Resume Next
Set wApp = GetObject(, "Word.Application") 'si Word est déjà ouvert
On Error GoTo 0
If wApp Is Nothing Then Set wApp = CreateObject("Word.Application")
wApp.Visible = True
With wApp.Documents.Add 'nouveau document
  .Range.Text = "Bonjour le forum," & vbLf & vbLf 'c'est plus poli
  [A5:B7].Copy
  .Paragraphs(3).Range.Paste
End With
Application.CutCopyMode = 0
End Sub
Bonne journée.
 

Pièces jointes

Re,

Si l'on veut insérer des données dans un document Word existant il suffit d'y mettre des signets :
Code:
Sub CopierVersWord()
Dim wApp As Object
On Error Resume Next
Set wApp = GetObject(, "Word.Application") 'si Word est déjà ouvert
On Error GoTo 0
If wApp Is Nothing Then Set wApp = CreateObject("Word.Application")
wApp.Visible = True
With wApp.Documents.Add(ThisWorkbook.Path & "\Facture.docx")
  .Bookmarks("Signet1").Range.Text = Date
  [A5:B7].Copy
  .Bookmarks("Signet2").Range.Paste
End With
Application.CutCopyMode = 0
End Sub
Extrayez les 2 fichiers zippés joints dans le même répertoire pour tester.

A+
 

Pièces jointes

Re,

Une petite cerise sur le gâteau.

Sur Excel le format Date mmmm aaaa ne permet pas de mettre une majuscule au nom du mois.

Mais si on veut l'obtenir dans Word :
Code:
Sub CopierVersWord()
Dim wApp As Object, i As Byte
On Error Resume Next
Set wApp = GetObject(, "Word.Application") 'si Word est déjà ouvert
On Error GoTo 0
If wApp Is Nothing Then Set wApp = CreateObject("Word.Application")
wApp.Visible = True
With wApp.Documents.Add(ThisWorkbook.Path & "\Facture.docx")
  .Bookmarks("Signet1").Range.Text = Date
  [A5:B7].Copy
  .Bookmarks("Signet2").Range.Paste
  With .Bookmarks("Signet2").Range.Find
    For i = 1 To 12
      .Replacement.ClearFormatting
      .Text = Format("1/" & i, "mmmm")
      .Replacement.Text = Application.Proper(Format("1/" & i, "mmmm"))
      .Execute Replace:=2 '2 => wdReplaceAll
    Next
  End With
End With
Application.CutCopyMode = 0
End Sub
Fichiers (3).

A+
 

Pièces jointes

Bonsoir,

J'ai essayé d'adapter le code comme ceci :

VB:
Dim wd As Object, i As Byte
    On Error Resume Next
    Set wd = GetObject(, "Word.Application")    'si Word est déjà ouvert
    On Error GoTo 0
    If wd Is Nothing Then Set wd = CreateObject("Word.Application")
    wd.Visible = True
    Dc = wd.Documents.Add(ThisWorkbook.Path & "\Rapport.docx")
    'Set Plg = Dc.Range
    With Dc
    ' Titre1 premier titre en haut de la page, centré verticalement, gras, 14pt et souligné
    ' Texte = "Rapport mensuel d'activités"
        With .Bookmarks("Titre1").Range
            .Text = Texte
            With Font
                .Size = 14
                .Bold = True
                .Underline = wdUnderlineSingle
            End With
            .ParagraphFormat.Alignment = wdAlignParagraphCenter
        End With
        Sheets("1").[T1:U3].Copy
        .Bookmarks("Titre2").Range.Paste
        With .Bookmarks("Titre2").Range.Find
            For i = 1 To 12
                .Replacement.ClearFormatting
                .Text = Format("1/" & i, "mmmm")
                .Replacement.Text = Application.Proper(Format("1/" & i, "mmmm"))
                .Execute Replace:=2    '2 => wdReplaceAll
            Next
        End With
    End With
    Application.CutCopyMode = 0

Mais une erreur est survenue :

Instruction incorrecte à l'extérieur d'une procédure

sur la ligne :

VB:
Dc = wd.Documents.Add(ThisWorkbook.Path & "\Rapport.docx")

Remarque sur le 4ème code posté :

Bravo pour le format " : "@ c’était génial !

Mais les deux points alignés verticalement ne sont pas soulignés avec le texte de la colonne en gauche (DT, DO, Mois)(les mêmes caractéristique : Gras et souligné)

Merci d'avance.
 
Re,

J'ajoute que si vous avez d'autres problèmes de programmation sur Word ne comptez pas sur moi.

Je vous ai offert une "cerise sur le gâteau" c'est suffisant.

L'aide sur le web est excellente et ici nous sommes sur un forum Excel.

Bonne fin de soirée.
 
Bonjour C60a, le forum,

Je précise quand même 2 choses :

- si les textes et/ou la mise en forme des signets doivent toujours être les mêmes, il est beaucoup plus simple de modifier manuellement une fois pour toutes le fichier source "Rapport.docx"

- quand on pilote Word depuis Excel il ne faut pas utiliser les mots clés de Word comme wdUnderlineSingle ou wdAlignParagraphCenter, il faut les remplacer par leurs valeurs numériques : vous remarquerez que dans ma macro j'utilise 2 à la place de wdReplaceAll.

Bonne journée.
 
- 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
3
Affichages
385
Réponses
4
Affichages
156
Réponses
30
Affichages
472
Retour