Olá,
@LeoHenrique .
Consegui corrigir no primeiro código, agora ele replica as datas corretamente. Utilize o código abaixo, que já está corrigido, no lugar do anterior.
A origem do problema é que os dados que estão na planilha
Nao_Faturados possivelmente são importados de algum outro Sistema e as "datas" que são lançadas na coluna Z são textos que se parecem com datas, não são datas reais.
Aí, o VBA ao ler na célula o texto 03/06/2022, esperto que é, ele entende isso como uma data, e como ele estudou em escolas dos EUA, ele interpreta como mm/dd, ou seja, mar 06. Então ele pergunta para o Windows, como a máquina está configurada para representar 06 mar 2022 e obtém a resposta: coloque 06/03/2022. Por isso é que ele troca 03/06/2022 por 06/03/2022.
Isso só ocorre com as "datas" cujo dia seja de 01 a 12. Por exemplo, se o texto for 17/08/2022, o VBA tenta entender como mm/dd, mas na escolinha lhe ensinaram que o maior número que representa
mm é 12, ou seja, não existe mês 17. Então ele conclui que aquilo não é uma data e pra evitar confusão ele foi treinado pra não mexer, por isso que essas "datas" não são alteradas, e ele replica como um texto: 17/08/2022.
Para contornar eu acrescentei ao código os comandos para transformar as colunas Y:Z em datas reais. Veja se agora atende.
#
Código: Selecionar todosSub ReplicaDatasV2()
Dim ref As Range, dat As Range, refAdd As String
Application.ScreenUpdating = False
Range("AI7:AI" & Cells(Rows.Count, 2).End(3).Row).Value = ""
With Sheets("Nao_Faturados")
If Application.IsText(.[Y2]) Then
.Columns("Y:Y").TextToColumns , FieldInfo:=Array(1, 4)
End If
If Application.IsText(.[Z2]) Then
.Columns("Z:Z").TextToColumns , FieldInfo:=Array(1, 4)
End If
End With
For Each ref In Range("B7:B" & Cells(Rows.Count, 2).End(3).Row)
Set dat = Sheets("Nao_Faturados").[G:G].Find(ref.Value)
If Not dat Is Nothing Then
refAdd = dat.Address
Do
ref.Offset(, 33) = IIf(ref.Offset(, 33).Value = "", _
dat.Offset(, 19).Value, ref.Offset(, 33).Value & Chr(10) & dat.Offset(, 19).Value)
Set dat = Sheets("Nao_Faturados").[G:G].FindNext(After:=dat)
Loop While dat.Address <> refAdd
End If
Next ref
End Sub