Obrigado
já funciona.
Eu tinha alterado as linhas como você alterou,
For i = 2 To UBound(a, 1)
If Not dic.exists(a(i, 10)) Then Set dic(a(i, 10)) = .Rows(1)
Set dic(a(i, 10)) = Union(dic(a(i, 10)), .Rows(i))
o problema era que continuava a dar erro... mesmo esse comando acima dá Erro run time erro 1004,
mas o problema era o nome do fornecedor que excedia os 31 caracteres, depois de alterados alguns ficou a funcionar na perfeição.
Valeu, obrigado pela disponibilidade, poupou algumas horas de trabalho
abraço
Postado : 13/01/2015 6:31 am