Comment dupliquer une feuille excel protégée ?
Résolu
loulou54
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une feuille dans laquelle j'ai protégé certaines cellules.
Il est impossible de modifier ces cellules : normal !
Par contre, quand je duplique cette feuille dans le même classeur, les cellules ne sont plus protégées sur cette seconde feuille.
Voici la macro utilisée :
Sub dupliquer()
Sheets.Add After:=Sheets(Sheets.Count) 'ajout d'une feuille
Dim ongl As String
ongl = InputBox(" Nom de la feuille :") 'nom de la nouvelle feuille
ActiveSheet.Name = ongl 'renommer la nouvelle feuille
Sheets("Modèle").Cells.Copy Sheets(ongl).Cells 'copie de la feuille dans la nouvelle feuille
End Sub
Où ai-je fait une bourde ?
Merci par avance pour votre aide,
Patrice
J'ai une feuille dans laquelle j'ai protégé certaines cellules.
Il est impossible de modifier ces cellules : normal !
Par contre, quand je duplique cette feuille dans le même classeur, les cellules ne sont plus protégées sur cette seconde feuille.
Voici la macro utilisée :
Sub dupliquer()
Sheets.Add After:=Sheets(Sheets.Count) 'ajout d'une feuille
Dim ongl As String
ongl = InputBox(" Nom de la feuille :") 'nom de la nouvelle feuille
ActiveSheet.Name = ongl 'renommer la nouvelle feuille
Sheets("Modèle").Cells.Copy Sheets(ongl).Cells 'copie de la feuille dans la nouvelle feuille
End Sub
Où ai-je fait une bourde ?
Merci par avance pour votre aide,
Patrice
7 réponses
-
Re,
apres la copie de cellules, mettez le bon mot de passe
Sheets(ongl).Protect Password:="toto"
-
Re,
Où ai-je fait une bourde ? C'est normal pour excel, il faut reproteger la feuille par programme ou a la main -
-
Effectivement ça fonctionne. Mais j'ai maintenant un autre problème. Quand je ferme Excel en sauvegardant le classeur, j'ai ce message d'erreur "Cette image est trop grande et va être tronquée" et ça plante Excel. Pourtant, je n'avais pas ce message avant d'avoir ajouté la ligne "Sheets(ongl).Protect Password:="xxxxxxx"
Aurais-tu une idée d'où peut venir ce problème, et surtout comment le résoudre, stp ?
En tout cas, merci pour ton aide.
C'est super sympa,
Patrice -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oups, autant pour moi.
Je n'avais pas sauvegardé mon fichier après avoir fait un test de duplication de feuille avec ma première version.
Du coup, je n'avais remarqué le problème. Mais ça se produit même sans ajouter ta ligne.
Mea culpa :-(
Donc, si tu vois une solution...
Merci par avance,
Patrice -
Bonjour,
Et si tu mets cette ligne en commentaire :
Sheets("Modèle").Cells.Copy Sheets(ongl).Cells
ça donne quoi ?
Que tu copie-colles toutes les cellules me perturbe un peu.
En général pour dupliquer une feuille on fait plutôt :
Sheets("Modèle").Copy after:=Sheets(Sheets.Count)
qui te crée une copie à l'identique.
Sinon sans ton fichier...
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci -
Bonsoir eriiic,
Suivant tes conseils, j'ai utilisé ta formule :
Sheets("Modèle").Copy after:=Sheets(Sheets.Count)
et ça marche !!!
Juste un petit détail, je voudrais que ça me duplique la dernière feuille créée et pas la feuille "Modèle". Comment dois-je modifier ta formule pour y parvenir ?
Un grand merci,
Patrice-
C'est possible à condition de pouvoir la repérer parmi les autres, surtout s'il y a une fermeture de classeur entre temps.
Quelque chose de repérable dans son nom ? Une particularité sur la feuille ?
Si rien de tout ça tu pourrais, juste après sa création, que tu stockes dans une cellule son codename (différent du nom de la feuille même s'il est souvent identique. Il est tard regarde sur google pour plus d'explication dessus). Et pour la retrouver balayer toutes les feuilles en regardant leur codename.
Donc finalement plusieurs possibilités mais tu ne donnes pas assez de détail pour pouvoir répondre précisément.
eric -
Bonjour Eric,
En fait, quand je duplique ma feuille, j'ouvre une fenêtre qui demande le nom de la nouvelle feuille. Exemple : si je duplique "Modèle", la commande "ongl = InputBox(" Nom de la feuille :") 'nom de la nouvelle feuille
ActiveSheet.Name = ongl 'renommer la nouvelle feuille " me propose de donner un nom à cette nouvelle feuille, par exemple "toto". Je fais des modifications dans "toto" et ce que je souhaite, c'est que lorsque je duplique une nouvelle feuille depuis "toto", ces modifications se retrouvent dans la nouvelle feuille créée.
J'espère être assez clair. C'est simple dans le principe, mais pas évident à expliquer.
Patrice -
-
Voici le fichier :
http://www.cjoint.com/c/EFmmvsZTGsW
Effectivement, j'ai besoin de dupliquer un onglet après avoir fermé et rouvert le fichier (c'est d'ailleurs la principale utilisation).
Tu verras 3 onglets :
"Modèle" "Léon" et "Gérard"
J'ai dupliqué "Modèle" pour créer "Léon" puis j'ai modifié une cellule dans "Léon" (45,00 € dans Autre2) et enfin j'ai dupliqué "Léon" pour créer "Gérard", mais j'ai perdu la modification effectuée dans "Léon" puisque la macro copie l'onglet "Modèle"
Voilà le topo.
Merci encore pour ton aide,
Patrice -
En fait tu veux dupliquer la feuille active, donc activesheet :
Sub dupliquer() Dim ongl As String ActiveSheet.Copy after:=Sheets(Sheets.Count) 'copie de la feuille dans la nouvelle feuille ongl = InputBox(" Prochain spectacle :") 'nom de la nouvelle feuille ActiveSheet.Name = ongl 'renommer la nouvelle feuille Sheets(ongl).Protect Password:="test" End Sub
eric
-