XL 2016 Copier feuille sur classeur protégé

TechnologyNewStore

XLDnaute Nouveau
Bonjour à tous,

Je vous sollicite pour un problème sur une macro qui a pour objectif de copier une feuille sur un classeur protégé.
Voici le code d'erreur :
1645644102379.png

Mon classeur dispose de deux feuilles cachées ("MotDePasse" et "BaseDeDonnées") et d'une feuille principale ("RT"). Je souhaite copier cette dernière via un bouton vers une nouvelle feuille visible qui serait nommée par la date du jour avant la feuille "RT'.
Le bouton ouvre un UF qui demande le MdP => si MdP rentré = celui sur la feuille cachée "MotDePasse" en cellule B3 => copie de la feuille active

Voici le code utilisé :
Code:
Sub AffichageUFMDPNouvellefeuille() 'Affichage du UserForm UFMDPNouvellefeuille

    UFMDPNouvellefeuille.Show
   
End Sub

VB:
Option Explicit
Option Compare Text
Private Sub BoutonValider_Click() 'Effet lorsqu'on clique sur le bouton "OK"
    If TextBoxMDP.Value = Sheets("MotDePasse").Range("B3").Text Then 'Si le code est correct, on valide la création d'une nouvelle feuille
    Unload UFMDPDesactiverProtection 'Desactivation des protections pour pouvoir faire la copie
With Worksheets("RT")
    .Unprotect Password:=Sheets("MotDePasse").Range("B3").Text
    .EnableSelection = xlNoRestrictions
    .Copy Before:=Sheets("RT") 'Copie de la feuille active
    .Name = Date 'Nomage de la nouvelle feuille par la date du jour
End With
End If
End Sub

Dans l'idéal, j'aimerai que ce bouton puisse être présent uniquement sur la feuille "RT" et qu'il ne soit pas collé sur les autres feuilles de manière à toujours utiliser la feuille "RT" pour copier/coller la feuille.

Merci d'avance,

Bonne soirée.
 
Solution
VB:
ActiveSheet.Unprotect "chefraisage"
ActiveSheet.Shapes("Nouvellefeuille").Delete
ActiveSheet.Protect "chefraisage"
Quant au classement des feuilles il y a de nombreux exemples sur le forum.

TechnologyNewStore

XLDnaute Nouveau
Re-bonjour,

Ok j'ai trouvé le problème, c'est que mon classeur était protégé en plus !
Donc ajout d'un petit "ActiveWorkbook.Unprotect"

Du coup, problème a demi résolu.
Il me reste la question du bouton utilisé pour copier la feuille que je ne souhaite pas retrouver dans la feuille collée => une idée ?
 

TechnologyNewStore

XLDnaute Nouveau
Merci beaucoup @job75

J'ai amélioré un peu le code comme ceci sachant que ma forme s'appelle "Nouvellefeuille"
VB:
Sub Nouvellefeuille_Cliquer()
ActiveWorkbook.Unprotect Password:=Sheets("MotDePasse").Range("B1").Text
Dim Nom As String, DDMMYYYY As String, i As Byte, Verif As Boolean
DDMMYYYY = Format(Date, "dd-mm-yyyy")
    On Error Resume Next
recom:
Verif = False
Nom = InputBox("Définissez le nom de votre nouvelle feuille", "Ajout nouvelle feuille", DDMMYYYY) 'Nom de la nouvelle feuille saisie dans InputBox (par défaut, date du jour)
If Nom = "" Then Exit Sub 'Si pas de nom rentré, la fenêtre se ferme
For i = 1 To Sheets.Count
    If Sheets(i).Name = Nom Then Verif = True 'Verifie si le nom de la feuille existe déjà
Next
If Verif = True Then
    MsgBox "La feuille " & Nom & " existe déjà, veuillez choisir un autre nom svp." 'Affiche que le nom existe déjà et demande de saisir un autre nom
    GoTo recom
End If
ActiveSheet.Copy after:=Worksheets("RT")
ActiveSheet.Name = Nom
Worksheets("Nom").Shapes("Nouvellefeuille").Delete
End Sub

Cependant, la suppression de la forme ne marche pas à tous les coups...
Peut être que mon code est trop lourd et surtout mal codé ?
 

TechnologyNewStore

XLDnaute Nouveau
Merci @job75 mais ma forme ne se supprime toujours pas...
Voici ci-joint mon interface en PJ.
J'ai créer un bouton "Ajouter nouvelle feuille" à droite de la feuille lié au module 1 qui me sert à copier la feuille active.
=> Je souhaite que le bouton "Ajouter nouvelle feuille" soit supprimé lorsque l'on dupliquera la feuille (ne marche pas actuellement).
La nouvelle feuille prendra pour nom la date du jour par défaut (pourra être modifié au besoin dans l'Input Box.
=> De plus, je souhaiterai que la feuille "RT" soit toujours positionnée à la fin et que toutes les nouvelles feuilles s'incrémentent les unes à la suite des autres.
Ex : si j'en créer une aujourd'hui, elle se mettra devant la feuille "RT". Si j'en créer une demain, elle se mettra après celle du "25-02-2022" mais toujours avant "RT" soit dans l'ordre suivant : "25-02-2022", "26-02-2022", "RT" (puis les feuilles chachées)
=> Les nouvelles feuilles doivent pouvoir récuperer les mêmes info que la feuille "témoin" "RT" dans les bases de données.
=> De plus, les nouvelles feuilles devront être protégées au même titre que la feuille témoin.

Info : Il y a deux feuilles cachées, une avec la base de données, l'autre avec les mots de passe. Le classeur et protégé par défaut et verrouillé également.
Mot de passe pour ôter les protections et envoyer un mail = "chefraisage"
Mot de passe pour accéder à la base de données et à la macro = "chefdepart"

Je vous remercie d'avance pour votre aide précieuse !
 

Pièces jointes

  • Revue_Technique.xlsm
    135 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs