VBA changer caractères, avec position différente dans format date personnal

Bonjour à tous,

Tout d'abord une bonne année 2020 ! !! (il est jamais trop tard pour le souhaiter )

Je vous sollicite de nouveau car je bloque.. j'aimerai changer 2 petits caractères en 4ième position et 5ième position (toujours le même format à chaque ligne je précise) sur toute une colonne E, cependant dans une cellule comportant un format date personnalisé.

Ces 2 caractères correspondent au mois. Je souhaiterai avoir une inputbox qui me demande "quel mois souhaitez-vous changer?" et que je puisse inscrire "02", par exemple. Ainsi le nouveau mois "02" viendrai remplacer l'existant.

Cette date personnalisé m'aide à émettre des e-mails grâce à une macro (en Module1), et du coup j'ai fait des test en Module 4, pour tenter de changer ces 2 caractères, et c'est très moche pour l'instant..

Le fichier joint en copie ^^ c'est mieux que moi qui parle ..

D'avance à tous merci!! si vous avez une idée je prends

Lolo,

10pour-lolo.xlsm (29.23 Ko)

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

Pijaku !!

Merci je viens à peine de voir et de tester ! c'est juste parfait....

grand merci à toi

Rechercher des sujets similaires à "vba changer caracteres position differente format date personnal"