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

  • Initiateur de la discussion Initiateur de la discussion MJ13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😕 (par contre si cela supprime les \, cela me posera des problèmes). Mais ce code m'intéresserait quand même.


Merci d'avance 🙂.
 
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:
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 😱).

Sinon j'ai retrouvé le code de Bruno en parcourant les like que je lui avais mis, mais c'était vers la fin 😱. 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 😱.

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
23
Affichages
668
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Retour