Supprimer des caractères indésirables

Le
Nicolas B.
Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je voudrais ne
conserver que les lettres (en majuscules) et les chiffres. Ca donnerait donc
ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait un à un
les caractères parasites.

Comment puis-je faire ?


Merci :-)
--
Nicolas B.
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #1230005
bonjour Nicolas,

avec la chaine de caractère en cellule A1, le résultat sera mit en
cellule A2.

Sub Macro1()
For i = 1 To Len(Range("A1"))
u = Mid(Range("A1"), i, 1)
If IsNumeric(u) Or (Asc(u) >= 65 And Asc(u) <= 90) Then
m = m & u
End If
Next
Range("A2") = m
End Sub

isabelle


Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je voudrais ne
conserver que les lettres (en majuscules) et les chiffres. Ca donnerait donc
ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait un à un
les caractères parasites.

Comment puis-je faire ?

Merci :-)
--
Nicolas B.


AV
Le #1230004
Ca pourrait faire ça :

Sub zzzz()
For i = 1 To Len(ActiveCell)
If Asc(Mid(ActiveCell, i, 1)) > 64 And Asc(Mid(ActiveCell, i, 1)) < 91 _
Or Asc(Mid(ActiveCell, i, 1)) > 47 And Asc(Mid(ActiveCell, i, 1)) < 58 Then
x = x & Mid(ActiveCell, i, 1)
Next
MsgBox x
End Sub

AV
Nicolas B.
Le #1229746
Merci isabelle, ça marche.


A+
--
Nicolas B.


bonjour Nicolas,

avec la chaine de caractère en cellule A1, le résultat sera mit en
cellule A2.

Sub Macro1()
For i = 1 To Len(Range("A1"))
u = Mid(Range("A1"), i, 1)
If IsNumeric(u) Or (Asc(u) >= 65 And Asc(u) <= 90) Then
m = m & u
End If
Next
Range("A2") = m
End Sub

isabelle


Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je
voudrais ne conserver que les lettres (en majuscules) et les
chiffres. Ca donnerait donc ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait
un à un les caractères parasites.

Comment puis-je faire ?

Merci :-)
--
Nicolas B.




Nicolas B.
Le #1229745
Merci à toi aussi.
:-)


A+
--
Nicolas B.


Ca pourrait faire ça :

Sub zzzz()
For i = 1 To Len(ActiveCell)
If Asc(Mid(ActiveCell, i, 1)) > 64 And Asc(Mid(ActiveCell, i,
1)) < 91 _ Or Asc(Mid(ActiveCell, i, 1)) > 47 And
Asc(Mid(ActiveCell, i, 1)) < 58 Then
x = x & Mid(ActiveCell, i, 1)
Next
MsgBox x
End Sub

AV


_rg_rg_
Le #1229743
"Nicolas B." $:

ABC-000.123&4





Private Function Clean(ByVal S As String) As String
Const OUT As String = "-.&"
Dim i As Long
Clean = S
For i = 1 To Len(OUT)
While InStr(Clean, Mid(OUT, i, 1)) > 0
Position = InStr(Clean, Mid(OUT, i, 1))
Clean = Left(Clean, InStr(Clean, Mid(OUT, i, 1)) - 1) _
& Right(Clean, Len(Clean) - InStr(Clean, Mid(OUT, i, 1)))
Wend
Next i
End Function

Pascal Engelmajer
Le #1229741
Salut
Performant :
Public Function cleanAZ09(S As String) As String
'nécessite une référence à Microsoft VBScriprt Regular Expression 5.5
Dim regex As RegExp
'Application.Volatile True 'Si utile
Set regex = New RegExp
regex.Global = True ' Définit le champ d'application.
regex.IgnoreCase = True ' Ignore la casse.
S = "ABC-000.123&4"
regex.Pattern = "[^A-Z0-9]" ' non A à Z et 0 à 9
S = regex.Replace(S, "")
cleanAZ09 = S
End Function
Sub test()
MsgBox cleanAZ09("ABC-000.123&4")
End Sub

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Nicolas B." news: eppfSH$
Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je voudrais
ne

conserver que les lettres (en majuscules) et les chiffres. Ca donnerait
donc

ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait un à
un

les caractères parasites.

Comment puis-je faire ?


Merci :-)
--
Nicolas B.




