Copier une feuille avec marges et echelle

Bonjour

Toujours sur mon fichier excel, je suis confronté à un nv problème :

Je dois d'un click sur un bouton copier toute une feuille. On m'a donné le code pour le faire et il marche très bien sauf qu'il ne copie pas la mise en page et surtt les marges et l'echelle qui est à 80%(dans les options de mise en page)

J'imagine qu'il ne faut rajouter qu'une ligne ou 2 toutes betes mais j'ai pas trouvé mon bonheur dans google.

Voila déjà le code de la macro

Sub copie()
        'ActiveSheet.Index = position de la feuille active
       'Sheets.Count = nombre de feuilles dans le classeur
       'On sort de la macro si la position de la feuille active
       'est différente du nombre de feuilles du classeur
       If ActiveSheet.Index <> Sheets.Count Then MsgBox _
           "Vous n'êtes pas sur la dernière feuille", vbInformation: Exit Sub

        ' Désactive la mise à jour de l'écran
       Application.ScreenUpdating = False

        Cells.Copy
        Sheets.Add after:=Sheets(Worksheets.Count)
        ActiveSheet.Paste
        ActiveSheet.Range("a1").Select
        Application.CutCopyMode = False
    End Sub

Merci pour toute aide

-- 29 Mar 2011, 20:20 --

ah oui je viens de me rendre compte qu'il ne garde pas non plus la protection de la feuille, un moyen d'arranger ca aussi?

Bonsoir,

Pour le paramétrage de l'impression, regarde du coté de "PageSetup" :

With ActiveSheet.PageSetup
    .PrintArea = "" 'rien si pas de plage sinon, adresse de la plage
    .Zoom = 80
    .LeftMargin = 10
    .RightMargin = 10
    .TopMargin = 10
    .BottomMargin = 10
    .Orientation = xlPortrait
    'etc...
End With

Et pour la protection, il te faut la faire avec :

ActiveSheet.Protect "MonMotDePasse"

Hervé.

Merci Hervé

Je teste ça dès demain

-- 30 Mar 2011, 19:58 --

Ca marche, merci pour l'info

un nv probleme se presente :

Sub Copie()
        'ActiveSheet.Index = position de la feuille active
       'Sheets.Count = nombre de feuilles dans le classeur
       'On sort de la macro si la position de la feuille active
       'est différente du nombre de feuilles du classeur
       If ActiveSheet.Index <> Sheets.Count Then MsgBox _
           "Vous n'êtes pas sur la dernière feuille", vbInformation: Exit Sub

        ' Désactive la mise à jour de l'écran
       Application.ScreenUpdating = False
ActiveSheet.Unprotect "0000"
        Cells.Copy
        Sheets.Add after:=Sheets(Worksheets.Count)
        ActiveSheet.Paste
        ActiveSheet.Range("a1").Select
        Application.CutCopyMode = False
        With ActiveSheet.PageSetup
        .Zoom = 75
       .TopMargin = 58
        .BottomMargin = 35
End With
ActiveSheet.Protect "0000"
End Sub

Je rappelle vite fait ce que fait ma macro. Elle crée une copie de la dernière feuille de mon classeur (appelons la feuil7) et uniquement de la derniere feuille (ca ne marche pas avec feuil6 ou feuil5 ou etc).

En rajoutant la protection de la feuille, les boutons de mes macros ne sont pas copiés sur la feuille nouvellement créée (feuil8). J'ai donc pensé à deproteger la feuille avant l'execution de la macro. Cela fonctionne mais laisse la feuille precedente (feuil7) sans aucune protection.

J'aurais besoin que la macro :

  • Deprotege la feuille active
  • Creer une nouvelle feuille
  • Copie le contenu de la feuille active dans la nouvelle feuille
  • Reprotege la feuille active
  • Protege la feuille nouvellement créée
  • Ouvre la feuille nouvellement créée

J'avais éventuellement pensé à une nvelle macro qui serait lancée en même tps que celle que j'ai affichée dans ce post et qui s'occuperait exclusivement de la reactivation de la protection de la feuille qui vient d'etre copiée (feuil7 dans notre exemple). Mais j'y arrive pô.

Merci

Bonjour

A la fin de ta macro, la feuille active est la feuille nouvellement créée.

Il suffit donc d'ajouter ceci avant le End Sub :

Sheets(Sheets.Count - 1).Protect "0000"

Pour protéger la feuille précédente.

Amicalement

Nad

Arf c'etait tout bête

Merci infiniment Nad

Rechercher des sujets similaires à "copier feuille marges echelle"