Comment dupliquer une feuille excel protégée ?
Résolu
loulou54
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 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
A voir également:
- Copier un fichier excel protégé
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Liste déroulante excel - Guide
7 réponses
Re,
Où ai-je fait une bourde ? C'est normal pour excel, il faut reproteger la feuille par programme ou a la main
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
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
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
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
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
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
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
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 :
eric
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