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