Comparer les données de deux tableaux
Bonjour.
J'espère que vous allez bien.
J'ai un premier tableau dans un onglet qui présente l'intégralité des employés d'une entreprise identifiés via des matricules, en détaillant pour chacun un certain nombre d'éléments (date d'embauche etc...).
J'ai dans un second excel une partie des lignes du premier tableau, certaines étant identiques et d'autres ayant été corrigées.
Je cherche une manière d'identifier ces corrections pour pouvoir construire des indicateurs comme le nombre de dates mises à jour, d'informations manquantes complétées et ce genre de choses. J'essaie sans y parvenir de trouver une formule qui chercherait chaque matricule des employés du tableau 2 dans le tableau 1 puis verrait si des modifications ont été apportées.
Auriez vous par chance des pistes ?
En vous remerciant par avance,
Arslan
Salut,
Peux-tu nous fournir des modèles de tes fichiers, avec chacun une dizaine de lignes, quelques unes qui correspondent, quelque unes non ? Et, nec plus ultra, indique d'une manière bien visible, par exemple avec une écriture rouge, le résultat que tu voudrais voir automatiser.
Amicalement.
Bonjour,
Merci de votre réponse ! voila ce que j'ai en tête, un tableau incomplet en onglet 1, des lignes corrigées en onglet 2 et en onglet 3 quelques indicateurs pour avoir un aperçu de l'ensemble des modifications (le fichier faisant quelques milliers de lignes normalement).
J'imagine que l'approche à adopter serait d'identifier grâce au numéro de chaque employé la ligne à comparer, puis de comparer la valeur des colonnes.
N'hésitez pas si vous avez des recommandations autres, tout conseil est bon à prendre !
Bien à vous
Arslan
Bonjour,
La recommandation serait de joindre un fichier qui ressemble un peu plus à l'original : On n'aurait pas l'impression de travailler pour rien...
Une solution :
Sub galopin()
Dim ARef, Arr, cpt(1 To 5), i&, k&
ARef = Feuil1.Range("B3").CurrentRegion.Value
Arr = Feuil2.Range("B3").CurrentRegion.Value
For k = 2 To UBound(Arr) 'on ne compare que les lignes du deuxième tableau
For i = 2 To UBound(ARef)
If Arr(k, 1) = ARef(i, 1) Then
If ARef(i, 1) = Arr(k, 1) Then
If ARef(i, 2) = "" And Arr(k, 2) <> "" Then cpt(1) = cpt(1) + 1
If ARef(i, 4) = "" And Arr(k, 4) <> "" Then cpt(2) = cpt(2) + 1
If ARef(i, 3) = "" And Arr(k, 3) <> "" Then cpt(3) = cpt(3) + 1
If ARef(i, 2) <> "" And Arr(k, 2) <> ARef(i, 2) Then cpt(4) = cpt(4) + 1
If ARef(i, 4) <> "" And Arr(k, 4) <> ARef(i, 4) Then cpt(5) = cpt(5) + 1
Exit For
End If
End If
Next
Next
Feuil3.Range("A3").Resize(UBound(cpt), 1) = Application.Transpose(cpt)
'Affiche la solution dans la colonne A...
'pour afficher dans la colonne C remplacer par : Feuil3.Range("C3")....
End SubA+