Modifier un des caractères dans une chaine de caracteres

Résolu/Fermé
ClaudeDordogne Messages postés 47 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 7 mars 2015 - 15 janv. 2015 à 17:06
ClaudeDordogne Messages postés 47 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 7 mars 2015 - 16 janv. 2015 à 21:58
Bonjour,

j'utilise VBA de excel 2007

j'ai une string : "abcdefgh" (de longueur variable)
et je désire changer un caractère de cette chaîne.

par exemple le 4 ème (le "d") que je veux changer en "s" par exemple
(mais sa place doit pouvoir être variable)

dans cet exemple
"abcdefgh" deviendrait "abcsefgh"

merci de votre aide :)

car malgré divers essais avec les fonctions de manipulation de chaîne... je rame :(
Très cordialement
Claude

A voir également:

5 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
15 janv. 2015 à 17:19
Bonjour

Claude mentionne "le 4è", ce qui laisse à penser qu'on indique le rang du caractère et pas le caractère lui-même.

a=ActiveCell.Value
r=InputBox("Quel rang ?")
n=InputBox("Quelle nouvelle lettre ?")
rempl=Left(a,r-1) & n & Right(a,Len(a)-r)
ActiveCell.Value=rempl


A+
1
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
15 janv. 2015 à 17:14
Bonjour Claude, bonjour le forum,

As-tu essayer avec Replace ?
0
ClaudeDordogne Messages postés 47 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 7 mars 2015
15 janv. 2015 à 17:41
Merci Thau Theme pour ta réponse.
MERCI Zoul67 pour ta réponse claire, rapide et effiocace :)

un truc en plus, si je peux demander :
si on veut remplacer non pas 1 mais 2 ou 3 caractères consécutifs?
(on défini avant si 2 ou 3, et la place du 1er
exemple : "abcdefgh",
on veut remplacer 2 caracteres
a partir du 4 ème
"de" devient "zg"
donc à partir de "abcdefgh"on obtient "abczgfgh"
on indique le rang du caractère et pas le caractère lui-même.

Merci et Très Cordialement
Claude
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
15 janv. 2015 à 17:47
a=ActiveCell.Value
r=InputBox("Quel rang ?")
n=InputBox("Quelle(s) nouvelle(s) lettre(s) ?")
rempl=Left(a,r-1) & n & Right(a,Len(a)-r+1-Len(n))
ActiveCell.Value=rempl
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
15 janv. 2015 à 19:25
Bonjour Claude,

Il y a plein de fonction pour manipuler des chaines de texte.
https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/

InStr me semble une possibilité si le rang du texte a changer est inconnu.

Dans le lien, il y a les fonction left, right, len utilisé dans les exemples précédents et aussi quelques autres.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ClaudeDordogne Messages postés 47 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 7 mars 2015
16 janv. 2015 à 21:58
Bonsoir,
Tout d'abord Merci
Merci à Zoul67 , Merci à Thau Theme, Merci à PlacageGranby
pour votre aide qui m'a permis de résoudre ce problème
Grâce à vous, je peux marquer "Résolu" :))

https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/ va me permettre de bien approfondir mon VBA
Très Cordialement
Claude
0