Placer caractere dans chaine de caractere

Bonjour

Dans la procédure suivante, je voudrais arriver à dimanche 14 mai 2023-XXX XX xxxx

C'est à dire insérer un tiret après l'annee dans A

Sub test()
A = "dimanche 14 mai 2023XXX XX xxxx"
Annee = "20##"

For i = 1 To Len(A)
Annee_R = Mid(A, i, 4) & " " & "-"
If Mid(A, i, 4) Like Annee Then
X = Replace(A, Annee, Annee_R)

Debug.Print Annee_R
End If

Next

End Sub

Merci

Bonjour,

Sub test()
A = "dimanche 14 mai 2023XXX XX xxxx"
Annee = CStr(Year(Now))
Debug.Print Replace(A, Annee, Annee & "-")
End Sub

A+

merci

je vais essayer de comprendre

Tu n'as pas besoin de compter le nombre de caratere,

Annee = CStr(Year(Now))

"Cstr" transforme l'annee en texte (on compare du texte avec du textee et non un texte avec un nombre)
"Year" donne l'annee de (Now) maintenant

Replace(A, Annee, Annee & "-")

"Replace" va remplacer le 2023 par 2023-

Je ne comprenais pas Year(Now), j'ai donc remplacé les dates dans A

Cela ne marche que pour 2023, résultats ci-dessous

Procédure sera insérée dans boucle

Cela ne marche que pour 2023, résutats ci-dessous

dimanche 14 mai 2023-XXX XX xxxx

dimanche 14 mai 2024XXX XX xxxx

dimanche 14 mai 2025XXX XX xxxx

dimanche 14 mai 2026XXX XX xxxx

Avec ça tu va jusqu'a 2029

Sub test()
A = "dimanche 14 mai 2023XXX XX xxxx"
R = Mid(A, 1, InStr(1, A, " 202") + 4) & "-"

A = R & Right(A, (Len(A) - Len(R)))
Debug.Print A
End Sub

R recherche " 202" en caractere mais si il recheche " 20" il pourrait confondre avec le jour 20.

Bonjour à tous,

Une piste : ?

Sub Test()
   a = "dimanche 14 mai 1999YXX XX xxxx"
   a = IIf(Mid(a, Len(a) - 11, 1) = "-", a, Left(a, Len(a) - 11) & "-" & Right(a, 11))
   MsgBox a
End Sub

ou plus rapide :

Sub Test()
   a = "dimanche 14 mai 1999YXX XX xxxx"
   If Mid(a, Len(a) - 11, 1) <> "-" Then a = Left(a, Len(a) - 11) & "-" & Right(a, 11)
   MsgBox a
End Sub

Je vous remercie, je vais regarder à l'usage les différentes proposition

Je pensais que c'était simple !

Rechercher des sujets similaires à "placer caractere chaine"