supprimer certains caractères

  • Initiateur de la discussion Emmanuel
  • Date de début
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
 
L

Lord Nelson

Guest
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
 
R

RENATO

Guest
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.
 
L

Lord Nelson

Guest
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
 
R

RENATO

Guest
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
 
L

Lord Nelson

Guest
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
 
J

Jean-Marie

Guest
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
 
E

Emmanuel

Guest
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' "€"
 
E

Emmanuel

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 782
Messages
2 092 063
Membres
105 178
dernier inscrit
AzTex