Bonjour à tous.
Je suis une grande débutante en VBA et je suis en train de créer mon premier programme. Mes excuses par avance pour les bêtises que je pourrais écrire.
J'ai écrit une macro qui crée une nouvelle feuille avec une mise en forme spécifique. Pour nommer la feuille, j'ai créé une InputBox permettant à l'utilisateur de saisir le nom de la feuille (variable "activité").
Les problèmes arrivent quand je veux éviter que l'utilisateur ne saisissent 2 fois le même nom :
Je souhaite regarder dans les noms de feuilles existants. Si le nom n'existe pas encore, alors on peut utiliser le nom saisi pour renommer la feuille. Si le nom saisi existe déjà, je le dis à l'utilisateur et je lui demande de saisir un nouveau nom (pour ça j'ai créé une nouvelle variable "ActivitéCorrection") qui me permettra de renommer la feuille, bien sûr en vérifiant que l'utilisateur n'a pas déjà saisi ce nom.
Je ne trouve pas la syntaxe pour dire à VBA de regarder dans les différents noms de feuille déjà existants. J'ai essayé plein de nom sans succès. Ici, vous avez la version avec Sheets.Name que VBA ne comprend pas. J'ai un résultat quand je lui demande de regarder directement les activités déjà saisies, mais ça plante si je relance ma macro une 2eme fois, et ça ne prend pas en compte les noms éventuellement saisis grâce à la variable ActivitéCorrection.
Voici l'extrait du code concerné :
Ca fait un moment que je tourne et je ne vois pas trop comment m'en sortir.
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Private Sub AjoutActivité() 'Insère une feuille de calcul après la dernière feuille du classeur Dim NouvelleFeuille As Worksheet Set NouvelleFeuille = ThisWorkbook.Worksheets.Add(before:=Feuil1) 'code pour la mise en forme de la feuille => OK 'Définition de la variable activité comme 1 chaine de caractères Dim Activité As String Dim ActivitéCorrection As String 'Création d'une boîte de saisie pour la nouvelle activité Activité = Application.InputBox(Activité, "Saisissez le nom de l'activité") 'Test de redondances de noms d'activité If Activité = Sheets.Name Then 'Affichage du msg d'erreur MsgBox "Vous avez déjà utilisé " + Activité + " pour nommer une activité. Veuillez saisir nom différent." 'Nouvelle saisie de l'activité ActivitéCorrection = Application.InputBox(Activité, "Saisissez le nom de l'activité") 'Renommer la feuille avec nom de l'activité initiale With NouvelleFeuille .Name = ActivitéCorrection End With Else 'Renommer la feuille avec nom de l'activité initiale With NouvelleFeuille .Name = Activité End With End If End Sub
Merci d'avance pour votre aide.
Karatégirl77
Partager