Comparaison de données => Différences => Graphs des différences

Bonjour à tous,

Régulierement nous effectuons des backup sur des machines industrielles pour avoir un suivi des paramètres utilisés pour mener à bien notre fabrication.

Dans mon cas, j'utilise une macro pour importer les backups ( fichiertxt composés essentiellement de chiffres bruts ) que je souhaite comparer pour tracer sur une période donnée l'évolution de certains paramètres.

-> Dans notre cas on dira que ces backups sont les lignes 7/8/9/10/11 du fichier "excel pratique" en pj.

Les données affichées dans les colonnes1 /2/ ... corresponderont aux différentes valeurs des paramètres affectées à chaque backup.

Mon but c'est que si je souhaite comparer 5 backups comme dans l'exemple joint, je compare les données de chaque paramètre. Si une des données renseignée dans le paramètre 2 par exemple est différente des autres alors j'exporte cette colonne dans l'onglet "Differences". Si les données des colonnes sont identiques sur tous mes backups importés alors je n'exporte pas cette colonne dans l'onglet "Différences".

Le 3 ème onglet, lui me permettra d'afficher sous format de graph l'évolution des paramètres qui ont fluctués en fonction des backup.

Savez-vous comment dois-je m'y prendre pour la comparaison et exportation des différences vers l'onglet "différences" ?

Avez-vous des suggestions pour l'affichage des graphs automatiquement ?

Pour info chaque recette contient le même nombre de données au même endroit, il est très peu problable que je compare 20 backup en même temps et chaque backup contient environ 1500 paramètres.

Dans l'attente de vos réponses,

Je vous souhaite une bonne journée

16excel-pratique.xlsx (44.06 Ko)

Bonjour,

Voici une solution possible.

Sub ComparerBackups()
    Dim Ws As Worksheet
    Dim BackupWs As Worksheet
    Dim DiffWs As Worksheet
    Dim LastRow As Long
    Dim i As Long
    Dim j As Long

    ' Spécifiez les noms des feuilles de calcul
    Set Ws = ThisWorkbook.Sheets("Feuille de calcul principale")
    Set DiffWs = ThisWorkbook.Sheets("Différences")

    ' Boucle sur les colonnes de paramètres (à partir de la colonne 1)
    For j = 1 To Ws.Cells(7, Columns.Count).End(xlToLeft).Column
        ' Réinitialise le marqueur de différence
        Dim DiffFound As Boolean
        DiffFound = False

        ' Boucle sur les lignes des backups (à partir de la ligne 7)
        For i = 7 To Ws.Cells(Rows.Count, 1).End(xlUp).Row
            ' Compare les données du paramètre
            If Ws.Cells(i, j).Value <> Ws.Cells(7, j).Value Then
                ' Une différence a été trouvée, enregistrez la colonne dans "Différences"
                If Not DiffFound Then
                    LastRow = DiffWs.Cells(Rows.Count, 1).End(xlUp).Row + 1
                    Ws.Cells(7, j).EntireColumn.Copy Destination:=DiffWs.Cells(LastRow, 1)
                    DiffFound = True
                End If
            End If
        Next i
    Next j
End Sub

Il semblerait que cela me met une erreur lorsque je lance la macro en question.

Y a t'il quelque chose que je n'ai pas bien réalisé ?

Cj le fichier en question avec le code que tu vous m'avez transmis :

Bonjour,

Voici une solution possible.

Top , en revanche dans l'onglet différence les intitulés des colonnes n'apparaissent pas avec les datas qui diffèrent.

J'ai joué un peu dans la macro pour obtenir ce que je souhaitais mais sans résultats convaincants

Finalement c'est ok :)

