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

Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 27 juin 2012 à 21:30
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.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
3
Merci
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 )

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de melinette35
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
68
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
27 juillet 2012
0
Merci
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
Commenter la réponse de melinette35
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu