Comment dupliquer une feuille excel protégée ?

Résolu/Fermé
loulou54 - 11 juin 2015 à 17:31
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 12 juin 2015 à 23:04
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
A voir également:

7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 juin 2015 à 17:43
Re,
apres la copie de cellules, mettez le bon mot de passe
Sheets(ongl).Protect Password:="toto"
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 juin 2015 à 17:35
Re,

Où ai-je fait une bourde ? C'est normal pour excel, il faut reproteger la feuille par programme ou a la main
0
D'accord, mais que dois-je ajouter dans ma macro pour protéger la feuille suivante ?
0
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
0

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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 11/06/2015 à 19:42
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
0
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
12 juin 2015 à 00:18
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
0
loulou54 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
12 juin 2015 à 08:53
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
12 juin 2015 à 13:24
Bonjour,

ok, mais tu n'as pas répondu à la question essentielle : est-ce que tu peux avoir besoin de dupliquer "toto" après avoir fermé et rouvert ton fichier ?

Et en déposant ton fichier sur cjoint.com on pourrait voir plus facilement les options possibles.

eric
0
loulou54 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
12 juin 2015 à 14:27
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
12 juin 2015 à 19:37
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
0