Création feuille Excel en fonction Gabarit et la protéger
Bonjour,
Je lis souvent de l'information sur le forum et en général je réussis à bien me débrouiller. Cependant j'arrive à un point qui est pour moi un peu compliqué.
Pour vous mettre dans le contexte, j'ai créé un menu d'accueil permettant d'avoir 3 niveaux d'accès, SuperAdmin / admin / utilisateur.
L'utilisateur n'a pas besoin de mot de passe, mais à un accès limité à des feuilles Excel, les feuilles qu'il n'a pas accès sont en VeryHidden.
Mon problème présentement est le suivant, lorsque l'utilisateur clique sur "Relevé des quantités", il est redirigé vers une feuille au nom de "RDQ" (à l'origine cette feuille est en VeryHidden), l'utilisateur peut ajouter des semaines dans sont document à l'aide du bouton "Ajouter une semaine" la macro copie la feuille "TemplateRDQ". Mais s'il clique sur le bouton "Ajouter un plan", une nouvelle feuille "RDQ2", "RDQ3" et ainsi de suite doivent apparaître (est ici la première partie de mon problème). J'ai pensé faire un autre gabarit du nom de "templateRDQplan". Sauf qu'une fois que l'utilisateur va cliquer sur retour au menu d'accueil, seule la feuille "RDQ" va se masquer. Je veux que les feuilles "RDQ2" et + puisse-ce masquer aussi, et quand je clic une nouvelle fois sur "Relevé des quantités" dans le menu d'accueil, il m'affiche tous les RDQ(la seconde partie de mon problème).
Ah et sans oublier, il doit aussi apparaître dans le feuillet "paramétrage", c'est le feuillet utiliser pour donner les accès aux utilisateurs un (X) = l'utilisateur avec un code valide peut voir la feuille.
Pour info pour accéder au feuille vous devez entrer le login d'administrateur soit le bouton rouge et mettre "forum" comme login et passe.
Les feuilles protégés ont "motdepasse" comme protection.
En espérant avoir été clair dans ma demande, je vous remercie d'avance pour votre aide et j'ai inclus un fichier Excel pour la compréhension.
J'ai répondu en partie à mes questions en fouillant et en repensant la méthode de travail cependant je bloque sur une dernière chose:
J'ai une feuille "RDQ" avec un bouton ajouter une feuille je veux que lorsque je clique sur le bouton une nouvelle feuille se créé tout en incrémentant de 1 (RDQ-2 , RDQ-3 et ainsi de suite).
lorsque je clic la première fois tout se passe bien, mais lorsque je clique pour une deuxième fois j'ai un erreur, comme si l'incrémentation ne ce faisait pas:
Sub AddRDQPlan()
'Déprotéger le classeur
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="motdepasse"
'Afficher les feuilles VeryHidden
Dim f As Worksheet
For Each f In Worksheets
f.Visible = xlSheetVisible
Next f
'Ajouter une feuille de RDQ
Dim var As Long
Dim ws As Worksheet
var = 1
For Each ws In Application.Worksheets
If Right(ws.Name, 1) = num Then
var = var + 1 'on ajoute 1 a var
Else
Exit For
End If
Next
Sheets("TemplateTechPLAN").Copy before:=Sheets("Relevé")
ActiveSheet.Name = "RDQ" & "-" & var
'Masquer les feuilles VeryHidden
Dim sh As Worksheet
For Each sh In Sheets
If sh.Name Like "*RDQ*" Then
sh.Visible = xlSheetVisible
Else
sh.Visible = xlSheetVeryHidden
End If
Next sh
'Protéger le classeur
ActiveWorkbook.Protect Password:="motdepasse", Structure:=True, Windows:=True
Application.ScreenUpdating = True
End Sub
Qu'est-ce que j'ai fait de mal et comment le corriger.
Merci beaucoup
Bonjour
A tester
Sub AddRDQPlan()
'Déprotéger le classeur
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="motdepasse"
'Afficher les feuilles VeryHidden
Dim f As Worksheet
For Each f In Worksheets
f.Visible = xlSheetVisible
Next f
'Ajouter une feuille de RDQ
Dim var As Long
Dim ws As Worksheet
var = 1
Do
If FeuilleExiste("RDQ" & "-" & var) = False Then
Sheets("TemplateTechPLAN").Copy before:=Sheets("Relevé")
ActiveSheet.Name = "RDQ" & "-" & var
Exit Do
End If
var = var + 1
Loop
' var = 1
' For Each ws In Application.Worksheets
' If Right(ws.Name, 1) = num Then
' var = var + 1 'on ajoute 1 a var
' Else
' Exit For
' End If
' Next
' Sheets("TemplateTechPLAN").Copy before:=Sheets("Relevé")
' ActiveSheet.Name = "RDQ" & "-" & var
'Masquer les feuilles VeryHidden
Dim sh As Worksheet
For Each sh In Sheets
If sh.Name Like "*RDQ*" Then
sh.Visible = xlSheetVisible
Else
sh.Visible = xlSheetVeryHidden
End If
Next sh
'Protéger le classeur
ActiveWorkbook.Protect Password:="motdepasse", Structure:=True, Windows:=True
Application.ScreenUpdating = True
End Sub
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function
Çà marche nickel Merci,
J'avais pas vu la fonction à la fin du code