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

Excel Discussion :

Comparaison et croisement de 2 fichiers excel en VBA


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Comparaison et croisement de 2 fichiers excel en VBA
    Je suis débutant en VBA et sa fait plus de 3 jours que je cherche à resoudre cet probleme.

    J'Ai 2 fichiers (tests2.xlsx et test1.xlsx) que je dois comparer.

    -Dans le fichiers tests2:
    J'ai Axxx= p1 + p2 + p3+ p4

    Dans le fichier test1:
    Axxx= p2 + p1
    Axxx= p3 + p1
    Axx= p4 + p1

    J'aimerai verifié si tous tous les Axxx du tests2 sont présents dans test1,
    si Axxx= p2 + p1
    Axxx= p3 + p1
    Axx= p4 + p1
    corespond à Axxx= p1 + p2 + p3+ p4
    exemple:
    J'ai A001= PLN+ PJM+QUA dans tests2.xlsx
    Et A001= PJM+ PLN
    A001= QUA +PLN

    J'arrive pas à coloré la cellule des Axxx du tests2.xlsx qui n se trouve pas dans test1.xlsx
    ci-joint les fichiers
    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
    Private Sub CommandButton3_Click()
     
     
                'Evite de voir les opérations intermédiaire sur les fichiers
            Application.ScreenUpdating = False
     
            'déclarations des variables
            Dim i As Long
            Dim j As Long
            Dim Sh As Worksheet
            Dim Tablo1
            Dim Tablo2
     
            Workbooks.Open ("D:\Couz\test1.xlsx")
            Set Sh = Workbooks("test1.xlsx").Worksheets("Feuil1") 'feuille
            With Sh
                Tablo1 = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Value
            End With
     
            Workbooks("test1.xlsx").Close False
            Workbooks.Open ("D:\Couz\test2.xlsx")
     
            Set Sh = Workbooks("test2.xlsx").Worksheets("Feuil1")
            With Sh
                Tablo2 = .Range(.Cells(4, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Value
            End With
     
            For i = LBound(Tablo2, 1) To UBound(Tablo2, 1)
                For j = LBound(Tablo1, 1) To UBound(Tablo1, 1)
                    If Tablo2(i, 1) = Tablo1(j, 2) Then
     
                            If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or (Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5))) Then
     
                            Sh.Cells(i + 3, 1).Interior.Color = 16777215
     
     
                        Else
                            Sh.Cells(i + 3, 1).Interior.Color = 2
                            Exit For
                        End If
                    End If
                Next j
            Next i
     
            Set Sh = Nothing
     
            Application.ScreenUpdating = True
     
    End Sub
      0  0

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bonjour à Tous,

    Y'a t-il quelqu'un pour m'aidé SVP?
      0  0

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Personnellement, je ne parviens pas à comprendre exactement ce que tu veux faire. Donc je préfère m'abstenir plutôt que de perdre du temps à faire quelque chose qui n'est peut-être pas ce que tu souhaites.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
      0  0

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Personnellement, je ne parviens pas à comprendre exactement ce que tu veux faire. Donc je préfère m'abstenir plutôt que de perdre du temps à faire quelque chose qui n'est peut-être pas ce que tu souhaites.
    Bonjour Menhir,

    J'ai 2 fichiers joint ci-dessus que je vais comparer.

    J'ai Axxx qui corespond à P1, P2,P3,P4 dans le fichier tests2.

    J'ai dans un 2eme ficher test1 le même Axx qui corespond à P2, P1;P3,P1 et P4,P1 sur des differentes lignes.

    exemple:
    J'ai dans le fichier test2 sur la meme ligne A001= P2 (cellule 5) + P1 (cellule 5) + P3( cellule 8) +P4 (cellule 9).

    Dans le fichier test1 j'ai: A001 = P2(cellule 4) +P1(Cellule 5)
    A001= P3(Cellule 4) +P1(Cellule 5)
    A001=P4(Cellule 4) + P1 (cellule 5)
    J'aimerai compararer voir si les quatres P du du fichier tests2 se trouve dans le fichier test1
      0  0

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Sans vraiment tout comprendre, essaie en changeant cette ligne.
    Je pense qu'il y a un problème de parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Then
    MPi²
      0  0

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Sans vraiment tout comprendre, essaie en changeant cette ligne.
    Je pense qu'il y a un problème de parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Then
    Bonjour parmi,
    Merci pour votre réponse.

    J'ai 2 fichiers que je vais comparer.

    j'ai 2 fichiers (test2 et test1) excel dans lesquels se trouvent des données que je vais comparer.
    exemple des données:

    Dans le fichier test2 j'ai cette ligne suivante
    A001= P2 (Ligne 4, cellule 5) + P1 (Ligne 4, cellule 4) + P3(Ligne 4, cellule 8) +P4 (Ligne 4, cellule 9).=PJM+PLN+QUA+ECP

    A002=P2 (Ligne 5, cellule 5) + P1 (Ligne5, cellule 4) + P3(Ligne 5, cellule 8) =QUA+REP+QUA

    B001= P2 (Ligne 6, cellule 5) + P1 (Ligne 6, cellule 4)= REG + ISP
    Etc.

    Dans le fichier test1 j'ai:
    A001 = P2(Ligne 2, cellule 4) +P1(Ligne 2, Cellule 5)= PJM+PLN
    A001=P3(Ligne 3, Cellule 4) + P1 (Ligne 3, cellule 5) =QUA + PLN
    A001=P4(Ligne 4, Cellule 4) + P1 (Ligne 4, cellule 5)= ECP + PLN

    A002=P2(Ligne 5, cellule 4) +P1(Ligne 5, Cellule 5)= QUA+REP
    A002=P2(Ligne 6, cellule 4) +P1(Ligne 6 Cellule 5)=QUA + REP

    B001=P2 (Ligne 7, cellule 4) + P1 (Ligne 7, cellule 5)= REG + ISP
    Etc.

    Bonjour Parmi,
    merci pour ta réponse, mais ne change rien dans mon code.
    je t'explique le principe.
    J'aimerai comparer si tous les valeurs de Axxx du fichier test2 se trouve dans le fichier test1, s'il se trouve pas ou les données ne correspond pas, il met la cellule en couleur bleu ou d'autre couleur.
      0  0

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Sans vraiment tout comprendre, essaie en changeant cette ligne.
    Je pense qu'il y a un problème de parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ((Tablo2(i, 1) & Tablo2(i, 4) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 8) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Or ((Tablo2(i, 1) & Tablo2(i, 9) & Tablo2(i, 5) = Tablo1(j, 2) & Tablo1(j, 4) & Tablo1(j, 5)) Then
    Tu trouveras ci-dessus joint les 2 fichiers à comparer pour bien comprendre le principe.

    Merci d'avance.
      0  0

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MacroVBA Voir le message
    Dans le fichier test1 j'ai:
    A001 = P2(Ligne 2, cellule 4) +P1(Ligne 2, Cellule 5)= PJM+PLN
    A001=P3(Ligne 3, Cellule 4) + P1 (Ligne 3, cellule 5) =QUA + PLN
    A001=P4(Ligne 4, Cellule 4) + P1 (Ligne 4, cellule 5)= ECP + PLN
    Qu'est-ce que c'est "A001" ? Une référence de cellule ?
    Si c'est le cas, comment peut-on y mettre plusieurs valeurs différentes ?

    merci pour ta réponse, mais ne change rien dans mon code.
    Tu dis que ton code ne fait pas ce que tu souhaites. Si tu veux qu'il fasse ce que tu souhaite, il va donc falloir, d'une façon ou d'une autre, le modifier, non ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
      0  0

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Qu'est-ce que c'est "A001" ? Une référence de cellule ?
    Si c'est le cas, comment peut-on y mettre plusieurs valeurs différentes ?


    Tu dis que ton code ne fait pas ce que tu souhaites. Si tu veux qu'il fasse ce que tu souhaite, il va donc falloir, d'une façon ou d'une autre, le modifier, non ?
    A001 permet d'identifier la ligne avec d'autre information.

    Mon code prends seulement en compte si tous les colonnes (P1,P2,P3,P4) sont remplir dans le Test2

    je vous invité de regardé les 2 fichiers ci-dessus pour bien comprendre le mécanisme.
      0  0

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Menhir Voir le message
    Tu dis que ton code ne fait pas ce que tu souhaites. Si tu veux qu'il fasse ce que tu souhaite, il va donc falloir, d'une façon ou d'une autre, le modifier, non ?
    Il a commencé par déverser ses deux hospices de fichiers là.


    Et il continue de les déverser ici à qui mieux-mieux. Monsieur Balance Fichiers veut une solution gratuite clef-en-mains. Je suppose que dans deux ou trois jours, il va partir un troisième sujet, en déversant les deux mêmes maudits fichiers, malgré les Règles et malgré les indications de Pierre Fauconnier.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
      2  0

  11. #11
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il est reparti de ce fil où j'ai proposé le code qu'il a tenté d'adapter : http://www.developpez.net/forums/d15...a/#post8266526


    je ne vais pas modifier chaque fois ma proposition pour que ça soit utilisable sur différentes structures, je passe mon tour pour ce coup là ... ou alors je lui soumet un devis en bonne et dûe forme et il aura une solution un peu plus professionnelle et moins rigide (cahier des charges, mode opératoire, SAV etc.... bref ce qu'il demande sur le forum)

    ma procédure est libre de droit, quiconque veut la modifier est le bienvenu
      2  0

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mai 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Mai 2015
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,



    Il a commencé par déverser ses deux hospices de fichiers là.


    Et il continue de les déverser ici à qui mieux-mieux. Monsieur Balance Fichiers veut une solution gratuite clef-en-mains. Je suppose que dans deux ou trois jours, il va partir un troisième sujet, en déversant les deux mêmes maudits fichiers, malgré les Règles et malgré les indications de Pierre Fauconnier.

    Je suis là pour qu'on me guide.
    T'a raison pour les fichiers, je pensais que sa va vous aidez de comprendre la logique de ma pensée...
      0  0

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je bénis la patience de mes coreligionnaires

    Si tu souhaites de l'aide, il va d'abord falloir bien rédiger ton problème. Et, entre nous soit dit, le rédiger de façon intelligible va t'aider à le comprendre mieux, et peut-être même à lui trouver une solution.

    Parce que douze messages pour que personne n'ait compris ton soucis, ça fait un peu beaucoup.

    Bon courage et bon boulot
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

Discussions similaires

  1. Comparaison de date dans un fichier excel
    Par elkhansa dans le forum VBScript
    Réponses: 0
    Dernier message: 18/09/2013, 17h45
  2. [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
  3. Fermeture fichier excel en vba
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2006, 21h30
  4. créer un fichier excell avec VBA(access)
    Par JCH dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2006, 19h07
  5. Ouverture d'un fichier Excel en VBA par Access
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 11h14

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