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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
Option Explicit
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers (*.txt), *.txt"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
Sub Essai()
Dim WbRecap As Workbook 'fichier recap
Dim ShRecap As Worksheet 'feuille où on écrit les données
Dim DerniereLigneRecap As Long 'ligne où on écrit les données
Dim ShSource As Worksheet 'feuille où on cherche les données
Dim K As Long
Dim vFichiers As Variant 'noms des fichiers
Set WbRecap = ThisWorkbook 'Fichier récapitulatif
Set ShRecap = WbRecap.Sheets(1) 'on écrit dans la feuille 1 du fichier récapitulatif
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
' Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For K = LBound(vFichiers) To UBound(vFichiers)
With ShRecap
DerniereLigneRecap = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 'ligne pour écrire le log des fichiers compilés
' Application.StatusBar = ">> Lecture du fichier #" & K & "/" & UBound(vFichiers)
OuvertureFichierTexte (vFichiers(K)) 'on ouvre le fichier
Set ShSource = ActiveSheet 'On copie les données de la feuille 1
With ShSource
.UsedRange.Copy Destination:=ShRecap.Cells(DerniereLigneRecap, 1) ' A adapter
End With
ActiveWorkbook.Close savechanges:=False 'fermer fichier
Set ShSource = Nothing
End With
Next K
Set ShRecap = Nothing
Set WbRecap = Nothing
' Application.ScreenUpdating = True
' Application.StatusBar = False
End Sub
Sub OuvertureFichierTexte(ByVal CheminEtNomDuFichierTxt As String)
' Pour obtenir la bonne syntaxe du fichier texte à ouvrir, faire d'abord l'essai avec l'enregistreur de macro et modifier les paramètres
Workbooks.OpenText Filename:=CheminEtNomDuFichierTxt _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
41, 1)), TrailingMinusNumbers:=True
End Sub |
Partager