Comparaison entre 2 fichier - Problème

Bonjour à tous, j'ai un problème dans mon fichier.

Je vous joins le fichier dans mon fichier. Le but est de faire une comparaison entre 2 fichier. Pour cela, j'ai fait une comparaison entre les 2 fichier et lorsque je mets non trouvé, j'ai mis une couleur pour savoir quel est la différence. Il se peut que la colonne est différente est que les colonne soit bon. Du coup il colorie en rouge uniquement celui-ci/

Mais, le problème même les équipement qu'il trouve à la ligne, il colorie en rouge. Je veux modifier

De plus, il colorie en rouge des équipement qui existe dans la feuille octobre, je suis un peu perdue

https://1drv.ms/x/s!AtoCwEe3HwfRjvNgNo5HLEcVb8Rxtg?e=ZP77Wd

Voici le lien du fichier:

Bonjour

Vous souhaitez faire quel type de comparaison,
car là, vous vérifiez si chaque cellule de la ligne correspond bien à la même cellule de la même ligne d'octobre ?

A+

Bonjour

Vous souhaitez faire quel type de comparaison,
car là, vous vérifiez si chaque cellule de la ligne correspond bien à la même cellule de la même ligne d'octobre ?

A+

Une comparaison entre chaque ligne. Mais il y a des décalage entre le fichier de février et octobre. Mais il se peut qu il y a une différence dans la ligne due à la premier colonne 2 ème colonne 3 ème colonne . Et moi, ce que je veux comme j'ai fait lorsque il ne trouve pas la correspondance qui est due à une changement dans une colonne qu il me tag la colonne en question comme j ai fait. Sauf que la il ne retrouve pas des équipement qui existe aussi sur octobre. Les colonne à contrôler sont les 4premiere colonne + le superviseur + la fréquence

Bonsoir,

Un essai qui m'a l'air pas trop foireux. Je n'ai pas analysés toutes les différence avec ton truc mébon YFO bien qu'on te laisse quelque chose à faire.

Le classeur à été remanié comme suit :

Dans VBA, le VBAProject les noms Feuil1 et Feuil2 ont été remplacés par WsA pour Février et WsN pour Octobre.

Ensuite la macro fait le boulot en quelques minutes.

En colonne T les références aux lignes trouvées, ce sont en général les mêmes sauf que j'en ai trouvées quelques une en plus. A toi de voir (En rouge les référence que tu n'avais pas.

Les marquage est fait comme suit en vert colonne A les lignes identiques,

en orange les différences dans les colonnes ou il y a des différences.

En rouge les disparitions...

Le fichier

Si tu as des difficultés pour accepter le xlsm je te passerai le fichier en xlsx et je te donnerai la macro que tu n'auras qu'a rajouter (si tu en a besoin...)

A+

PS : Je m'étonne que les adeptes de PQ se soit pas encore manifestés ?

jesors2

Le fichier (en xlsx)

et le code :

Option Explicit

    Sub Comparaison()
    Dim iLRA&, iLRN&, i&, j&, k%
    Dim Y As Boolean, Ys As Boolean, sA$, sN$
    Dim TabloA(), TabloN(), TabloS()
    iLRA = WsA.Cells(65535, 1).End(xlUp).Row
    iLRN = WsN.Cells(65535, 1).End(xlUp).Row
    TabloA() = WsA.Range("A1:C" & iLRA)
    TabloN() = WsN.Range("A1:C" & iLRN)
    Application.ScreenUpdating = False
    TabloS() = WsA.Range("T1:T" & iLRA)
    'Détermination des absents
    For i = 2 To UBound(TabloA)
      sA = TabloA(i, 1) & TabloA(i, 3)
      For j = 2 To UBound(TabloN)
        'Si égalité alors on pose un drapeau
        sN = TabloN(j, 1) & TabloN(j, 3)
        If sA = sN Then
          Y = True
          'et on vérifie la ligne si c'est une égalité stricte
            For k = 1 To 16
              'si différence on pose un drapeau
              If WsA.Cells(i, k) <> WsN.Cells(j, k) Then
                Ys = True
                'et on colore en orange
                WsN.Cells(j, k).Interior.ColorIndex = 45
                WsA.Cells(i, k).Interior.ColorIndex = 45
              End If
            Next
              'sinon 1ere cellule en vert
              WsN.Cells(j, 1).Interior.ColorIndex = IIf(Ys, 45, 4)
              WsA.Cells(i, 1).Interior.ColorIndex = IIf(Ys, 45, 4)
            Ys = False
          Exit For
        End If
      Next
      'Si pas trouvé alors on colorie en rouge
      If Not Y Then WsA.Range("A" & i).Interior.ColorIndex = 3
      If Y Then TabloS(i, 1) = j 'ligne trouvée
      Y = False
    Next
    WsA.Range("T1:T" & iLRA) = TabloS
    End Sub

