Bonjour tout le monde,

Je travaille actuellement sur un formulaire de création de projet sous Excel: les utilisateurs le remplisse puis avec une macro on exporte toute les infos sous un format csv qui sera importé dans un logiciel. Sauf que le logiciel en question n'aime pas trop certains caractères:
: ? " # ' / \ * > < |
Je voudrais donc que les utilisateurs ne puissent pas utiliser ces caractères dans le titre du projet (en cellule B1).

Après quelques recherches j'ai découvert les procèdures évènementielles et j'ai trouvé/bidouillé ce code que j'ai integré dans la feuille de mon formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False 'Pour éviter la mise en boucle de l'événement
    Set isect = Application.Intersect(Target, Range("B1"))
 
    If Not isect Is Nothing Then
      If InStr(1, Target, ":") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "?") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "#") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "'") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "\") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "*") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, ">") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "<") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "/") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
      If InStr(1, Target, "|") Then MsgBox "Please don't use any of the caracters below:" & Chr(13) & Chr(10) & ": ? # ' \ / * < > |"
    End If
Application.EnableEvents = True
End Sub
On remarque 2 choses:
- d'une part je n'arrive pas à traiter le cas où le caractère est " (message d'erreur dans le code)
- d'autre part ce n'est pas très élégant cette succession de "If".
J'ai donc pensé à utiliser Select Case mais j'avoue que j'ai un peu de mal à comprendre sa syntaxe d'utilisation et surtout je ne vois pas du tout laquelle utiliser dans mon cas. Est-ce que vous pourriez m'aider ?
Et si vous savez comment traiter le cas du caractère " je suis également preneur.

Dans un second temps, je verrai si je ne remplacerai pas directement le caractère interdit par un autre, autorisé, comme un _ par exemple mais j'aimerai déjà comprendre comment traiter la partie "détection" du/des caractères et améliorer mes connaissances sur des fonctions "de base"

Bonne journée