Copie d'un tableau vers nouveau classeur

Loisel

XLDnaute Nouveau
Bonjour le forum


Je voudrais pouvoir copier automatiquement le tableau de l'onglet BD (colonnes A à BF) vers un nouveau classeur qui s'appellerait
BD _W.xlsm placé dans un répertoire TEST.

Tout en conservant la mise en forme, les MFC, les formats comme les dates, etc
L'onglet BD est évolutif donc je ne peux pas nommée une zone pré-définie.

Pourriez-vous m'aider à réaliser en VBA ?
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Re : Copie d'un tableau vers nouveau classeur

Bonsoir Loisel,

Code:
Sub Exporter()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
MkDir ThisWorkbook.Path & "\TEST" 'création du répertoire
On Error GoTo 0
Sheets("BD").Copy
With ActiveWorkbook.Sheets(1)
  .Columns("BG").Resize(, .Columns.Count - 58).Delete
  .Parent.SaveAs ThisWorkbook.Path & "\TEST\BD_W.xlsm", 52
  .Parent.Close
End With
End Sub
Si l'on veut un fichier .xlsx :

Code:
.Parent.SaveAs ThisWorkbook.Path & "\TEST\BD_W.xlsx", 51
Bonne fin de soirée.
 

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

Bonsoir Job75

Merci beaucoup pour votre célérité.
Sans vouloir abuser pourriez-vous me dire pourquoi :

le 52
après la ligne .Parent.SaveAs ThisWorkbook.Path & "\TEST\BD_W.xlsm", 52

ou le 51 pour la ligne de code .Parent.SaveAs ThisWorkbook.Path & "\TEST\BD_W.xlsx", 51


Si le tableau évolue, les lignes créées à la suite du tableau seront-elles également prises en compte ?
Dans l'affirmative, quel est le morceau du code qui le prévoit ?

Je vois que vous prenez le colonne BG pour revenir a contrario de A à BF, c'est cela ?

Merci et bonne fin de soirée également
 

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

Merci à nouveau pour toutes ces précisions.

Bonne soirée
 

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

Bonjour Job75

Serait-il possible d'ajouter devant le nom du fichier BD_W, la date du jour au format ddmmyy ?
 

job75

XLDnaute Barbatruc
Re : Copie d'un tableau vers nouveau classeur

Bonjour Loisel, le forum,

Aucune difficulté en insérant Format(Date, "ddmmyy").

J'en profite pour montrer 2 manières de lancer la macro :

- fichier (1) avec un bouton

- fichier (2) avec cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sauvegarder
End Sub
La macro elle-même :

Code:
Sub Sauvegarder()
Dim dossier$
dossier = ThisWorkbook.Path & "\TEST\" 'à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
MkDir dossier 'création du répertoire
On Error GoTo 0
Sheets("BD").Copy
With ActiveSheet
  .DrawingObjects.Delete 'supprime les objets
  .Columns("BG").Resize(, .Columns.Count - 58).Delete
  .Parent.SaveAs dossier & Format(Date, "ddmmyy") & "_BD_W.xlsm", 52
  .Parent.Close
End With
End Sub
Bonne journée.
 

Fichiers joints

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

A nouveau un grand merci à toi Job75.
Je vais regarder tout ça avec beaucoup d'attention.

Bonne journée
 

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

Re,

A la lecture de votre post #7, et en particulier lancer la macro depuis ThisWorkbook , cela me donne une idée ou plutôt deux interrogations.

Comment puis-je lancer la première macro à l'ouverture du fichier
et la seconde à la fermeture de ce même fichier avec ou sans enregistrement du fichier ?

Macro 1
Code:
   Sub plein_ecran()
   With Application
        .DisplayFormulaBar = False
        .ActiveWindow.DisplayHeadings = False
        .ActiveWindow.DisplayGridlines = False 
        .DisplayFullScreen = True
    End With
End Sub
Macro 2
Code:
Sub Retour() 
   With Application
        .DisplayFullScreen = False 
        .ActiveWindow.DisplayHeadings = True
   .ActiveWindow.DisplayGridlines = True 
               .DisplayFormulaBar = True 
    End With
End Sub
 

job75

XLDnaute Barbatruc
Re : Copie d'un tableau vers nouveau classeur

Re,

C'est quand même assez élémentaire non ?

Utilisez Workbook_Open et Workbook_BeforeClose.

A+
 

Loisel

XLDnaute Nouveau
Re : Copie d'un tableau vers nouveau classeur

Job75,

Je vous l'accorde, c'est assez élémentaire.

C'était surtout pour avoir la confirmation d'un sachant car j'ai un message d'erreur pour Workbook_BeforeClose ;-(

J'en ignore la raison

A savoir : erreur de compilation
La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procedure de même nom.
 

job75

XLDnaute Barbatruc
Re : Copie d'un tableau vers nouveau classeur

Re,

Le message est clair : vous n'utilisez pas la bonne syntaxe.

Cherchez donc un peu, sur XLD ou sur le web.

A+
 

Discussions similaires


Haut Bas