Bonjour à tous ,

J'aurais besoin d'aide concernant un petit problème de programmation en VBA. J'ai compris l'erreur de mon fichier mais ne trouve pas de solutions.

Voici le fonctionnement de mon fichier :

Je dispose d'un fichier EXCEL composé de 2 feuilles de base ("TBR","Checklist") et d'un userform lui-même composé de 3 boutons (ajouter, effacer, quitter).

Lorsque j'ouvre mon fichier EXCEL ou que j'appuie sur un bouton "+" le userform apparait.

A partir du moment où mon userform est ouvert je créer une nouvelle checklist à partir de ma feuille de base "Checklist" et je l'ajoute par incrémentation dans ma feuille "TBR" en cliquant sur le bouton ajouter de mon userform.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub Ajouter_Click()
 
   Sheets("Checklist").Copy After:=Sheets(Sheets.Count) 'copie la checklist vierge remplie dans le userform et la colle à la dernière feuille du classeur
   ActiveSheet.Name = PN.Value
   Sheets("TBR").[B1].Value = ActiveSheet.Name
   Sheets("Checklist").Select
   ActiveWindow.SelectedSheets.Visible = False
 
End Sub
Ce que j'aimerais, c'est qu'à l'aide de mon bouton ajouter de mon userform je puisse ajouter autant de nouvelle checklist que je souhaite.
Le problème est que j'ai fait en sorte de cacher la feuille de base "Checklist" (qui permet de créer les nouvelles checklists) à chaque clique du bouton "ajouter" pour éviter toutes modifications de la part d'un utilisateur de ma feuille de base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Sub Ajouter()
 
    If Création.Visible = False Then
        Sheets("Checklist").Visible = True
        Création.Show
    End If
 
End Sub
De ce fait je ne peux créer qu'une seule checklist à la fois car la ligne Sheets ("Checklist").select de mon premier code est en erreur si je clique une seconde fois sur le bouton ajouter vu que ma feuille de base "Checklist" ne redevient pas visible après avoir cliqué sur le bouton ajouter.

Ma première idée était de faire une boucle avec un do while mais je n'ai pas réussi.

J'espère avoir été assez claire... Avez-vous une idée, des pistes d'actions?

Merci d'avance à ceux qui répondront à cette discussion