[VBa] Substitution de caractere

stikouhm

XLDnaute Nouveau
Bonjour,

y a t'il une fonction permettant de substituer un caractere dans une string ?

expl concret :

j'ai une chaine de caractere : MaChaine ="0000000000"
j'ai un parametre pos=4
je souhaite donc un fonction qui ferait :

fonction(MaChaine,pos,"1")
qui me renvoie : "0001000000"

mmmh... en esperant que ça parle à quelqu'un ^^ (pasqu'apres quelques recherches je ne trouve rien qui fasse ça... et je n'arrive pas à acceder à MaChaine en tant que tableau de caracteres, style MaChaine[pos] = "1")

Merci d'avance.
 
Dernière édition:

mutzik

XLDnaute Barbatruc
Re : [VBa] Substitution de caractere

bonjour

fonction de texte VBA
Lcase(string) = minuscule (pour LowerCase)
Ucase(string) = majuscule (pour UpperCase)
Left(string,x) = gauche de string sur x caractères
Right(string,x) = idem pour droite
mid(string,debut,nb caract) = extraction dans un string
len(string) = nb caractères d'un string

dans ton cas
maChaine = left(maChaine, pos - 1) & MonCaractèreAremplacer & right(maChaine(len(maChaine - pos - 1))
devrait être correct
 
Dernière édition:

stikouhm

XLDnaute Nouveau
Re : [VBa] Substitution de caractere

re ^^

j'ai trouvé une solution mais un peu crado à mon gout ...

en gros je reccupère :

MaChaine = Left(MaChaine,pos - 1) & "1" & Right(MaChaine,Len(MaChaine) - pos)

mais si y a plus propre je suis preneur ^^

Edit : eheh merci mutzik, tu as été très rapide sur le coup, j'ai pensé la même chose ... donc à priori y aurait pas mieux ? (en même tps ça marche)
 

wilfried_42

XLDnaute Barbatruc
Re : [VBa] Substitution de caractere

bonjour

Code:
function nouv(machaine as string,pos as integer, car as string) as string
     if pos < 1 or pos > len(machaine) then nouv = "#POS" : exit function
     if pos > 1 then nouv = left(machaine, pos-1) else nouv = ""
     nouv = nouv & car
     if pos < len(machaine) then nouv = nouv & right(machaine,len(machaine)-pos)
end function

fonction personalisée, avec les controles necessaires,
 
Dernière édition:

G.David

XLDnaute Impliqué
Re : [VBa] Substitution de caractere

Sans contredire qui que ce soit
Code:
Function rempl(a As String, b As Byte, c As String)
a = Left(a, b - 1) & c & Right(a, Len(a) - b)
rempl = a
End Function
c'est bourrin ya pas de test de longueur de la chaine si b est au delà mais ça marche sur trois cellule la chaine ; le numéro du caractère et le caractère de remplacement
G.David
 

myDearFriend!

XLDnaute Barbatruc
Re : [VBa] Substitution de caractere

Bonsoir stikouhm, mutzik, wilfried_42, G.David, pierrejean, le Forum,

Pour info, on peut aussi tirer parti d'une fonction de feuille de calcul faite exactement pour ça : REMPLACER()

Pour l'exploiter en VBA, on fait donc tout simplement :
Code:
[COLOR=NAVY]Dim[/COLOR] MaChaine [COLOR=NAVY]As String
Dim[/COLOR] Pos [COLOR=NAVY]As Byte[/COLOR]

    MaChaine = "0000000000"
    Pos = 4
    
    MsgBox [B]Application.Replace(MaChaine, Pos, , "1")
[/B]
Et on obtient... "0001000000" ;)

Cordialement,
 
Dernière édition: