supprimer certains caractères

  • Initiateur de la discussion Initiateur de la discussion Emmanuel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Emmanuel

Guest
Bonjour Le Forum

Sous VBA comment peut on supprimer certains carractères telque "." , ";" et autres dans une colonne bien précise ou une plage de cellules

en faite dans cette colonne se sont des numéros de téléphone qui sont importé et de temps en temps il ya des caractères dans le numero
exemple: espace04 25point virgule47point23 21
donc je cherche a supprimer l'espace au début et la ponctuation .

Merci pour vos aides

Emmanuel
 
Salut Emmanuel,

A partir d'Excel 2000, tu peux utiliser la fonction Replace apparue avec VB6, par exemple comme ceci :

Sub SupPONCT()
Dim CL As Range, Tel As String
For Each CL In Selection
Tel = Trim(CL.Text)
If Tel <> "" Then
If InStr(Tel, ".") > 0 Then
Tel = Replace(Tel, ".", " ")
End If
If InStr(Tel, ",") > 0 Then
Tel = Replace(Tel, ",", " ")
End If
If InStr(Tel, ";") > 0 Then
Tel = Replace(Tel, ";", " ")
End If
CL.FormulaR1C1 = Tel
End If
Next
End Sub

Ici, chaque . ou , ou ; est remplacé par un espace.
Mais, si tu préfères, tu peux remplacer par une chaîne vide "".

A+
LN
 
Salut LN, bonjour Emmanuel,

J'allais coller ces qq lignes, (nom de la plage à traiter : RENATO), mais tu m'as devancé.

Sub Sup_ponctuation()

Dim Cellule As Object

Range("RENATO").Select
For Each Cellule In Range("RENATO")

Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:=";", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False


Next Cellule

End Sub

Ce script doit faire hurler les puristes, mais fonctionne tout de même. Pourtant, il apparait que lorsque on se trouve devant une cellule contenant trois points successifs, elle ne fait pas le ménage demandé.
Et je viens de tester la même chose avec ton code, et j'ai constaté la même chose.

Ceci vient-il de ma config ?
As tu une autre idée ?

Merci pour la suite que tu pourras donner.
 
Salut Renato,

C'est en effet bien curieux ces trois ... qui restent malgré notre science excellomacroiste !
Cependant, à y regarder de très près, on contaste qu'ils ne constituent qu'un caractère unique (un seul Suppr suffit pour enlever les trois).
Tel un sioux sur le sentier de la guerre, j'ai jeté un coup à la liste des corrections automatiques pour voir ... remplacés par ...

Ouf, la macro n'est pas en cause.

C'est alors que je me suis rappelé l'obstination d'Excel à remplacer FRANCE par France et mon incroyable consommation de cachets d'aspirine avant de comprendre enfin le phénomène...

A+
LN
 
Re bonsoir LN

Quoi qu'il en soit, notre souci ne devrait déranger en rien Emmanuel dans son épurage de données.

Cependant, pour y revenir et au regard de ton dernier post, dois-je entendre que trois points successifs ne sont pas "supprimables" ?

J'ignorai le coup de la France/france.

Merci à toi
 
Rebonsoir,

Bien sûr, ce caractère triple ... est supprimable, il suffit de l'isoler pour connaître son code, en l'occurence 133, et ajouter un bout de code comme :

If InStr(Tel, Chr(133)) > 0 Then
Tel = Replace(Tel, Chr(133), " ")
End If

En revanche pour FRANCE convertie en France, ALLEMAGNE convertie en Allemagne et beaucoup d'autres pays, on peut les supprimer de la liste des corrections automatiques si l'on tient à les voir en majuscules.

A+
LN
 
Bonsoir

Excel dans son grand dévouement à nous simplifier la vie, remplace par une correction automatique la saisie des trois caractères "." par un seul caractère "..." la valeur ASCII de ce caractère est 201 sur mac, et sur PC de 133. Utiliser la fonction VBA chr(201) dans votre macro.

@+Jean-Marie

P.S. merci à Olivier pour l'info de la valeur sur PC
 
re bonjour

pour info jeu de caractère
32 espace
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
58 :
59 ;
60 <
61 =
62 >
63 ?

le caractère 133 correspond a l' "€"
 
SAlut Lord Nelson

Dans l'aide VBA lorsque j'ai demander le jeu de caractère

Le 133 correspondait a l'€uro

en faite après vérrifrication, c'est l'€uro de 128 jusqu'a 159
DAns un bouquin Jean-Marie à raison le code 133 correspond à trois petit points("...") !!!!!!!!!


A bientôt

Emmanuel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
800
Réponses
41
Affichages
5 K
Réponses
2
Affichages
888
Retour