Pascal Engelmajer
Le #1229740
Salut Alain,
à force de voir ce type de question je suggère l'usage de Microsoft VBScript
Regular Expression 5.5
c'est très puissant...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"AV" et$EfU$
Ca pourrait faire ça :

Sub zzzz()
For i = 1 To Len(ActiveCell)
If Asc(Mid(ActiveCell, i, 1)) > 64 And Asc(Mid(ActiveCell, i, 1)) <
91 _

Or Asc(Mid(ActiveCell, i, 1)) > 47 And Asc(Mid(ActiveCell, i, 1)) <
58 Then

x = x & Mid(ActiveCell, i, 1)
Next
MsgBox x
End Sub

AV




Pascal Engelmajer
Le #1229739
Salut,
attention il faut supprimer le S en dur dans la fonction (utilisé pour
tester)
Public Function cleanAZ09(S As String) As String
'nécessite une référence à Microsoft VBScriprt Regular Expression 5.5
Dim regex As RegExp
'Application.Volatile True 'Si utile
Set regex = New RegExp
regex.Global = True ' Définit le champ d'application.
regex.IgnoreCase = True ' Ignore la casse.
'ligne à supprimer ============================== > S = "ABC-000.123&4"

'========================================== > regex.Pattern = "[^A-Z0-9]" ' non A à Z et 0 à 9
S = regex.Replace(S, "")
cleanAZ09 = S
End Function


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Pascal Engelmajer" message de news: #$zlRe$
Salut
Performant :
Public Function cleanAZ09(S As String) As String
'nécessite une référence à Microsoft VBScriprt Regular Expression 5.5
Dim regex As RegExp
'Application.Volatile True 'Si utile
Set regex = New RegExp
regex.Global = True ' Définit le champ d'application.
regex.IgnoreCase = True ' Ignore la casse.
S = "ABC-000.123&4"
regex.Pattern = "[^A-Z0-9]" ' non A à Z et 0 à 9
S = regex.Replace(S, "")
cleanAZ09 = S
End Function
Sub test()
MsgBox cleanAZ09("ABC-000.123&4")
End Sub

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Nicolas B." news: eppfSH$
Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je voudrais
ne

conserver que les lettres (en majuscules) et les chiffres. Ca donnerait
donc

ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait un à
un

les caractères parasites.

Comment puis-je faire ?


Merci :-)
--
Nicolas B.








Nicolas B.
Le #1229572
Merci pour ta réponse, mais je voulais en fait une solution sans boucler sur
chaque caractère à supprimer (vu qu'il y en a presque 200).


A+
--
Nicolas B.


"Nicolas B." $:

ABC-000.123&4





Private Function Clean(ByVal S As String) As String
Const OUT As String = "-.&"
Dim i As Long
Clean = S
For i = 1 To Len(OUT)
While InStr(Clean, Mid(OUT, i, 1)) > 0
Position = InStr(Clean, Mid(OUT, i, 1))
Clean = Left(Clean, InStr(Clean, Mid(OUT, i, 1)) - 1) _
& Right(Clean, Len(Clean) - InStr(Clean, Mid(OUT, i, 1)))
Wend
Next i
End Function



Nicolas B.
Le #1229571
Merci aussi, pour une soluion originale.


A+
--
Nicolas B.


Salut
Performant :
Public Function cleanAZ09(S As String) As String
'nécessite une référence à Microsoft VBScriprt Regular Expression
5.5 Dim regex As RegExp
'Application.Volatile True 'Si utile
Set regex = New RegExp
regex.Global = True ' Définit le champ d'application.
regex.IgnoreCase = True ' Ignore la casse.
S = "ABC-000.123&4"
regex.Pattern = "[^A-Z0-9]" ' non A à Z et 0 à 9
S = regex.Replace(S, "")
cleanAZ09 = S
End Function
Sub test()
MsgBox cleanAZ09("ABC-000.123&4")
End Sub

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Nicolas B." message de news: eppfSH$
Bonjour,

Dans une chaîne de caractères comme celle-ci :ABC-000.123&4, je
voudrais ne conserver que les lettres (en majuscules) et les
chiffres. Ca donnerait donc ABC0001234.
Tout ça par VBA, et si possible passer par une boucle qui testerait
un à un les caractères parasites.

Comment puis-je faire ?


Merci :-)
--
Nicolas B.




Publicité
Poster une réponse
Anonyme