A+

PS : Je m'étonne que les adeptes de PQ se soit pas encore manifestés ?

jesors2

Bonsoir Galopin01 (je précise le numéro, car plusieurs pseudos commencent ainsi)

Je trouve, depuis quelque temps, tes interventions à la limite du "raisonnable"...(ta réponse récente sur une demande d'avis me semble bien "minable", si j'osais utiliser ta faconde)

Tu veux répondre, OK

Tu veux arriver à 10 000 post le plus rapidement possible, OK (mais de là à rappeler à tout va la charte, même sur des posts où tu avais auparavant brillé par ton absence...)

Tu veux faire de "l'humour", OK

Tu n'aimes pas "PQ", OK

Peut-être que les adeptes (comme tu sembles les catégoriser, genre "sectaires"), ont d'autres occupations, un dimanche, en fin d'après-midi?????

A bon entendeur

Bonsoir à toutes et tous,

J’ai passé un temps énorme à essayer de faire comprendre à Pascal Selvam que ce qu’il cherche à faire n’est pas faisable (même avec Power Query dont je suis un grand fan, Galopin01…). J’espère que vous comprendrez ce qu’il cherche à faire (pas facile !) et que vous saurez trouver les bons mots…

Bonsoir,

Un essai qui m'a l'air pas trop foireux. Je n'ai pas analysés toutes les différence avec ton truc mébon YFO bien qu'on te laisse quelque chose à faire.

Le classeur à été remanié comme suit :

Dans VBA, le VBAProject les noms Feuil1 et Feuil2 ont été remplacés par WsA pour Février et WsN pour Octobre.

Ensuite la macro fait le boulot en quelques minutes.

En colonne T les références aux lignes trouvées, ce sont en général les mêmes sauf que j'en ai trouvées quelques une en plus. A toi de voir (En rouge les référence que tu n'avais pas.

Les marquage est fait comme suit en vert colonne A les lignes identiques,

en orange les différences dans les colonnes ou il y a des différences.

En rouge les disparitions...

Le fichier

Si tu as des difficultés pour accepter le xlsm je te passerai le fichier en xlsx et je te donnerai la macro que tu n'auras qu'a rajouter (si tu en a besoin...)

A+

Merci beaucoup galopin, juste une petite question. Est ce possible de possible de me rajouter une filtre : dans le truc numéro en rouge parce que kan je filtre '' non trouve" je retrouve des équipement qui existe

image

petite question : dans la cellule 343333 pourquoi il me surligne en orange BAT01SS28 alors qu'il a le même correspondance dans la cellule 33025 dans le classeur octobre où c'est moi qui est aveugle

Et bien précisément parce qu'il y a des différences dans les colonnes I - J - O

Parfait, alors

Dans la colonnes T ce sont les N° des lignes ou j'ai une correspondance en octobre. dans la colonne V ce sont les correspondance que tu as trouvé colonne R. (j'ai parsé pour récupérer juste tes N° de ligne)

Les cellules en rouge ce sont une mise en forme conditionnelle qui met en évidence les différences entre ce que tu as trouvé et ce que j'ai trouvé colonne T.

Et non je pense qu'on ne peut pas filtrer sur cette MFC sauf à faire une macro pour ça. Je verrai ça demain.

A+

Pour les autres contributeurs... Je voudrais juste présenter mes excuses à ceux que j'ai pu froisser :

C'est vrai que j'ai un humour parfois caustique. Mais je me soigne ! Sissi...

A+

Bonjour à tous,

Pour revenir sur le sujet, j'ai créé une jointure en m'appuyant sur les IDs communs formés par la concaténation des éléments contenus dans les colonnes A et C des feuilles "Fevrier" et "Octobre"

Feuille "Jointure", les colonnes Q et R affichent les numéros de lignes correspondant aux IDs communs de chaque feuille.

Les lignes vides mettent en évidence les correspondances manquantes des IDs de chaque feuille"

Exemple : la ligne 392 de la feuille "Fevrier" n'a pas de correspondance en feuille "Octobre" et vice versa

Il reste à appliquer MFC pour mettre en évidence les différences entre les cellules d'une même ligne."

