Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer les caractères spéciaux

11 réponses
Avatar
Laurent
Bonjour à tous...

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide

Voila je perds des heures à chercher quelques chose qui n'existe auquel cas
je crèerai ce qu'il faut pas ou.....

Merci a tous d'avance

10 réponses

1 2
Avatar
Modeste
Bonsour® Laurent avec ferveur ;o))) vous nous disiez :

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère... Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


ce que l'on nomme en général caractères spéciaux se sont les caractères dit :
"non imprimable"
tel que saut de ligne, saut de page
il sont supprimables par la fonction EPURAGE ou Clean en VBA.

les caractères , . / etc... ne sont pas des caractères spéciaux mais des
ponctuations ou séparateurs
il faut dans ce cas ecrire une fonction spécialisée passe-partout
ou utiliser plusieurs fois la fonction SUBSTITUE ou Substitute en VBA (attention
il s'agit bien ici de "substituTe")

--
--
@+
;o)))

Avatar
Laurent
Bah c'est pas gagné :(( Merci Modeste... je vais me pencher sur mon
problème a la lueur de ta réponse...
"Modeste" a écrit dans le message de
news:OEca%23%
Bonsour® Laurent avec ferveur ;o))) vous nous disiez :

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère... Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


ce que l'on nomme en général caractères spéciaux se sont les caractères
dit : "non imprimable"
tel que saut de ligne, saut de page
il sont supprimables par la fonction EPURAGE ou Clean en VBA.

les caractères , . / etc... ne sont pas des caractères spéciaux mais des
ponctuations ou séparateurs
il faut dans ce cas ecrire une fonction spécialisée passe-partout
ou utiliser plusieurs fois la fonction SUBSTITUE ou Substitute en VBA
(attention il s'agit bien ici de "substituTe")

--
--
@+
;o)))





Avatar
Brunos
Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


Exemple de fonction personnalisée:

Function TexteEpure(Texte As String) As String
' supprime tous les caractères AUTRES
' que "a à z","A à Z" ou chiffre.
' voir aide sur ASC et table de caractères ASCII.
Dim tempmot As String, TempCar As String
For i = 1 To Len(Texte)
TempCar = Mid(Texte, i, 1)
Select Case Asc(TempCar)
Case 48 To 57 'chiffre
Case 65 To 90 'caractères A à Z
Case 97 To 122 'caractères a à z
Case Else
TempCar = ""
End Select
tempmot = tempmot + TempCar
Next i
TexteEpure = tempmot
End Function

Dans ton tableau =TexteEpure("toi,plus/stupide") renvoie
"toiplusstupide"
--
Brunos

Avatar
Laurent
merci beaucoup Bruno...
par hasard tu ne saurai pas ou je peux trouver un résumé EXHAUSTIF des
fonctions et instructions VB en livre ou sur le net ... avec leur rendu et
leur syntaxe???
Ca m'éviterait de perdre du temps... et de poser des questions qui parfois
peuvent paraitrent stupides certainement ... :$
"Brunos" a écrit dans le message de
news:
Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


Exemple de fonction personnalisée:

Function TexteEpure(Texte As String) As String
' supprime tous les caractères AUTRES
' que "a à z","A à Z" ou chiffre.
' voir aide sur ASC et table de caractères ASCII.
Dim tempmot As String, TempCar As String
For i = 1 To Len(Texte)
TempCar = Mid(Texte, i, 1)
Select Case Asc(TempCar)
Case 48 To 57 'chiffre
Case 65 To 90 'caractères A à Z
Case 97 To 122 'caractères a à z
Case Else
TempCar = ""
End Select
tempmot = tempmot + TempCar
Next i
TexteEpure = tempmot
End Function

Dans ton tableau =TexteEpure("toi,plus/stupide") renvoie "toiplusstupide"
--
Brunos



Avatar
Mgr Banni
bonjour brunos
manque quand même un p'tit truc dans cette function
car "toi,plus/bête" va renvoyer "toiplusbte"
me semble qu'il faille rajouter un Case mais lequel?
Mgr T.B.


"Brunos" a écrit dans le message de news:

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


Exemple de fonction personnalisée:

Function TexteEpure(Texte As String) As String
' supprime tous les caractères AUTRES
' que "a à z","A à Z" ou chiffre.
' voir aide sur ASC et table de caractères ASCII.
Dim tempmot As String, TempCar As String
For i = 1 To Len(Texte)
TempCar = Mid(Texte, i, 1)
Select Case Asc(TempCar)
Case 48 To 57 'chiffre
Case 65 To 90 'caractères A à Z
Case 97 To 122 'caractères a à z
Case Else
TempCar = ""
End Select
tempmot = tempmot + TempCar
Next i
TexteEpure = tempmot
End Function

Dans ton tableau =TexteEpure("toi,plus/stupide") renvoie "toiplusstupide"
--
Brunos



Avatar
Mgr Banni
re brunos et laurent
je verrais donc bien le rajout de

Case 192 To 255 'caractères accentués

ma soutane balaie large ce matin
Mgr T.B.

"Mgr Banni" a écrit dans le message de news:

bonjour brunos
manque quand même un p'tit truc dans cette function
car "toi,plus/bête" va renvoyer "toiplusbte"
me semble qu'il faille rajouter un Case mais lequel?
Mgr T.B.


"Brunos" a écrit dans le message de news:

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide


Exemple de fonction personnalisée:

