Pas de code ? Mais c'est tellement court, facile et beau et… :(
Votre modèle RegEx [^A-Za-z0-9_-]
est utilisé pour supprimer tous les caractères spéciaux dans toutes les cellules.
Sub RegExReplace()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = "[^A-Za-z0-9_-]"
For Each objCell In ActiveSheet.UsedRange.Cells
objCell.Value = RegEx.Replace(objCell.Value, "")
Next
End Sub
Edit
C'est le plus proche que je puisse obtenir de votre question originale.
Function RegExCheck(objCell As Range, strPattern As String)
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = strPattern
If RegEx.Replace(objCell.Value, "") = objCell.Value Then
RegExCheck = 0
Else
RegExCheck = 1
End If
End Function
Le second code est une fonction =RegExCheck(A1,"[^A-Za-z0-9_-]")
définie par l'utilisateur et comportant 2 arguments. Le premier est la cellule à vérifier. Le second est le modèle RegEx à vérifier. Si le modèle correspond à l'un des caractères de votre cellule, il renvoie 1 sinon 0.
Vous pouvez l'utiliser comme toute autre formule Excel normale si vous ouvrez d'abord l'éditeur VBA avec ALT+F11, insérez un nouveau module ( !) et collez le code ci-dessous.
[] stands for a group of expressions
^ is a logical NOT
[^] Combine them to get a group of signs which should not be included
A-Z matches every character from A to Z (upper case)
a-z matches every character from a to z (lower case)
0-9 matches every digit
_ matches a _
- matches a - (This sign breaks your pattern if it's at the wrong position)
Pour les nouveaux utilisateurs de RegEx, je vais vous expliquer votre modèle : [^A-Za-z0-9_-]