Fichier excel enregistré en .doc

la fifine

XLDnaute Occasionnel
Bonjour a tous
petite question toute bête:
comment fait-on pour enregistrer une fichier excel en fichier world?
sans passer par un copier/coller
Merci
 

chris

XLDnaute Barbatruc
Bonjour

Ce sont deux applications différentes : il faut donc transférer d'une manière ou une autre les données du document Excel à un document Word.
 

tatiak

XLDnaute Barbatruc
Bonjour à tous,

Une méthode peut être celle-ci (ici pour l'onglet "Feuil1") :
VB:
Option Explicit


' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************


Sub Word()
Dim T As Variant, Lrg As Variant
Dim WordApp As Object, WordDoc As Object, Rng As Object
Dim lg As Integer, cl As Integer, i As Integer, j As Integer
Dim Ndf As String
    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row
        cl = .Cells(1, Columns.Count).End(xlToLeft).Column
        T = .Range(.Cells(1, 1), .Cells(lg, cl)).Value
        ReDim Lrg(1 To cl)
        For j = 1 To cl
            Lrg(j) = .Columns(j).Width
        Next j
    End With

    Ndf = ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, "xlsm", "docx")
   
    On Error GoTo errhdlr
    Set WordApp = CreateObject("Word.Application")
    Set WordDoc = WordApp.Documents.Add
   
    With WordDoc
        With .PageSetup ' Mise en page : Marges
            .LeftMargin = WordApp.CentimetersToPoints(1.5)
            .RightMargin = WordApp.CentimetersToPoints(1.5)
            .TopMargin = WordApp.CentimetersToPoints(2)
            .BottomMargin = WordApp.CentimetersToPoints(2)
        End With
   
        .Paragraphs.Add
        With .Paragraphs(.Paragraphs.Count - 1)
            Set Rng = WordDoc.Range(Start:=.Range.Start, End:=.Range.Start)
        End With
       
        With .Tables.Add(Range:=Rng, NumRows:=lg, NumColumns:=cl)
            For j = 1 To cl
                .Columns.Item(j).Width = Lrg(j)
                For i = 1 To lg
                    With .cell(i, j)
                        .Range.Text = T(i, j)
                        .Borders.Enable = True
                    End With
                Next i
            Next j
        End With
    End With
   
    WordDoc.Application.ActiveDocument.SaveAs (Ndf)
    WordApp.Visible = True  ' ou bien => WordApp.Application.Quit
   
    Set Rng = Nothing
    Set WordDoc = Nothing
    Set WordApp = Nothing
   
    MsgBox "Document enregistré en Word!"
    Exit Sub
   
errhdlr:
    Set Rng = Nothing
    Set WordDoc = Nothing
    Set WordApp = Nothing
    Debug.Print Err.Description
End Sub
' *************************************************************************************************
Pierre
 

tvhabdo

XLDnaute Occasionnel
Bonjour Tatiak/Pierre

J'ai copier/coller le code ci-dessus et ça fonctionne MAIS
Voila ce que je fais
1 - Je lance Excel, je fais mes modifs dans la Feuill1, je clic sur le bouton, ça me lance Word, le fichier Document1 s'affiche et est rempli avec les données de Feuill1 (ça : OK)
2 - Je quitte Word, mais PAS excel, je refais des modifs dans ma Feuill1, je reclic sur le bouton,
Word se lance et se met en Stand By en attente de création d'un nouveau document
donc je quitte Excel, je quitte Word et ça refonctionne pour un One Shot

Si on peux améliorer OK, sinon ça me va Nickel
Merci - Pat
 

la fifine

XLDnaute Occasionnel
mouhai
j'ai enlevé le on error goto
le code butte sur 3 lignes mais fini par aller au bout en sautant les erreurs
par contre il m'ouvre office 365 que je n'ai pas activé sur mon pc
bon je pense que je vais laisser tomber et je fournirai ce fichier sous word ils se débrouilleront avec ça au boulot
 

tatiak

XLDnaute Barbatruc
Salut,

Avec mes tests, je n'ai pas ces effets.
Ci-joint autre version avec un simple copy/paste et vérif si le doc est encore ouvert.

Testé et fonctionnel sous PC 32 bits + Windows10 + Office 2007 32bits et sous PC 64 bits + Windows10 + Office 2016 32bits. Pour autre configuration, je ne sais pas.

Pierre
 

Fichiers joints

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour a tous
petite question toute bête:
comment fait-on pour enregistrer une fichier excel en fichier world?
sans passer par un copier/coller
Merci
Pourquoi en ".doc " ????
Excel sait très bien enregistrer en .html …
Word lit trés bien .html et ré-enregistrer aussitôt en .doc
 

la fifine

XLDnaute Occasionnel
bonsoir A tous
Ta version Tatiak fonctionne chez moi aussi sur ton classeur exemple j'ai bien une copie en word
mais sur mon classeur la macro s'exécute, j'ai le msgbox final mais pas de fichier word crée
ça me sélectionne la colonne A en entier
j'ai perdu un peu la main pour lire les codes et je ne sais plus comment modifer pour avoir une sélection de la feuille colonne A à colonne AN
 

Discussions similaires


Haut Bas