Supprimer un caractère d'une chaîne [Résolu]

Signaler
Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

après avoir recherché pas mal d'info sur les manipulations de chaîne de caractères je viens ici.

Voici la question:

Comment supprimer un seul et unique caractère en fonction de sa position dans une chaine de caractère.

Par exemple supprimer le 3e caractère de la chaîne en partant de la droite.

Merci de votre aide.

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ce que je t('ai dit plus haut est simple.
Si tu veux t'amuser, par contre ===>> regarde du plus "tortueux" ===>>
toto = "123456789"
pos = 3
Mid(toto, Len(toto) - pos + 1, 1) = Chr(1)
MsgBox Replace(toto, Chr(1), "")

Mais uniquement pour s'amuser à sodomiser les coléoptères !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012

toto = "123456789"
pos = 3
Mid(toto, Len(toto) - pos + 1, 1) = Chr(1)
MsgBox Replace(toto, Chr(1), "")



C'est exactement ce que je cherchais. Ca marche nickel. Merci

(je ne peux pas mettre en réponse acceptée car ça bug )
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
dans ton exemple : to résultat est simplement la concaténation de tout ce qui se trouve avant ce caractère avec tout ce qui se trouve après ce caractère.
==>> left et mid sont les deux seules fonctions qu'il te faut donc utiliser et elles sont clairement (avec exemple) exposées dans ton aide VBA.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012

C'est la solution que j'ai envisagé en effet.

Mais il n'existe pas une fonction qui permet de le faire directement ?

J'ai trouvé la fonction replace qui se rapproche de ce que je veux.
Exemple
[i]B=toto
B = Replace(B, "o","p")/i

On obtient alors tptp.Moi ce que j'aimerai, c'est pouvoir lui dire de ne remplacer que le deuxième caractère en partant de la gauche afin d'obtenir tpto.

Merci d'avance
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Et en voilà une autre, de méthode, pour s'amuser avec les coléoptères (elle est démesurée) :
toto = "123456789"
pos = 3
titi = Split(StrConv(toto, vbUnicode), Chr(0))
titi(UBound(titi) - pos) = ""
MsgBox Join(titi, "")

Voilà ! Je te conseille de suivre les indications de mon tout premier message. Elles me paraissent plus sages et mieux adaptées à un débutant.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ah bé ...
Avant :
Par exemple supprimer le 3e caractère de la chaîne en partant de la droite

Moi ce que j'aimerai, c'est pouvoir lui dire de ne remplacer que le deuxième caractère en partant de la gauche

Ben ... tu te décides et tu reviens, hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Donc suppression du 3ème caractère à partir de la droite. ===>>
J'aurais préféré de voir écrire alors ceci :
toto = "123456789"
pos = 3
MsgBox Left(toto, Len(toto) - pos) & Right(toto, pos - 1)

En résumé : mille et une manière (on pourrait en inventer d'autres) de procéder, en matière de traitement de chaînes de caractères. A chacun ses goûts et ses manies.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