remplacement d'une chaine de caractere dans une autre

mcastex

XLDnaute Nouveau
Bonjour a tous !
Voila quelques temps que votre forum m'aide grandement dans la réalisation de mes macros Excel. Je me retourne vers vous car je suis bloqué par une manip qui est certainement simple :

Je posséde dans une macro une chaine de caractére, je me sert de cette chaine comme d'un buffer pour stocker de nombreuses informations.
Dim buffer As String ("id:0nom:jeanPrenom:michelid:1nom:luc...")
je souhaiterais remplacer une chaine dans cette String par une chaine de longueur equivalente ou non. Par exemple la chaine "jean" par "marilou".

J'arrive a recuperer la position du premier et dernier caractere de la chaine a remplacer (dans l'exemple j et n)
J'ai essayé d'utiliser Mid comme ceci :
Mid(buffer,posstart,posEnd) = "marilou" mais il me remplace juste jean et mari

J'ai réfléchi a faire une concaténation ou encore au replace mais je ne vois pas trop comment m'y prendre.

en tout cas, merci de l'aide que vous apportez tous les jours a des pommés comme moi :)

Math
 

pierrejean

XLDnaute Barbatruc
Re : remplacement d'une chaine de caractere dans une autre

Bonjour mcastex

Inutile de rechercher l'emplacement de la chaîne

a tester:

Code:
buffer=replace(buffer,"jean" ,"marilou")

éventuellement, s'il s'agit d’éviter un jean à l’intérieur d'un mot (ex jeanfoutre)

Code:
 buffer=replace(buffer," jean "," marilou ")
 

mcastex

XLDnaute Nouveau
Re : remplacement d'une chaine de caractere dans une autre

Merci pour la rapidité de votre réponse.
Si dans ma chaine de caractere j'ai plusieurs Jean, il va remplacer tous les Jean si je ne me trompe pas ? Est ce qu'il est possible avec la fonction replace de remplacer seulement la premiere occurence a partir d'une position, ou quelque chose dans le genre ?
Merci
 

Gardien de phare

XLDnaute Accro
Re : remplacement d'une chaine de caractere dans une autre

Re,

Parfois utile la touche F1 pour accéder à l'aide de VBA !

Pour remplacer seulement la première occurrence de la chaîne cherchée..

VB:
Sub tt()
Dim Ch As String, Ch2 As String
Ch = "ABBCCDefgBBrth"
Ch2 = Replace(Ch, "BB", "bbbb", , 1, vbTextCompare)
End Sub
 

mcastex

XLDnaute Nouveau
Re : remplacement d'une chaine de caractere dans une autre

J'ai utilisé la touche F1, cependant il y a quelque chose que je ne comprend pas.

buffer="id:1date:22/04/1990nom:jean/id:2date:22/04/1990nom:jacques"

si je fais : Replace(buffer,"22/04/1990","22/04/18",9,1)

et j'obtiens : "22/04/18nom:jean/id:2date:22/04/1990nom:jacques"
au lieu de "id:1date:22/04/1990nom:jean/id:2date:22/04/1990nom:jacques"
 

Gardien de phare

XLDnaute Accro
Re : remplacement d'une chaine de caractere dans une autre

Bonsoir,

Avec une syntaxe correcte, ça marche comme attendu :
VB:
Sub tt()
Dim buffer As String, buffer2 As String
buffer = "id:1date:22/04/1990nom:jean/id:2date:22/04/1990nom:jacques"
buffer2 = Replace(buffer, "22/04/1990", "22/04/18", , 9, 1)
MsgBox buffer2
End Sub

à comparer à :
Replace(buffer,"22/04/1990","22/04/18",9,1)
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 823
Membres
103 971
dernier inscrit
abdazee