Macro copie d'un classeur

Fermé
Macrodeb Messages postés 9 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 3 avril 2018 - Modifié par Macrodeb le 29/12/2010 à 16:16
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 29 déc. 2010 à 23:02
Bonjour à toute la communauté de "commentcamarche",

Je viens vers vous car j'ai différentes questions suite à la réalisation d'une macro.

Je souhaite créer une macro qui me permette de créer une copie d'un classeur entier.
Dans ce nouveau classeur, je souhaiterais que toutes les feuilles soient affichées (des feuilles sont masquées dans le docuement d'origine) et que la protection soit retirée.

Voici le début de code :

    
Sub Extraction() 
     
     jour = Day(Now) & "_" & Month(Now) & "_" & Year(Now) '// pour que le nom de la copie, intègre la date (jour - mois - année) 
     monfichier = "C:\Documents and Settings\GTmacrodeb\Mes documents\Suivi Location" & " " & jour 
   

 If Dir(monfichier & ".xls" ) <> "" Then 
 MsgBox ("Un fichier de ce nom existe déjà, veuillez le supprimer/déplacer avant nouvelle copie" ) 
  Else 
  monfichier = monfichier & ".xls" 
  
  ActiveWorkbook.SaveAs Filename:= _ 
          monfichier, _ 
          FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ 
          ReadOnlyRecommended:=False, CreateBackup:=False 
  
          MsgBox ("Fichier créé dans Mes Documents" ) 
  
  monfichier.Worksheets("Archivage Matériel" ).unhide 
              
              End If 
          
          End Sub


Pour l'instant je n'ai pas encore pris en compte la partie retrait de la protection car j'ai un message d'erreur avec ce code
"Erreur d'exécution '424' Objet requis" pour la ligne monfichier.Worksheets("Archivage Matériel" ).unhide

Une autre question : Est-il possible de créer le nouveau fichier avec l'ensemble des feuilles rendues visibles sans qu'il s'ouvre nécessairement ?

Merci d'avance pour votre aide.
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
29 déc. 2010 à 22:37
Bonjour,

L'absence de déclaration des variables est la source de nombreux problèmes et de manque de carté dans le code, c'est pourquoi il est conseillé d'utiliser systématiquement au début de chaque module :
Option Explicit
Dans ton cas, la ligne :

monfichier = monfichier & ".xls"
entraine la déclaration implicite de la variable monfichier comme chaine de caractère, d'où l'erreur lorsque tu tentes d'utiliser cette même variable comme un objet workbook à la ligne :
monfichier.Worksheets("Archivage Matériel" ).unhide 
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié par Patrice33740 le 29/12/2010 à 23:03
Outre le fait que la syntaxe .unhide est incorrecte, "Erreur d'exécution '424' Objet requis" vient du fait que monfichier (il faudrait utiliser une autre variable car celle-ci est déjà utilisée) n'a pas été affecté par une instruction du type :
Set monfichier = ...
0
Bonsoir

monfichier.Worksheets("Archivage Matériel" ).unhide

pour excel 2003, ça s'écrierait (a priori):
monfichier.Worksheets("Archivage Matériel" ).Visible = True

Par ailleurs ce code intervenant après l'enregistrement du classeur, quelle action pourra-t-il avoir ?

Bonne soirée ( nuit ? ou journée?)
0