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...
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+
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 SubA+
PS : Je m'étonne que les adeptes de PQ se soit pas encore manifestés ?
![]()
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
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
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 SubJe 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
