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 :

Comparaison de deux fichiers excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comparaison de deux fichiers excel
    Bonjour le forum ,
    J'ai besoin de votre aide .
    J'ai deux listes circuits (l'ancienne liste et la nouvelle ) qui doivent contenir les mêmes entêtes dans deux fichiers distincts , sauf qu'il faut comparer les entêtes des colonnes (Z,AA,AB,AC,...) qui sont appelées les part-numbers .Donc je souhaiterai vérifier si le part-number de la colonne Z (ancienne) correspond à celui de la cellule Z (nouvelle) ,Sinon on affiche un message d'erreur .Et tout cela par une comparaison des dix premiers caractères.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 130
    Points : 9 962
    Points
    9 962
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il faut juste tester sur la colonne Z ou étendre la recherche ?

    ci-après un exemple qui teste les deux colonnes Z

    j'ai passé en commentaire la partie qui permet de dupliquer le test sur les colonnes suivantes :

    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
     
     
    Sub Comparaison()
     
    Dim Wb1 As Workbook
    Dim Wb2 As Workbook
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet
     
    Set Wb1 = Workbooks("NomDuClasseur1")
    Set Wb2 = Workbooks("NomDuClasseur2")
    Set Sh1 = Wb1.Worksheets("NomDeLaFeuille1")
    Set Sh2 = Wb1.Worksheets("NomDeLaFeuille2")
     
    Dim i As Integer
     
    ' supprimer cette ligne si on utilise la boucle For i = x to y
    i = 0
     
    '$$ Effectue le test de colonnes en colonnes, en partant de Z
    '$$ Si i = 9, alors on effectue le test sur 10 colonne
    'For i = 0 To 9
        If Mid(Sh1.Cells(1, 26 + i), 1, 10) <> Mid(Sh2.Cells(1, 26 + i), 1, 10) Then
            MsgBox ("Les entêtes sont différents")
        End If
    'Next i
     
    Set Wb1 = Nothing
    Set Wb2 = Nothing
    Set Sh1 = Nothing
    Set Sh2 = Nothing
     
    End Sub

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse , en fait je dois comparer deux feuilles dans le même fichier donc je rectifie !
    Et avant de passer à la comparaison des deux feuilles ligne par ligne je dois vérifier si les entêtes des colonnes (AA ,AB ,AC ,AD ,AE ... BB, BC)sont les mêmes en comparant juste les premiers caractères, donc au niveau de cette partie je suis bloqué

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 130
    Points : 9 962
    Points
    9 962
    Billets dans le blog
    5
    Par défaut
    Bonjour,


    pour reprendre à proxima les termes de la signatures d'un membre très actif et qualifié (il se reconnaîtra) : une question correctement formulée, c'est 100% de bonnes réponses.

    Tes demandes sont imprécises, ce qui génère une proposition de solution qui n'est pas celle que tu souhaites.

    Soit clair et précis dans tes demandes.

    La macro que j'ai soumis fait déjà le comparatif entre les entêtes, sur les 10 premiers caractères.

    Il suffit donc d'ajuster le nombre des "premiers caractères", que tu ne précises pas ==> A NOUS INDIQUER

    Concernant le fait que les deux feuilles sont dans le même classeur, il suffit de supprimer la déclaration et instanciation de la variable Wb2
    Aussi, remplacer l'utilisation de Wb2 par Wb1, pour travailler dans le même classeur.

    Afin de proposer un rectificatif, il manque une autre info très importante :

    que dois faire la macro lorsqu'elle compare ligne par ligne les deux feuilles ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    J'assume que ma demande n'était pas claire , et malgré sa votre réponse était très utile !
    J'ai réussi à comparer les entêtes et il reste de comparer les deux feuilles ligne par ligne et insérer une troisième page et indiquer les changement dedans, j'ai réalisé ce code mais il ne marche pas correctement !

    Code :
    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
    Option Explicit
     
    Sub Comparaison()
    Dim Cel As Range
    Dim J As Long, NbLg As Long, Ligne As Long
    Dim F1 As Worksheet, F2 As Worksheet
    Dim I As Integer
    Dim Colonnes
    Dim LigneCopie As Boolean
     
      Application.ScreenUpdating = False
      Set F1 = Sheets("Raport 1")
      Set F2 = Sheets("Raport 2")
      Colonnes = Array("E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "BB")
      Cells.Clear                       ' On efface la page réception
     
      Ligne = 1
      With F1
        .Rows(1).Copy Range("A1")       ' La ligne des entêtes
        NbLg = .Range("A" & Rows.Count).End(xlUp).Row
        For J = 2 To NbLg
          LigneCopie = False
          ' Recherche de l'ID de la feuille 1 dans la feuille 2
          Set Cel = F2.Columns("A").Find(what:=.Range("A" & J), LookIn:=xlValues, lookat:=xlWhole)
          If Not Cel Is Nothing Then
            ' On a trouvé l'ID
            F2.Range("BC" & Cel.Row) = "BC"     ' On note ligne vue : Sens F1 vers F2
            For I = 0 To UBound(Colonnes)     ' On passe en revue toutes les colonnes
              If F2.Range(Colonnes(I) & Cel.Row) <> .Range(Colonnes(I) & J) Then    ' Différence
                If LigneCopie = False Then              ' La ligne a été copiée
                  Ligne = Ligne + 1                     ' Non donc on passe à la ligne suivante
                  F2.Rows(Cel.Row).Copy Range("A" & Ligne)  ' Copie la ligne de la feuille 2
                  Range("BC" & Ligne) = "Modifiée"
                  LigneCopie = True                     ' On indique que la ligne a été copiée
                End If
                Range(Colonnes(I) & Ligne).Interior.ColorIndex = 3 ' On colorise les cellules différentes
              End If
            Next I    ' Colonne suivante
          Else
            ' ID non trouvée
            Ligne = Ligne + 1                             ' On passe à la ligne suivante
            F1.Rows(J).Copy Range("A" & Ligne)            ' Copie la ligne de la feuille 1
            Range("BC" & Ligne) = "Supprimée"
          End If
        Next J    ' On passe à la ligne suivante
      End With
     
      With F2
        NbLg = .Range("A" & Rows.Count).End(xlUp).Row
        For J = 2 To NbLg
          If .Range("BC" & J) = "" Then                    ' Ligne non vue donc nouvelle
            Ligne = Ligne + 1                             ' On passe à la ligne suivante
            .Rows(J).Copy Range("A" & Ligne)              ' Copie la ligne de la feuille 2
            Range("BC" & Ligne) = "Nouvelle"
          End If
        Next J
        .Columns("BC").ClearContents
      End With
    End Sub

Discussions similaires

  1. [XL-2010] Comparaison de formule entre deux fichiers excel
    Par africanism95 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/04/2013, 15h59
  2. Comparaison de deux fichier excel
    Par mdakini dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2011, 17h37
  3. Comparaison de deux fichiers Excel
    Par Fab_lux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/08/2007, 21h41
  4. Comparaison de deux fichiers EXCEL
    Par meufeu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2006, 22h56
  5. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05

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