XL 2013 Optimisation macro fait par un débutant

Etn

XLDnaute Occasionnel
Bonjour à tous !

Je débute plus ou moins dans excel et je n'y connais pas grand chose en VBA.
Du coup comme bon débutant qui se respecte, je fais pas mal de chose à l'aide de l'enregistreur de macro. Sauf que c'est quand même pas très beau, carrément pas optimisé, et pas très compréhensible.

Le principe (voir "classeur etn" ci-joint) est de copier les colonnes A,B et C de la feuille "extraction" vers la feuille BDD les unes à la suite des autres (c'est à faire tous les jours).
Je me sers donc du code suivant :

Code:
Sheets("Extraction stock bilan").Select
  Range("G6").Select
  ActiveCell.FormulaR1C1 = "FEUIL1"
  Range("G5").Select
  ActiveCell.FormulaR1C1 = _
  "=""testetn.xlsx"""
  Sheets("Extraction stock bilan").Select
  Range("A1:C250").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("BDD stock bilan").Select
  ActiveSheet.Range("a4").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Application.CutCopyMode = False
  Sheets("Extraction stock bilan").Select
  Range("G5").Select
  Selection.Copy
  Sheets("BDD stock bilan").Select
  ActiveSheet.Range("a2").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  ActiveSheet.Range("a2").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  ActiveSheet.Range("a2").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Sheets("Extraction stock bilan").Select
  Range("G6").Select
  Selection.Copy
  Sheets("BDD stock bilan").Select
  ActiveSheet.Range("a3").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  ActiveSheet.Range("a3").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  ActiveSheet.Range("a3").End(xlToRight).Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
  Sheets("Extraction stock bilan").Select

Alors certes c'est long, mais le problème c'est que je dois faire cela pour 5 feuilles du même classeur, donc j'ai recopié 4 fois de plus le code ci dessus en modifiant à chaque fois le nom de la feuille...

[SUITE DANS LE MESSAGE SUIVANT (trop long sinon...)]
 

Pièces jointes

  • classeur etn.xlsm
    57.8 KB · Affichages: 39
  • testetn.xlsx
    11.9 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Bonjour Loup Solitaire ;)

Etn
Ci-dessous ta macro corrigée
VB:
Sub test()
Dim WB_SRC As Workbook, X&, Y&, strPathFile, WS As Worksheet
Application.ScreenUpdating = False
strPathFile = Application.GetOpenFilename(FileFilter:="Fichiers EXCEL (*.XLSX), *.XLSX", Title:="Choisir votre fichier, svp")
If strPathFile = False Then Exit Sub
Set WB_SRC = Workbooks.Open(strPathFile) 'OUVRIR LE FICHIER SOURCE

For Each WS In WB_SRC.Worksheets
With ThisWorkbook.Sheets("BDD Stock bilan")
 X = .Cells(3, Columns.Count).End(xlToLeft).Offset(, 1).Column
 Y = WS.[A1].CurrentRegion.Columns.Count
 .Cells(2, X).Resize(, Y) = WB_SRC.Name
 .Cells(3, X).Resize(, Y) = WS.Name
 WS.[A1].CurrentRegion.Copy
 .Cells(4, X).PasteSpecial xlValues 'COPIER LES DONNEES
End With
Next
'FERMER LE FICHIER SOURCE
WB_SRC.Close
End Sub
 

Etn

XLDnaute Occasionnel
Re à tous,

Olala en effet, la journée a été longue...
Ok j'ai repris la dernière macro, et elle marche à merveille.
Juste dernier bémol, le fait qu'elle prenne toutes les feuilles du classeur source. Y aurait il moyen de ne prendre que des feuilles précises ? Que l'on pourrait spécifier dans la feuille ou dans la macro ?

Merci encore à vous deux,

Etn.
 

Discussions similaires

Réponses
2
Affichages
124

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia