VBA: Expression régulière: Supprimer certains caractères

MJ13

XLDnaute Barbatruc
Bonjour à tous

Je cherche une macro qui me permettrait à partir d'un nom de dossier et de sous dossier, de supprimer tous caractères autre que des chiffres et des lettres. Mais les antislash doivent être conservés.

J'ai déjà vu un code de ce type de BrunoM45 :), mais je ne le retrouve pas :confused: (par contre si cela supprime les \, cela me posera des problèmes). Mais ce code m'intéresserait quand même.


Merci d'avance :).
 

Dranreb

XLDnaute Barbatruc
Re : VBA: Expression régulière: Supprimer certains caractères

Bonjour.
En tout cas sans expression régulière, je l'écrirais comme ça :
VB:
Function AlphN(ByVal ZSrc As String) As String
Dim P As Long, C As String
For P = 1 To Len(ZSrc)
   C = Mid$(ZSrc, P, 1): If UCase$(C) <> LCase$(C) Or IsNumeric(C) Or C = "\" Then AlphN = AlphN & C
   Next P
End Function
Cordialement.
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : VBA: Expression régulière: Supprimer certains caractères

Bonjour Bernard

Merci beaucoup pour ce code qui est parfait pour ce que j'ai à faire :) (au moins un code que j'arrive à comprendre de ta part :eek:).

Sinon j'ai retrouvé le code de Bruno en parcourant les like que je lui avais mis, mais c'était vers la fin :eek:. Et en effet son code en permet pas de garder certains caractères (mais bon, cela peut servir dans certains cas).

Code:
Function NomFichierValide(schaine As String)
  With CreateObject("VBScript.RegExp")
    .Pattern = "\W"
    .Global = True
     NomFichierValide = .Replace(schaine, "")
  End With
End Function

En le retrouvant, j'ai pu en faire un qui fait ce que je veux mais qui n'est pas aussi technique que le tiens :eek:.

Code:
Function SupCertCar(schaine As String)
Dim A As Variant
texte = ""
A = Array("[", "]", "_", "(", ")")
For i = 1 To Len(schaine)
For J = 0 To 3
If Mid(schaine, i, 1) = A(J) Then GoTo suite
Next
texte = texte & Mid(schaine, i, 1)
suite:
Next
SupCertCar = texte
End Function
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin