Comparer 2 tableurs
Bonjour,
Pour une fois, l'exposé est simple à faire.
J'ai un tableur "maitre" géré par le secrétaire d'une association qui en fait une copie au trésorier.
Au départ, il s'agit donc de 2 tableurs dont les éléments sont identiques.
Le trésorier est susceptible d'actualiser des éléments au moment de l’encaissement de cotisations...
QUESTION : comment mettre en place un "comparateur" ou un "détecteur de différences" entre ces 2 tableurs ?
Je joins un tableur mettant côte à côte les éléments "secrétaire/trésorier" sachant que la réalité ils sont sur des tableurs différents.
Idée ? Je pensais lancer une recherche par nom puis une comparaison par ligne mais je ne réussis pas à la mettre en musique
Cordialement
Bonjour
Au lieu de comparer les deux tableaux, pourquoi ne pas envisager d’aller copier le tabeau maître et de le coller sur une feuille du deuxième fichier ?
A te relire.
bonjour
meilleurs voeux
un essai avec une mfc globale ;je vais voir pour vraiment cibler
cordialement
Bonjour,
J'avais omis de cocher "m'avertir si une réponse est postée".....
Donc je découvre à l'instant et je vais voir....
Excellente journée
Bonjour,
Je reviens ici au sujet de ce post.
En effet, la formule proposée permet de vérifier tout un ensemble de lignes.
Toutefois, ceci a l'inconvénient d'être dans l'obligation de chercher ensuite dans quelle colonne se trouve l’erreur.... et quand il y en a plus de 20 dans le tableur réel....
J'ai donc fait la même chose par colonne cf tableur "association 2".....et où voit tout de suite où cela ne va pas.
mais je pense que l'on peut faire mieux c'est à dire avoir dans le tableur proprement dit une alerte de différence par un affichage d'un fond de couleur via.... et là je ne sais pas de trop
Cordialement
Bonsoir le forum,
Toutes les comparaisons s'effectue dans la feuille "Secretaire"
- communs et non communs à côté du tableau initial.
- surlignage des différences, comme demandé.
Option Explicit
Sub Comparaison()
Dim a, i As Long, j As Long, dico As Object, x As Range
Application.ScreenUpdating = False
Set dico = CreateObject("Scripting.Dictionary")
With Sheets("Tresorier").Cells(1).CurrentRegion
For i = 1 To .Rows.Count
dico(.Cells(i, 1).Value) = .Rows(i).Value
Next
End With
With Sheets("Secretaire").Cells(1).CurrentRegion
.Offset(1).Resize(.Rows.Count - 1, .Columns.Count).Interior.ColorIndex = xlNone
.Offset(, .Columns.Count + 1).EntireColumn.Clear
For i = 1 To .Rows.Count
If dico.exists(.Cells(i, 1).Value) Then
For j = 2 To .Columns.Count
If .Cells(i, j).Value <> dico(.Cells(i, 1).Value)(1, j) Then
If x Is Nothing Then
Set x = .Cells(i, j)
Else
Set x = Union(x, .Cells(i, j))
End If
End If
Next
.Rows(i).Offset(, .Columns.Count + 1).Value = dico(.Cells(i, 1).Value)
dico.Remove .Cells(i, 1).Value
End If
Next
If Not x Is Nothing Then x.Interior.ColorIndex = 43
With .Offset(, .Columns.Count + 1).EntireColumn
With .Rows(1)
.Interior.ColorIndex = 36
.Borders(xlInsideVertical).Weight = xlThin
.BorderAround Weight:=xlThin
End With
.Font.Name = "calibri"
.Font.Size = 10
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Columns.AutoFit
End With
If dico.Count > 0 Then
With .Offset(.Rows.Count + 1, .Columns.Count + 1).Resize(dico.Count)
.Value = Application.Transpose(Application.Transpose(dico.items))
.Borders(xlInsideVertical).Weight = xlThin
.BorderAround Weight:=xlThin
End With
End If
End With
Application.ScreenUpdating = True
End Subklin89
Bonsoir,
Bravo pour ce code
Pour l'application sur d'autres feuilles "identiques en terme de structure", il suffit juste de changer les noms de feuilles dans le code ?
Cordialement
Tonthon