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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager