XL 2019 Stopper une fonction si un champs contient des caractères interdit.

Azuveus

XLDnaute Nouveau
Bonjour,

Je cherche le moyen de lire une variable de type String et si cette derniere contient un ou plusieurs de ces caracteres ci-dessous d'avorter la fonction en cours et l'avertir par un message type Messagebox, VbExclamation. (Pour explication, je me sert de cette variable comme morceau de nom de fichier et je souhaite empecher l'utilisateur de mettre ce type de caractere.
  • < (plus petit que; less than)
  • > (plus grand que; greater than)
  • : (deux points; colon)
  • " (double appostrophe; double quote)
  • / (slash; barre de fraction; forward slash)
  • (antislash; backslash)
  • | (barre verticale; vertical bar; pipe)
  • ? (point d'interrogation; question mark)
  • * (astérisque; asterisk)
Merci d'avance pour votre aide.

Azuveus.
 

dysorthographie

XLDnaute Accro
Bonsoir,
VB:
Sub test()
MsgBox "Ce champs contient des caractères interdit : " & CharInterdit("*")
End Sub

Function CharInterdit(V As String) As Boolean
Dim Ch(): Ch() = Array("<", ">", ":", Chr(34), "/", "(", "|", "?", "*")
For i = 0 To UBound(Ch)
    If CBool(InStr(1, V, Ch(i))) Then CharInterdit = True: Exit Function
Next
End Function
 

job75

XLDnaute Barbatruc
Bonjour Azuveus, dysorthographie,
je souhaite empecher l'utilisateur de mettre ce type de caractere.
Voyez le fichier joint et cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim interdit$, L%, i%, x$
interdit = "<>:""/\|?*"
L = Len(interdit)
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target.Areas 'si entrées multiples (copier-coller)
    For i = 1 To L
        x = Mid(interdit, i, 1)
        If i > L - 2 Then x = "~" & x 'tilde devant les caractères génériques ? et *
        If Application.CountIf(Target, "*" & x & "*") Then
            Target.Select
            Target.Find(x, , xlValues, xlPart).Activate
            MsgBox "Caractère interdit !", 48
            Application.EnableEvents = False 'désactive les évènements
            Application.Undo 'annule l'entrée
            Application.EnableEvents = True 'réactive les évènements
            Exit For
        End If
Next i, Target
End Sub
L'entrée d'un caractère interdit dans une cellule ou une plage quelconque est annulée automatiquement.

A+
 

Pièces jointes

  • Caractères interdits(1).xlsm
    19.9 KB · Affichages: 1

Statistiques des forums

Discussions
312 198
Messages
2 086 144
Membres
103 129
dernier inscrit
Atruc81500