Re sylvain21,
A tester :
Option Explicit
Sub Rapprochement()
Dim a, i As Long, w
a = Sheets(1).Range("a1").CurrentRegion.Value
'la plus simple façon pour créer un dictionnaire
'On déterminera la clé avec les valeurs de la 1ère colonne
With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(a, 1)
ReDim w(1 To 4) 'variable tableau de 4 éléments
'affectation des 2 premiers éléments de la variable tableau
w(1) = a(i, 1): w(2) = a(i, 2)
'ajoute la clé et les éléments associés soit un tableau de 4 valeurs
.Item(a(i, 1)) = w
'w(1) w(2)sont affectés
'w(3) w(4)sont vides pour l'instant
Next
a = Sheets(2).Range("a1").CurrentRegion.Value
For i = 2 To UBound(a, 1)
'si la clé existe
If .exists(a(i, 1)) Then
'rappel des éléments de la clé concernée
w = .Item(a(i, 1))
'Affectation du 3ème élément de la variable tableau qui était vide
w(3) = a(i, 2)
'w(4)est toujours vide
Else
'sinon (si la clé n'existe pas "rebelotte")
ReDim w(1 To 4)
'Affectation du 1er et 3 eme élément
w(1) = a(i, 1): w(3) = a(i, 2)
'w(2)reste vide
End If
'Au final le 4ème élement est la différence
w(4) = w(2) - w(3)
'Mise en mémoire de la clé et de ses éléments
.Item(a(i, 1)) = w
Next
Application.ScreenUpdating = False
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Synthese").Delete
On Error GoTo 0
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Synthese"
Sheets("Synthese").Cells(1).Resize(1, 4).Value = Array("Fournisseur", "J", "J+1", "Diff")
Sheets("Synthese").Cells(1).Offset(1).Resize(.Count, 4).Value = _
Application.Transpose(Application.Transpose(.items))
With Sheets("Synthese").Cells(1).CurrentRegion
.Font.Name = "calibri"
.Font.Size = 10
.VerticalAlignment = xlCenter
.BorderAround Weight:=xlThin
.Borders(xlInsideVertical).Weight = xlThin
With .Rows(1)
.BorderAround Weight:=xlThin
.Interior.ColorIndex = 38
End With
.Columns.AutoFit
End With
Application.ScreenUpdating = True
End With
End Sub
La colonne C sur tes 2 feuilles, on en fait quoi
klin89