IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comparer entre deux fichiers S-1 et S1 avec une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Par défaut Comparer entre deux fichiers S-1 et S1 avec une macro
    Bonjour j'espère que vous allez bien.
    j'ai deux fichiers excel des données de la semaine S-1 et de la semaine S1. je voudrais trouver les modification apportés sur mes données de la semaine S-1 à la semaine S1. le problème que mes données sont groupés selon un code de fonction donc je voudrais trouver pour chaque code de fonction quels sont les modifications( soit des modifications sur la même référence, soit des nouvelles références et la suppression des autres références).

    J'ai essayé de comparer ligne par ligne entre les deux fichiers. j'ai mis un filtre su le code de fonction pour que je puisse regrouper mes données. cela marche bien lorsque il y'en a que des modifications sur les mêmes références entre S-1 et S1 mais lorsqu'il y a des nouvelle ref qui s'ajoutent ou d'autres qui sont éliminés le code ne fonctionne plus.
    Je mets a votre disposition mes fichiers. le fichier anomalie contient le code que j'ai utilisé.

    MERCI D'AVANCE

    S-1.xlsxS1.xlsxanomalie.xlsm

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par taha-ba Voir le message
    Bonjour,

    Je n'ai pas utilisé votre code, mais plutôt regardé comment je pouvais utiliser vos données pour repérer les différences. J'ai donc concaténé vos données sur un seul onglet, en repérant bien entendu les fichiers d'origine dans la colonne 1 vide. Avec un tableau croisé dynamique, j'ai comparé les valeurs de la colonne 5 et dénombré les valeurs de la colonne 9 correspondant à ce que vous comparez dans votre code. J'ai coché dans une colonne Différence les cas où il y avait un écart. Le résultat est celui-ci :

    Pièce jointe 570920

    Si le résultat est probant, je m'orienterais plutôt sur sur cette méthode pour développer un code.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Par défaut
    Merci pour votre explication, personnellement j'avais pas cette idée, je pense que oui c'est la même chose. je vais essayer de ma part d’établir un code dans ce sens.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Par défaut
    J'ai essayé de faire comme indiqué dans l'image, ça me convient très bien je peux trouver les références qui sont nouvelles et celles qui sont supprimées, le problème qu'il me reste maintenant et de comparer l'ECDV ( s'il est changé ) des références. Par exemple une ref de S-1 avec la même ref de S1.



    Nom : ref.JPG
Affichages : 91
Taille : 34,2 Ko

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par taha-ba Voir le message
    C'est quoi un ECDV qui change de référence ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Par défaut
    désolé peut être je n'ai pas bien m'expliquer. dans mon fichier, le critère de comparaison si l'ECDV, j'ai essayé de regrouper par le code de fonction, et puis j'ai regroupé avec les numéro des produits, Pour chaque code de fonction je dois trouver les numéro des produits qui sont supprimés ou bien ajoutés, ainsi que comparer les numéro de produits à travers l'ECDV s'il y a un changement dans l'ECDV d'un numéro de produit entre la semaine S-1 et S1. j'ai pu faire celà à l'aide d'un tableau croisé dynamique mais j'aime bien le faire avec un code je voudrais afficher que les modifications.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Par défaut
    Nom : ECDV.JPG
Affichages : 90
Taille : 156,6 Ko

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par taha-ba Voir le message
    Soit un onglet appelé Ensemble groupant les semaines S et S+1 à partir de la ligne 10 et une colonne Produit concaténant les champs des colonnes E, C, I.

    Le code ci-dessous construit le TCD et donne les écarts dans une matrice appelée EcartsProduits

    La colonne produit en fin de tableau.
    Pièce jointe 571119

    Un extrait du TCD :

    Pièce jointe 571123

    La fenêtre exécution :

    Pièce jointe 571127


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    Option Explicit
     
    Public EcartsProduits() As Variant
     
    Sub CreationTcdProduit()
     
    Dim ShEnsemble As Worksheet, ShTcd As Worksheet
    Dim DerniereLigne As Long, DerniereColonne As Long, ColProduit As Long, I As Long, IndexMatrice As Long
    Dim AireTableau As Range, AireProduit As Range, AireSemaines As Range
    Dim Pvc As PivotCache
    Dim Pvt As PivotTable
     
        Set ShEnsemble = Sheets("Ensemble")
        With ShEnsemble
             DerniereLigne = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
             ColProduit = .UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1
             .Cells(10, ColProduit) = "Produit"
             Set AireProduit = .Range(.Cells(11, ColProduit), .Cells(DerniereLigne, ColProduit))
             With AireProduit
                  .Formula2Local = "=E11&"" ""&C11&"" ""&I11"
                  .Copy
                  .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                  .EntireColumn.AutoFit
             End With
             Set AireTableau = .Range("A10").CurrentRegion
        End With
     
        ' Vérification de la présence d'au moins 1 table pivotcache. Sinon création du PivotCache
        '----------------------------------------------------------------------------------------
        With ActiveWorkbook
             If .PivotCaches.Count = 0 Then
                Set Pvc = .PivotCaches.Create(SourceType:=xlDatabase, SourceData:=AireTableau.Address)
             Else
                Set Pvc = .PivotCaches(1)
            End If
            Pvc.MissingItemsLimit = xlMissingItemsNone
        End With
     
     
        Set ShTcd = Sheets.Add
     
        Set Pvt = Pvc.CreatePivotTable(TableDestination:=ShTcd.Cells(3, 1), TableName:="TCD1")
     
        With Pvt
     
            With .PivotFields("Semaine")
                .Orientation = xlColumnField
                .Position = 1
            End With
            With .PivotFields("Produit")
                .Orientation = xlRowField
                .Position = 1
            End With
            .AddDataField .PivotFields("02 Code fonction lien vehicule"), "Nombre de Produit", xlCount
     
            .ColumnGrand = False
            .RowGrand = False
     
            Set AireSemaines = Pvt.DataBodyRange
     
        End With
     
        Erase EcartsProduits
        IndexMatrice = 0
        For I = 1 To AireSemaines.Columns(1).Cells.Count
            With AireSemaines.Columns(1).Cells(I)
                 If Val(.Value) <> Val(.Offset(0, 1)) Then
                    ReDim Preserve EcartsProduits(4, IndexMatrice)
                    EcartsProduits(0, IndexMatrice) = Split(.Offset(0, -1), " ")(0)
                    EcartsProduits(1, IndexMatrice) = Split(.Offset(0, -1), " ")(1)
                    EcartsProduits(2, IndexMatrice) = Split(.Offset(0, -1), " ")(2)
                    EcartsProduits(3, IndexMatrice) = Val(.Value)
                    EcartsProduits(4, IndexMatrice) = Val(.Offset(0, 1))
                    IndexMatrice = IndexMatrice + 1
                 End If
          End With
     
        Next I
     
        If IndexMatrice > 0 Then
           For IndexMatrice = LBound(EcartsProduits, 2) To UBound(EcartsProduits, 2)
              Debug.Print EcartsProduits(0, IndexMatrice) _
                          & " " & EcartsProduits(1, IndexMatrice) _
                          & " " & EcartsProduits(2, IndexMatrice) _
                          & ", S   : " & EcartsProduits(3, IndexMatrice) _
                          & ", S+1 : " & EcartsProduits(4, IndexMatrice)
          Next IndexMatrice
        End If
     
        Set Pvt = Nothing
        Set Pvc = Nothing
        Set AireSemaine = Nothing
        Set AireTableau = Nothing
        Set AireProduit = Nothing
        Set ShEnsemble = Nothing
     
     
    End Sub

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 15h21
  3. Comparer la date entre deux fichiers
    Par erforceone dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 05/02/2008, 09h05
  4. [EXCEL] difference entre deux fichiers
    Par Mokhtar BEN MESSAOUD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2006, 11h12
  5. [langage] Passage d objet entre deux fichiers
    Par Slippers dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo