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

  • Initiateur de la discussion Initiateur de la discussion Azuveus
  • 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 !

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.
 
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
 
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

- 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
Retour