Remplacer un caractère dans une chaîne

Bonjour à tous, voilà je viens vous demander votre aide, je dois optimiser un programme assez simple qui consiste à remplacer un caractère dans une chaîne par un autre en fonction du précédent.

Je m'explique : Il faut remplacer "C1:"par "C0:" ; "C2:" par "C1:" ; "C2:" par "C3" etc...

Comment puis-je transformer le caractère dont j'ai besoin en variable numérique, et comment la replacer dans la chaîne, sachant que le programme doit pouvoir s'appliquer à un grand nombre de ligne et qu'on ne connait pas le contenu des cellules à l'avance.

Voici une partie du code que je dois optimiser :

Sub decalage()

    Columns("P:P").Select
    Selection.Replace What:="C1:", Replacement:="C0:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C2:", Replacement:="C1:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C3:", Replacement:="C2:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C4:", Replacement:="C3:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C5:", Replacement:="C4:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C6:", Replacement:="C5:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C7:", Replacement:="C6:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C8:", Replacement:="C7:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C9:", Replacement:="C8:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C10:", Replacement:="C9:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="C11:", Replacement:="C10:", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Si quelque pouvait m'aider ça serait chouette !

Bonjour,

Un exemple à tester :

Sub decalage()

Dim Départ As Integer, Fin As Integer, Incrément As Integer, i As Integer

Départ = 1 
Fin = 11
Incrément = -1
For i = Départ To Fin
    Columns("P:P").Replace What:="C" & i & ":", Replacement:="C" & i + Incrément & ":", LookAt:=xlPart
Next i

End Sub

Je viens de tester et ça fonctionne parfaitement, c'est dingue je ne pensais pas que la solution était aussi courte, Perdo22, tu ne sais pas à quel point tu viens de me rendre un immense service, je te remercie beaucoup pour ta rapidité et pour ton aide !

Je viens de tester et ça fonctionne parfaitement, c'est dingue je ne pensais pas que la solution était aussi courte, Perdo22, tu ne sais pas à quel point tu viens de me rendre un immense service, je te remercie beaucoup pour ta rapidité et pour ton aide !

Merci du retour, content que la solution te conviennes !

Rechercher des sujets similaires à "remplacer caractere chaine"