Sub GarderDates2()
Dim tablo() As Variant
With Sheets("Page1_1")
.Range("AI2").Resize(.UsedRange.Rows.Count - 1).Select
tablo = .Range("AI2").Resize(.UsedRange.Rows.Count - 1).Value2 'on met la colonne AI dans un tablo vba
For i = LBound(tablo, 1) To UBound(tablo, 1) 'pour chaque ligne
nbslash = Len(tablo(i, 1)) - Len(WorksheetFunction.Substitute(tablo(i, 1), "/", "")) 'compte le nombre de "/"
If IsDate(tablo(i, 1)) Then 'si Excel détecte une date
tablo(i, 1) = DateSerial(Year(tablo(i, 1)), Month(tablo(i, 1)), 1) 'on ne garde que le mois et année
ElseIf nbslash <> 0 Then 'sinon, s'il y a des "/"
pos1 = 0
For j = 1 To nbslash
pos1 = InStr(pos1 + 1, tablo(i, 1), "/")
pos2 = InStr(pos1 + 1, tablo(i, 1), "/")
If pos2 - pos1 = 3 Then 'si on a 2 "/" séparés de 3 caractères ==> c'est une date complète
sousdate = Mid(tablo(i, 1), pos1 - 2, 12)
Else 'sinon, il y a du texte entre les deux "/"
sousdate = Mid(tablo(i, 1), pos1 - 2, 7)
End If
If IsDate(sousdate) Then
tablo(i, 1) = DateSerial(Year(sousdate), Month(sousdate), 1)
Exit For
End If
Next j
ElseIf InStr(1, tablo(i, 1), "from") <> 0 Then
sousdate = Mid(Split(tablo(i, 1), "from ")(1), 1, 10)
If IsDate(soudate) Then
tablo(i, 1) = DateSerial(Year(sousdate), Month(sousdate), 1)
Else
tablo(i, 1) = tablo(i, 1)
End If
' MANQUE le cas des dates au format "Decembre 2018"
Else
tablo(i, 1) = tablo(i, 1)
End If
Next i
.Range("AI2").Resize(UBound(tablo, 1)).Value2 = tablo
.Range("AI2").Resize(UBound(tablo, 1)).NumberFormat = "mm/yyyy"
End With
End Sub