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:=FalseSi 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 SubJe 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 !