Option Explicit
Sub Jointure()
    Dim a, e, i As Long, ii As Long, w, t As Long, n As Long, txt As String, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    For Each e In Array("Fevrier", "Octobre")
        a = Sheets(e).Cells(1).CurrentRegion.Value
        For i = 2 To UBound(a, 1)
            txt = Join$(Array(a(i, 1), a(i, 3)), "|")
            If Not dico.exists(txt) Then
                ReDim w(1 To UBound(a, 2) * 2 + 4, 1 To 1)
            Else
                w = dico(txt)
            End If
            t = w(UBound(w, 1) - IIf(e = "Fevrier", 1, 0), 1) + 1
            If UBound(w, 2) < t Then ReDim Preserve w(1 To UBound(w, 1), 1 To t)
            For ii = 1 To UBound(a, 2)
                w(ii + IIf(e = "Fevrier", 0, 18), t) = a(i, ii)
            Next
            If e = "Fevrier" Then
                w(17, t) = i
            Else
                w(18, t) = i
            End If
            w(UBound(w, 1) - IIf(e = "Fevrier", 1, 0), 1) = t
            dico(txt) = w
        Next
    Next
    Application.ScreenUpdating = False
    If Not Evaluate("isref('Jointure'!a1)") Then Sheets.Add(, Sheets(Sheets.Count)).Name = "Jointure"
    With Sheets("Jointure")
        .Cells(1).CurrentRegion.Clear
        .Cells(17).Interior.ColorIndex = 44
        .Cells(18).Interior.ColorIndex = 44
        .Cells(1).Interior.ColorIndex = 43
        .Cells(3).Interior.ColorIndex = 43
        .Cells(19).Interior.ColorIndex = 45
        .Cells(21).Interior.ColorIndex = 45
        With .Cells(1).Resize(1, 34)
            .BorderAround Weight:=xlThin
            .Value = _
            Array("JGEJ_EQUIPMENT", "EREQ_DESCRIPTION", "JGEJ_JOB", "MDJB_DESCRIPTION", "JGEJ_JOB_TYPE", _
                  "JGEJ_JOB_CLASS", "JGEJ_COSTCENTRE", "JGEJ_SUPERVISOR", "JGEJ_LAST_WORK_ORDER", "JGEJ_NEXT_DATE", _
                  "JGEJ_BEHAVIOUR", "JGEJ_DURATION", "JGEJ_DURATION_UNIT", "JGEJ_FREQUENCY", "JGEJ_FREQUENCY_UNIT", _
                  "EREQ_ENTITY", "Ligne Fevrier", "Ligne Octobre", "JGEJ_EQUIPMENT", "EREQ_DESCRIPTION", "JGEJ_JOB", "MDJB_DESCRIPTION", _
                  "JGEJ_JOB_TYPE", "JGEJ_JOB_CLASS", "JGEJ_COSTCENTRE", "JGEJ_SUPERVISOR", "JGEJ_LAST_WORK_ORDER", "JGEJ_NEXT_DATE", _
                  "JGEJ_BEHAVIOUR", "JGEJ_DURATION", "JGEJ_DURATION_UNIT", "JGEJ_FREQUENCY", "JGEJ_FREQUENCY_UNIT", "EREQ_ENTITY")
        End With
        n = 2
        For Each e In dico
            With .Rows(n).Resize(UBound(dico(e), 2), UBound(dico(e), 1) - 2)
                .Value = Application.Transpose(dico(e))
            End With
            n = n + UBound(dico(e), 2)
        Next
        With .Cells(1).CurrentRegion
            .VerticalAlignment = xlCenter
            .Font.Name = "Calibri"
            .Font.Size = 10
            .Borders(xlInsideVertical).Weight = xlThin
            .BorderAround Weight:=xlThin
            '.Columns.AutoFit
        End With
    End With
    Set dico = Nothing
    Application.ScreenUpdating = True
End Sub

Je sais qu'il est possible de réaliser des jointures avec Power Query, mais peut-on y ajouter des mises en forme conditionnelles ?

Si l'un d'entre vous peut s'y coller

Edit : en résumé,

- 32891 ID ont une correspondance dans les 2 feuilles

- 1495 ID de la feuille "Fevrier" n'ont pas de correspondance dans la feuille "Octobre"

- 3934 ID de la feuille "Octobre" n'ont pas de correspondance dans la feuille "Fevrier"

klin89

Bonjour merci monsieur pour votre aide ms le sujet est clôturer depuis 1 semaines. Galopin et valky on réaliser ce que je voulais. Merci en tout cas à vous tous

Rechercher des sujets similaires à "comparaison entre fichier probleme"