Function TexteEpure(Texte As String) As String
' supprime tous les caractères AUTRES
' que "a à z","A à Z" ou chiffre.
' voir aide sur ASC et table de caractères ASCII.
Dim tempmot As String, TempCar As String
For i = 1 To Len(Texte)
TempCar = Mid(Texte, i, 1)
Select Case Asc(TempCar)
Case 48 To 57 'chiffre
Case 65 To 90 'caractères A à Z
Case 97 To 122 'caractères a à z
Case Else
TempCar = ""
End Select
tempmot = tempmot + TempCar
Next i
TexteEpure = tempmot
End Function

Dans ton tableau =TexteEpure("toi,plus/stupide") renvoie "toiplusstupide"
--
Brunos






Avatar
Brunos
re brunos et laurent
je verrais donc bien le rajout de

Case 192 To 255 'caractères accentués

ma soutane balaie large ce matin
Mgr T.B.


Bonjour Votre Grace,
Au delà de 127 je crois qu'il y a des spécificités régionales, c'est
pourquoi je ne m'étais pas aventuré dans ces terrains mouvants. Libre à
vous de vous y risquer, les 'Case' sont adaptables au petit bonheur de
chacun... :o)
--
Brunos

Avatar
Brunos
par hasard tu ne saurai pas ou je peux trouver un résumé EXHAUSTIF des
fonctions et instructions VB en livre ou sur le net ... avec leur
rendu et leur syntaxe???
EXHAUSTIF ???

- aide en ligne (F1)
- http://www.excelabo.net/index.php
- http://boisgontierjacques.free.fr/
- http://dj.joss.free.fr/faq.htm
- http://frederic.sigonneau.free.fr/
etc.

Ca m'éviterait de perdre du temps
difficile d'apprendre des trucs sans y passer du temps


... et de poser des questions qui parfois...
c'est quand même la raison d'être du MPFE ! mais tes scrupules

t'honorent :o)

--
Brunos

Avatar
Misange
Bonjour à tous...

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide

Voila je perds des heures à chercher quelques chose qui n'existe auquel
cas je crèerai ce qu'il faut pas ou.....

Merci a tous d'avance
Bonjour


Cette fonction te permet de remplacer les accents (en complément de
celle de Brunos éventuellement et pour répondre au Banni)

Function OteAccents(txt)
Dim ARemplacer()
Dim RemplacerPar()
Dim Cel
Dim Caract
Dim i, a
ARemplacer = Array(" ", "À", "à", "Â", "â", "È", "è", "É", "é", "Ê",
"ê", "Ë", "ë", "Î", "î", "Ï", "ï", "Ô", "ô", "Ö", "ö", "Û", "û", "Ü",
"ü", "Ù", "ù", "Y", "ÿ")
RemplacerPar = Array(" ", "A", "a", "A", "a", "E", "e", "E", "e", "E",
"e", "E", "e", "I", "i", "I", "i", "O", "o", "O", "o", "U", "u", "U",
"u", "U", "u", "Y", "y", "Y", "y")
txt = Trim(txt)
For i = 1 To Len(txt)
Caract = Mid(txt, i, 1)
For a = 0 To UBound(ARemplacer)
If Caract = ARemplacer(a) Then
Caract = RemplacerPar(a)
End If
Next a
OteAccents = OteAccents & Caract

Next i
End Function

--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Avatar
Laurent
Alors la je dois dire effectivement les accents je en les avait pas pris en
compte :(
Mais pour mon cas aucun problème j'avais oublié de préciser desolé...
En fait pour ceux qui connaissent ils s'agit de traiter des chaines de
caractères concernant les phrases de risques des produit chimiques :
http://www.telegis.fr/francais/frazer.html
et en fait de limiter les erreurs de frappe (aie ... t'avais pas si fort
patron :) )
j'ai adapté la fonction de Bruno en prenant en compte le "/" en ajustant le
case concernant les chiffres (au lieu d'aller entre 48 et 57 on va entre 47
et 57...

Par contre Misange je conserve ta solution parce que ca peux toujours servir
:) pour plus tard le rendu des résultats...

enfin toujours est il que pour l'aide Excel (F1) question clarté pour les
neophytes ... pas top...
merci encore à vous tous ...
"Misange" a écrit dans le message de
news:
Bonjour à tous...

Etant toujours autodidacte sur VBA sur excel 2007 ( pffff) j'ai lu
quelque part (enfin il me semble) qu'il existait une instruction VB
permettant de supprimer les caractères spéciaux d'une chaîne de
caractère...

Par exemple : si on ecris :
moi,toujours/stupide
apres passage de l'instruction on obtenait :
moitoujoursstupide

Voila je perds des heures à chercher quelques chose qui n'existe auquel
cas je crèerai ce qu'il faut pas ou.....

Merci a tous d'avance
Bonjour


Cette fonction te permet de remplacer les accents (en complément de celle
de Brunos éventuellement et pour répondre au Banni)

Function OteAccents(txt)
Dim ARemplacer()
Dim RemplacerPar()
Dim Cel
Dim Caract
Dim i, a
ARemplacer = Array(" ", "À", "à", "Â", "â", "È", "è", "É", "é", "Ê", "ê",
"Ë", "ë", "Î", "î", "Ï", "ï", "Ô", "ô", "Ö", "ö", "Û", "û", "Ü", "ü", "Ù",
"ù", "Y", "ÿ")
RemplacerPar = Array(" ", "A", "a", "A", "a", "E", "e", "E", "e", "E",
"e", "E", "e", "I", "i", "I", "i", "O", "o", "O", "o", "U", "u", "U", "u",
"U", "u", "Y", "y", "Y", "y")
txt = Trim(txt)
For i = 1 To Len(txt)
Caract = Mid(txt, i, 1)
For a = 0 To UBound(ARemplacer)
If Caract = ARemplacer(a) Then
Caract = RemplacerPar(a)
End If
Next a
OteAccents = OteAccents & Caract

Next i
End Function

--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net



1 2