Salut Lolo,
Voici ma proposition, que j'ai tenté de faire la plus complète possible.
Sub Changer_mois()
Dim s As String, Ret As String
Dim i As Long, L As Long
Let Ret = InputBox("Par quel mois souhaitez-vous changer ?", "Changement mensuel")
If StrPtr(Ret) = 0 Then
MsgBox "Vous avez annulé", vbCritical + vbOKOnly, "Annulation utilisateur"
ElseIf Ret = vbNullString Then
MsgBox "Aucune saisie", vbCritical + vbOKOnly, "Pas de saisie utilisateur"
Else
If Not IsNumeric(Ret) Or Val(Ret) < 1 Or Val(Ret) > 12 Then
MsgBox "Mauvaise saisie", vbCritical + vbOKOnly, "Annulation"
Else
With Worksheets("répertoire_mensuel")
Let L = DernLigne(.Columns(5))
For i = 1 To L
s = .Range("E" & i).Value
Mid$(s, 4, 2) = Ret
.Range("E" & i).Value = CDate(s)
Next
End With
End If
End If
End Sub
Function DernLigne(plage As Range) As Long
If WorksheetFunction.CountA(plage) = 0 Then DernLigne = plage.Cells(1, 1).Row: Exit Function
DernLigne = plage.Find("*", , , , , xlPrevious).Row
End Function