Salut Grizou, Ausecour,
ça fonctionne sans problème chez moi excepté un décalage de ligne pour le résultat "1".
Pour le plaisir, j'ai ré-écrit le code à ma façon.
Je postule, car je ne le vérifie pas, que chaque ligne compte le même nombre de données séparées d'une virgule.
La macro démarre, dans un fichier comme dans l'autre, sur un double-clic dans la feuille.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData1, tData2, tSplit, tExtract(), iIdx%
Cancel = True
'
For x = 1 To 2
With Workbooks("Dataset" & IIf(x = 1, "1", "2")).Sheets(1)
iIdx = 0
Erase tExtract
tData2 = .Range("A1").Resize(.Range("A" & Rows.Count).End(xlUp).Row, 1).Value
For y = 1 To UBound(tData2, 1)
tSplit = Split(tData2(y, 1), ",")
iIdx = IIf(UBound(tSplit) + 1 > iIdx, UBound(tSplit) + 1, iIdx)
ReDim Preserve tExtract(UBound(tData2, 1), iIdx)
For Z = 0 To UBound(tSplit)
tExtract(y - 1, Z) = tSplit(Z)
Next
Next
.Range("A1").Resize(UBound(tData2, 1), iIdx).Value = tExtract
If x = 1 Then tData1 = .Range("A1").Resize(UBound(tData2, 1), iIdx + 2).Value
If x = 2 Then tData2 = .Range("A1").Resize(UBound(tData2, 1), iIdx).Value
End With
Next
For x = 2 To UBound(tData1, 1)
iIdx = 0
For y = 1 To UBound(tData1, 2) - 2
If tData1(x, y) <> tData2(x, y) Then
iIdx = 1
Exit For
End If
Next
If iIdx = 0 Then tData1(x, UBound(tData1, 2)) = 1
Next
Workbooks("Dataset1").Sheets(1).Range("A1").Resize(UBound(tData1, 1), UBound(tData1, 2)).Value = tData1
Workbooks("Dataset2").Sheets(1).Range("A1").Resize(UBound(tData2, 1), UBound(tData2, 2)).Value = tData2
'
End Sub
A+