Bonjour,
Quelque chose comme ça devrait marcher :
Sub ReportM()
Dim MtoR(), n%, m%, i%
With ActiveSheet
n = .Range("M" & .Rows.Count).End(xlUp).Row
If n < 54 Then Exit Sub
For i = 54 To n
If .Range("M" & i) <> "" Then
ReDim Preserve MtoR(54 To n + m)
MtoR(n + m) = .Range("M" & i): m = m + 1
End If
Next i
Application.ScreenUpdating = False
.Range("R54:R" & n).ClearContents
.Range("R54").Resize(m).Value = WorksheetFunction.Transpose(MtoR)
End With
End Sub
Il faudra peut-être la complétér une mise au format date de la plage affectée en R (si la date est reproduite sous forme numérique, ce qui devrait être le cas). La fin deviendrait alors :
.Range("R54:R" & n).ClearContents
With .Range("R54").Resize(m)
.Value = WorksheetFunction.Transpose(MtoR)
.NumberFormat = "dd/mm/yyy"
End With
End With
End Sub
Vérifier également que les dates sont exactement répercutées (là, cela devrait être le cas, mais mieux vaut toujours vérifier...)
Cordialement.