XL 2019 macro fonction

Guismo33

XLDnaute Occasionnel
Bonjour à tous,
j'ai une macro fonction qui s'appel "MUSIQUE" en terme du turf et dans cette musique il rajoute ce si: "[ ]" et je voudrais les enlever
voici ma macro :

Function Musique(Valeur As String) As String
Dim regEx As Object
Application.Volatile
Set regEx = CreateObject("VBScript.RegExp")
With regEx
.IgnoreCase = False
.Global = True
.Pattern = " "
Valeur = .Replace(Valeur, "")
.Pattern = "\([0-9][0-9]\)"
Valeur = .Replace(Valeur, "")
.Pattern = "[a-z]"
Valeur = .Replace(Valeur, " ")
.Pattern = "[1-2][0-9]"
Valeur = .Replace(Valeur, "0")
.Pattern = "[ADT]"
Valeur = .Replace(Valeur, "0")
.Pattern = "[()]"
Valeur = .Replace(Valeur, "0")
.Pattern = "[Ié]"
Valeur = .Replace(Valeur, "0")
.Pattern = " "
Valeur = .Replace(Valeur, "")


End With
Musique = Valeur
Set regEx = Nothing
End Function

et voici mon exemple :
 

Pièces jointes

  • vinc.JPG
    vinc.JPG
    27.9 KB · Affichages: 51

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Guismo33

Guismo33
Avec un RegExp, on peut faire plus court ;)
VB:
Function MUSIQUE2(R As Range) As String
Dim sX$
With CreateObject("vbscript.regexp"): .Global = True: .Pattern = "[^\d]+": sX = .Replace(R.Text, vbNullString): End With
MUSIQUE2 = sX
End Function
 

Staple1600

XLDnaute Barbatruc
Re

Et une version sans RegExp (donc qui fonctionnera normalement sur un Mac ;))
VB:
Function MUSIQUE3(R$)
Dim i%
For i = 1 To Len(R)
If IsNumeric(Mid(R, i, 1)) Then vNum = vNum & Mid(R, i, 1)
Next i
MUSIQUE3 = vNum
End Function
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
145
Réponses
9
Affichages
437

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972