Simplification du code VBA
Bonjour à tous,
Je suis débutant VBA donc j'essaye de faire des code en me renseignant avec internet ou avec l'enregistreur de macro. Je sais qu'il ne faut pas trop utiliser les mots sélect et activate. Par conséquent pouvez m'aidez à rendre le code suivant plus jolie avec des variables afin de pas avoir que des chose noter en dure, et ainsi pouvoir réutiliser le code sur d'autre fichier. Si vous avez d'autres codes plus jolie à proposer je suis preneur.
Le but du programme est d'aller chercher des fichier textes (10) (composées de 11 colonnes avec un en-tête, délimité par un espace), puis de coller les informations des ces fichier textes dans le premier onglet du classeur Excel. Puis de les trier dans un sens croissant par rapport à la colonne K.
Si de plus que je n'ai pas encore fait dans le code : dans le module Thisworkbook pouvoir exécuter la macro à l'ouverture du fichier sans devoir aller l'exécuter tout en donnant un nom au premier onglet " database " ou seront copier les valeurs.
Merci à vous pour votre aide. :D:D
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
Option explicit
Sub OpenFile()
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim Cel As Range
For i = 1 To 10
Workbooks.OpenText Filename:="K:\VBA\orderflow_" & i & ".txt"
Next
' Selectionetopiercoller Macro
Windows("orderflow_1.txt").Activate
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Classeur1.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
For j = 2 To 10
Windows("orderflow_" & j & ".txt").Activate
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Classeur1.xlsm").Activate
Range("A1").End(xlDown).Offset(1).Select
ActiveSheet.Paste
Next
For n = 1 To 10
Windows("orderflow_" & n & ".txt").Activate
ActiveWindow.Close
Application.DisplayAlerts = False
Next
Columns("A:K").Select
Selection.Sort Key1:=Range("K1"), Order1:=xlAscending, Header:=xlYes, MatchCase:=False, Orientation:=xlTopToBottom
End Sub |