Supprimer les caractères spéciaux

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #5280861
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)))

Laurent
Le #5280821
Bah c'est pas gagné :(( Merci Modeste... je vais me pencher sur mon
problème a la lueur de ta réponse...
"Modeste" 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)))





Brunos
Le #5280811
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

Laurent
Le #5280781
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" 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



Mgr Banni
Le #5280761
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"
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



Mgr Banni
Le #5280751
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"
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"
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






Brunos
Le #5280731
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

Brunos
Le #5280711
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

Misange
Le #5280671
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

Laurent
Le #5280531
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" 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



Publicité
Poster une réponse
Anonyme