Remplacer un caractère par un autre

giboudin Messages postés 17 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 14 novembre 2010 - 14 nov. 2010 à 01:40
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 14 nov. 2010 à 19:53
Bonjour à tous,

Je m'arrache les cheveux sur un problème certainement tout simple mais que je ne parviens pas à résoudre. Je pose le décor :
deux TextBox et un bouton.
Je souhaite que le clic sur le bouton entraîne une comparaison entre deux caractères ayant la même position dans les deux TextBox (premier caractère dans l'exemple)et que dans le cas où ils sont différents, celui de la deuxième chaîne prenne la valeur du caractère de la première.
La partie comparaison ne me pose pas de problème. En revanche dès lors qu'il s'agit de remplacer, ça ne passe pas, je me retrouve avec l'erreur suivante : "la propriété 'Chars' est 'ReadOnly' ".
Je vous transmets ci-dessous mon code :

If TextBox1.Text(0) <> TextBox2.Text(0) Then
TextBox2.Text(0) = TextBox1.Text(0)

Else
End If

Je sais que la comparaison fonctionne car si je remplace la partie "remplacement" par une MsgBox m'indiquant si les caractères sont = ou <> j'ai bien la bonne indication qui m'est donnée. Je précise avoir tenté de coder avec "replace" j'ai les mêmes problèmes !
Je vous remercie par avance pour votre aide.

4 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 nov. 2010 à 03:17
Salut

Attention tu vas devenir chauve
c'est readonly il va falloir que tu codes autrement
 Dim str1() As String
        Dim str2() As String
        ReDim str1(TextBox1.Text.Length - 1)
        For iter = 0 To TextBox1.Text.Length - 1
            str1(iter) = TextBox1.Text.Substring(iter, 1)
        Next
        ReDim str2(TextBox2.Text.Length - 1)
        For iter = 0 To TextBox2.Text.Length - 1
            str2(iter) = TextBox2.Text.Substring(iter, 1)
        Next


tu peux comparer str1 et str2 et remplacer
If str1(0) <> str2(0) Then
str1(2) = str2(2)
End If
0
giboudin Messages postés 17 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 14 novembre 2010
14 nov. 2010 à 13:27
Salut, ShayW et merci pour ton message. Je ne l'ai pas précisé mais je suis débutant et par conséquent, je ne maîtrise pas tout. Pourrais-tu, dans la mesure du possible, me dire en français (je veux dire en expliquant, je ne remets pas en cause tes compétences linguistiques, loin de moi cette idée) et non pas en code ce qui "bloque" dans ce que j'ai fait et notamment à quoi fait référence ce "ReadOnly".
Pour ce qui est de ton code, je ne l'ai pas encore décortiqué (pas eu le temps), mais au delà d'un code qui fonctionne, je souhaite vraiment comprendre ! et passer ce blocage car je vais probablement y être confronté dans le futur !
En tout cas, merci beaucoup dès à présent pour les infos transmises.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 nov. 2010 à 18:03
Salut
Moi aussi je suis débutant
alors pour expliquer
je vais essayer c'est bien pour moi aussi

j'ai testé avant de dire des conneries
on ne peut pas changer le caractère d'un string
(chaine) c'est readonly seulement pour lecture

par ex
dim str1 as string
dim str2 as string
if str1(0) <> str2(0) then
'c'est correcte parce que je lis seulement
str2(0) = str1(0) 'la non tu essayes de modifier
le caractère 0 de str2
j'espère avoir expliqué
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 nov. 2010 à 19:53
Je me complique vraiment la vie
voila
on peut faire comme çà
 Dim ch As Char
        If TextBox1.Text(0) <> TextBox2.Text(0) Then
           'gardes le caractère 0 d
            ch = TextBox1.Text(0)
            TextBox2.Text = ch & TextBox2.Text.Substring(1)
        End If


ce que j'ai fait j'ai formé de nouveau le string
du textbox2
le 1er caractère de texbox1.text
ch = TextBox1.Text(0)

TextBox2.Text.Substring(1)
toute la chaine à partir du 2 ème caractère de
textbox2.text

ensuite je fais une concaténation TextBox2.Text = ch & TextBox2.Text.Substring(1)
0
Rejoignez-nous