XL 2010 Optimisation gestion fichiers et onglets

Wyrgle

XLDnaute Junior
Bonjour à tous,

Je suis en plein ds un projet pour mon boulot qui nécessite la gestion de 190 fichiers au quotidien.
Je cherche donc à optimiser sa vitesse d'exécution.
Voila : je veux sauvegarder les données de l'onglet A du fichier A dans l'onglet B du fichier B que je crée pour cela.

VB:
Sub TEST()
'

    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:="D:\BOULOT\FICHIER B.xlsx",

    Windows("FICHIER A.xlsx").Activate
    Cells.Select
    Selection.Copy
   
    Windows("FICHIER B.xlsx").Activate
   
    Cells.Select
    ActiveSheet.Paste
   
    Sheets("Sheet1").Select
    Sheets("Sheet1").Name = "ONGLET B"
   
    ActiveWorkbook.Save
End Sub

Peut-on faire plus court ?
Je débute, merci pour votre aide !
Wyrgle
 

sousou

XLDnaute Barbatruc
Bonjour
Pas besoin de select pour accéder aux feuilles et à leurs données.
Ça ne sera pas plus rapide, mais plus simple.

Sub TEST()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="D:\BOULOT\FICHIER B.xlsx"
workbooks("FICHIER A").sheets(1).usedrange.copy (workbooks("FICHIER B").sheets(1).range("a1"))

workbooks("FICHIER B.xlsx").sheets(1) .Name = "ONGLET B"
workbooks("FICHIER B.xlsx").Save savechange:=true
End Sub
 

chris

XLDnaute Barbatruc
Bonjour à tous

De façon générale ne pas copier les cellules mais l'onglet
Question également posée sur un autre forum avec des réponses pertinentes.
Notamment de Menhir:
Code:
Sub TEST()
'ThisWorkbook contient la macro (fichier A)
'ActiveWorkbook est le classeur actif (fichier B)
  ThisWorkbook.Sheets("ONGLET A").Copy 'cela crée automatiquement un nouveau classeur avec l'onglet copié
  ActiveSheet.Name = "ONGLET B"
  ActiveWorkbook.SaveAs Filename:="D:\BOULOT\FICHIER B.xlsx"
  'ActiveWorkbook.Close
End Sub
 

Modeste

XLDnaute Barbatruc
Bonjour Wyrgle,
Salut sousou :)

On peut aussi directement copier une feuille: sans autre précision, la copie se fait dans un nouveau classeur ... qu'il n' y a plus qu'à enregistrer (... me semble-t-il!?)
VB:
Sub Test()
Workbooks("Fichier A.xlsx").Sheets(1).Copy
ActiveSheet.Name = "Onglet B"
ActiveWorkbook.SaveAs "D:\Boulot\Fichier B.xlsx"
End Sub

[Edit:] Arfff! Désolé, chris ... même idée. Bise
 

Wyrgle

XLDnaute Junior
Bonjour à tous.
Tout dépend du résultat cherché?
(formats,formules,et autres noms dans la feuille, liens......)
Merci pour vos réponses.

Sousou : je recois 190 fichiers-clients xls, xlsx et csv que je veux copier dans leurs répertoires respectifs pour ne pas travailler directement sur eux (sagesse est mère de sureté...). Le travail consiste en une mise en page personnalisée par client puis une impression. Sachant EN PLUS que je peux recevoir plusieurs fichiers pour un même client dans la même journée, je dois donc faire attention à ne pas écraser mon fichier déjà créé.

VB:
Sub Clients_File_Format_Process()
'
' ------------------------- MAIN PROCESS -----------------------------
'
'
'
' Check the location of the client summary
' Check the names of both the file and the tab to be processed
' Make a copy of the tab in a new file
' Format the client files in line with requirements
'
'
'
''
'---------------------------------------------------------------------


' Declaration of variables
Dim ligne As Integer

Dim File_Name As String
Dim File_Location As String
Dim Client_Number As Long

ligne = 12

Cells(ligne, 23).Select
File_Location = Cells(ligne, 23).Text
File_Name = Cells(ligne, 25).Text
Client_Number = Cells(ligne, 2).Text

' Check the existence of a directory
Do While Len(File_Location) > 0
    If Len(Dir(File_Location, vbDirectory)) = 0 Then
        Cells(ligne, 24).Interior.ColorIndex = 3
    Else
        Cells(ligne, 24).Interior.ColorIndex = 10
       
'
' Client file management to be created here
'
              
    End If
   
    ligne = ligne + 1
    File_Location = Cells(ligne, 23).Text
Loop

End Sub

Pour le moment je vérifie l'existence de répertoires créés par des routines XML à partir de répertoires listés dans mon fichiers contenant cette marco. Le XML créé le répertoire et y met le fichier client. (donc si il y a un fichier à traiter, il y a un répertoire et inversement, d'ou le check).

Voila, je suis un peu perdu, je rame...
 

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
419
Réponses
38
Affichages
4 K

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972