Sub ComparerBackups()
    Dim Ws As Worksheet
    Dim DiffWs As Worksheet
    Dim LastCol As Long
    Dim i As Long
    Dim j As Long
    Dim DiffFound As Boolean

    ' Spécifiez les noms des feuilles de calcul
    Set Ws = ThisWorkbook.Sheets("Import fichiers")
    Set DiffWs = ThisWorkbook.Sheets("Differences")

    ' Réinitialise la feuille "Différences" à chaque exécution
    DiffWs.Cells.Clear

    ' Boucle sur les colonnes de paramètres (à partir de la colonne 1)
    For j = 2 To Ws.Cells(2, Columns.Count).End(xlToLeft).Column
        ' Réinitialise le marqueur de différence
        DiffFound = False

        ' Boucle sur les lignes des backups (à partir de la ligne 2)
        For i = 2 To Ws.Cells(Rows.Count, 1).End(xlUp).Row
            ' Compare les données du paramètre
            If Ws.Cells(i, j).Value <> Ws.Cells(2, j).Value Then
                ' Une différence a été trouvée, copiez la colonne dans "Différences"
                If Not DiffFound Then
                    LastCol = DiffWs.Cells(2, Columns.Count).End(xlToLeft).Column + 1
                End If
                Ws.Cells(1, j).Resize(Ws.Cells(Rows.Count, j).End(xlUp).Row - 0, 1).Copy Destination:=DiffWs.Cells(2, LastCol)
                DiffFound = True
            End If
        Next i
    Next j
End Sub

Est-il egalement possible de mettre en surbrillance jaune par exemple le paramètre qui diffère par rapport aux autres ?

En ce qui concerne "les graphes des différences".

Savez-vous s'il est possible de par exemple directement générer un TCD avec les données et intitulés renvoyés dans l'onglet différence ?

De cette manière je n'ai plus qu'a choisir les données que je souhaite visualiser ?

Bonjour,

Voici le fichier corrigé.

Voir la macro CreerTCD dans le module 1 pour TCD.

Top cela fonctionne bien, par contre qu'est ce aue c'est long des qu'on commence a avoir beaucoup de colonnes a comparer et beaucoup de diffrences a afficher

2 questions cependants :

Pourquoi la surbrillance est egalement appliquee sur mon onglet destine a l'import des datas ?

Lorsque j j'execute ta macro pour le TCD j'ai cette erreur :

image

J'ai juste nodifie la page sur lequel je souhaite l'afficher :

Sub CreerTCD()
    Dim DiffWs As Worksheet
    Dim PvtCache As PivotCache
    Dim PvtTable As PivotTable
    Dim PvtRange As Range

    ' Spécifiez la feuille "Graphs"
    Set DiffWs = ThisWorkbook.Sheets("Graphs")

    ' Définit la plage de données pour le TCD
    Set PvtRange = DiffWs.UsedRange

    ' Supprimez tout TCD existant sur la feuille "Différences"
    On Error Resume Next
    DiffWs.PivotTables("TableauCroiseDynamique1").TableRange2.Clear
    On Error GoTo 0

    ' Crée un cache de tableau croisé dynamique
    Set PvtCache = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=PvtRange)

    ' Crée un tableau croisé dynamique sur la feuille "Différences"
    Set PvtTable = PvtCache.CreatePivotTable( _
        TableDestination:=DiffWs.Cells(1, 1), _
        TableName:="TableauCroiseDynamique1")

    ' Vous pouvez ensuite définir les champs du TCD selon vos besoins
    ' Par exemple :
    ' PvtTable.PivotFields("Nom du champ").Orientation = xlRowField
    ' PvtTable.PivotFields("Autre champ").Orientation = xlColumnField
    ' PvtTable.PivotFields("Valeur à afficher").Orientation = xlDataField
End Sub

et mes datas sont stockees de la sorte apres verification des differences :

image

Bonjour,

Voici le fichier va être plus rapide pour la création des colonnes et TCD sera maintenant sur l'onglet Graphs.

image image

j'ai cette erreur de mon côté ..

Bonjour,

Voici le correction.

Je te joins mes fichiers pour que tu puisses te rendre compte de mes problematiques...

L'excel et 3 fichiers correspondant a mes parametres

Mais de maniere generale je n'arrive a rien avec la fonction TCD et j'ai la sensation que le temps d'execution de la macro a beaucoup augmente avec les dernieres modifs .

18recette-1.txt (8.32 Ko)
17recette-2.txt (8.40 Ko)
18recette-3.txt (7.54 Ko)

Bonjour,

Voici une solution possible.

Rechercher des sujets similaires à "comparaison donnees differences graphs"