Comment dupliquer une feuille excel protégée ?

Résolu
loulou54 -  
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

7 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,
    apres la copie de cellules, mettez le bon mot de passe
    Sheets(ongl).Protect Password:="toto"
    
    1
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Où ai-je fait une bourde ? C'est normal pour excel, il faut reproteger la feuille par programme ou a la main
    0
  3. loulou54
     
    D'accord, mais que dois-je ajouter dans ma macro pour protéger la feuille suivante ?
    0
  4. loulou54
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. loulou54
     
    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
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  8. loulou54
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    2. loulou54 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    4. loulou54 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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