Exporter des fichiers Excel en fichiers Word pour les comparer

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
a
amadese
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 8 décembre 2017
Version d'Excel : 2013

Message par amadese » 8 décembre 2017, 14:09

Bonjour,

Je dois faire de la comparaison de rapports (plusieurs versions de rapports). Mes rapports initiaux sont des fichiers Excel. L' analyse des versions de ces rapports se fait en word car l'outil de comparaison est plus simple et efficace.

J'ai mis en place 2 scripts vba:

Un en Excel qui permet de convertir les rapports excel en word:
Sub export_workbook_to_word()
    Dim sheetName As String
    Set obj = CreateObject("Word.Application")
    obj.Visible = True
    Set newobj = obj.Documents.Add
    
    For Each ws In ActiveWorkbook.Sheets
        sheetName = ws.Name
        
        'Retrieve name of the Worksheet
        newobj.ActiveWindow.Selection.TypeText sheetName
        newobj.ActiveWindow.Selection.Style = ActiveDocument.Styles(-2)
        newobj.ActiveWindow.Selection.TypeParagraph

        ws.UsedRange.Copy
        newobj.ActiveWindow.Selection.PasteExcelTable False, False, False
        newobj.ActiveWindow.Selection.InsertBreak Type:=7

    Next
        newobj.ActiveWindow.Selection.TypeBackspace
        newobj.ActiveWindow.Selection.TypeBackspace
          
    obj.Activate
    newobj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & Split(ActiveWorkbook.Name, ".")(0)

End Sub

Un en Word pour comparer les rapport et créer un 3 eme rapport qui montre les différences entre les rapports avec l'outil de track changes
Sub CompareAllFiles()
    Dim strFolderA As String
    Dim strFolderB As String
    Dim strFolderC As String
    Dim strFileSpec As String
    Dim strFileName As String
    Dim objDocA As Word.Document
    Dim objDocB As Word.Document
    Dim objDocC As Word.Document
    strFolderA = InputBox("Enter path to base documents:")
    strFolderB = InputBox("Enter path to new documents:")
    strFolderC = InputBox("Enter path for document comparisons to be saved:")
    strFileSpec = "*.doc"
    strFileName = Dir(strFolderA & strFileSpec)
    Do While strFileName <> vbNullString
        Set objDocA = Documents.Open(strFolderA & strFileName)
        Set objDocB = Documents.Open(strFolderB & strFileName)
        Application.CompareDocuments _
            OriginalDocument:=objDocA, _
            RevisedDocument:=objDocB, _
            Destination:=wdCompareDestinationNew
        objDocA.Close
        objDocB.Close
        Set objDocC = ActiveDocument
        objDocC.SaveAs FileName:=strFolderC & strFileName
        objDocC.Close SaveChanges:=False
        strFileName = Dir
    Loop
    Set objDocA = Nothing
    Set objDocB = Nothing
End Sub
Je voudrais réunir les 2 scripts en un seul script pour:
  • exporter tous les fichiers Excel d'un dossier en fichier Word avec le 1er script (sur base du 2eme script pour choisir les dossiers d'origine et de destination)
  • Comparer les documents Word (avec le 2eme script) et créer les fichiers de résultats
Pourriez-vous m'aider à faire cela?

Merci d'avance pour votre aide
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'599
Appréciations reçues : 250
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 8 décembre 2017, 14:45

bonjour

pas besoin de Word ni de VBA
il suffit de créer un fichier (ou un onglet qui contient =SI(A1dufichierA = A1dufichierB ; ""; "écart")
formule que tu étends à toute la plage nécessaire.

tu peux mettre une somme des "écarts" pour mieux quantifier le résultat.
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
a
amadese
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 8 décembre 2017
Version d'Excel : 2013

Message par amadese » 8 décembre 2017, 15:03

J'ai malheureusement besoin d'avoir une structure identique (tableaux, données et mise en forme) pour comparer ligne par ligne si les champs ont été modifiés(valeurs différentes, ajout ou modification d'une ligne ou d'une colonne). Excel n'est pas assez efficace et surtout simple d'utilisation pour faire cela, sachant qu'en plus je souhaite automatiser le plus possible ces tâches et ne pas devoir aller dans chaque fichier pour faire les manipulations.
a
amadese
Jeune membre
Jeune membre
Messages : 10
Inscrit le : 8 décembre 2017
Version d'Excel : 2013

Message par amadese » 8 décembre 2017, 15:05

jmd a écrit :
8 décembre 2017, 14:45
bonjour

pas besoin de Word ni de VBA
il suffit de créer un fichier (ou un onglet qui contient =SI(A1dufichierA = A1dufichierB ; ""; "écart")
formule que tu étends à toute la plage nécessaire.

tu peux mettre une somme des "écarts" pour mieux quantifier le résultat.
Merci pour la réponse,

J'ai malheureusement besoin d'avoir une structure identique (tableaux, données et mise en forme) pour comparer ligne par ligne si les champs ont été modifiés(valeurs différentes, ajout modification ou suppression d'une ligne ou d'une colonne). Excel n'est pas assez efficace et surtout simple d'utilisation pour faire cela, sachant qu'en plus je souhaite automatiser le plus possible ces tâches et ne pas devoir aller dans chaque fichier pour faire les manipulations. D'ou la solution que j'avais pensé avec Word et son outil de comparaison.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message