Merci pour ta réponse.
Quand tu me dis d'initialiser MyFileList quelque part, cela peut être fait n'importe où? Juste avec la ligne que tu as écrit?
Sinon je copie la suite du code, parce qu'efffectivement, ça coince plus loin :)
Merci encore!
'Recherche du fichier log contenant les données de FMC
myCurrDir = CurDir
ChDrive "U"
MyFileList = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Fichier texte des données de GPMS? :", , True)
If Not IsArray(MyFileList) Then
' l'utilisateur a choisi le bouton cancel de la boite de dialogue
'car GetOpenFilename renvoie False si on choisi Cancel
End
End If
'Demande du nom détaillée du fichier de sortie
'nom qui apparaitra derriere allnormaux et allcusip
myDetailName = InputBox("Date du dernier fichier pour Atlas : ?", , Format(Now, "yy mmm dd -hh mn"))
If myDetailName = "" Then
End
End If
'Changement des options d'affichage
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Ouverture du fichier log contenant les données de GPMS
'delimiter : le point virgule
myIntCompteur = 0
For Each MyFile In MyFileList
ChDrive "U"
Application.StatusBar = "Formatting Gpms File "
Workbooks.OpenText Filename:=MyFile, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
, Space:=False, Other:=True, OtherChar:=";", FieldInfo:=Array(Array(1, 5 _
), Array(2, 5), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1))
Set myCurrWrkBook = ActiveWorkbook
'ordonnerColonnes
'Effacer les données inutiles
'Range(Cells(1, ActiveCell.Column + 1), Cells(1, 256)).EntireColumn.Select
'Selection.Delete
'Nommer la plage de données
Range("A1").Select
ActiveSheet.UsedRange.Select
ActiveWorkbook.Names.Add Name:="myDatas", RefersTo:="=" & ActiveSheet.Name & "!" & Selection.Address
'Sauvegarde au format Excel en cours de route (au cas ou)
ChDrive "F"
ChDir myChemin1 & "\" & mySousChemin4
ActiveWorkbook.SaveAs myChemin1 & "\" & mySousChemin4 & "\" & "Wilshire.xls", xlNormal
'On veut sauver un fichier par date différente, le tri est fait via l'utilisation de filtres
Range("A1").Select
Selection.End(xlToRight).Offset(0, 2).Select
Set myRange = ActiveCell
Windows("Wilshire.xls").Activate
'Tri par Date2 asc,Portfolio_Code asc, Asset_Code asc
Range("1:1,IV1").Select
Range("IV1").Activate
Selection.Find(What:="Date2", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
colDate2 = ActiveCell.Column
Range("1:1,IV1").Select
Range("IV1").Activate
Selection.Find(What:="Portfolio_Code", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
colPortfolio_code = ActiveCell.Column
Range("1:1,IV1").Select
Range("IV1").Activate
Selection.Find(What:="Asset_Code", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ActiveCell.Select
colAsset_Code = ActiveCell.Column
Range("B1").Select
Selection.Sort Key1:=Range(Cells(2, colDate2).Address), Order1:=xlAscending, Key2:=Range(Cells(2, colPortfolio_code).Address) _
, Order2:=xlAscending, Key3:=Range(Cells(2, colAsset_Code).Address), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Cells.Select
Cells.EntireColumn.AutoFit
'Pour chaque date2 différente filtres les données sur cette date et les transférer dans un fichier au format csv
Cells(2, colDate2).Select
While ActiveCell <> ""
If myDate <> ActiveCell Then
'Définition de la date
myDate = ActiveCell
Application.StatusBar = "Generating Gpms File for date : " & myDate
'Filtrage
If Not ActiveSheet.AutoFilterMode Then Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=CDate(myDate)
'Transfert dans un nouveau fichier
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
'Definir l'ordre des colonnes
ordonnerColonnes 'les colonnes inutiles sont supprimées dans cette macro
'Suppression des données inutiles (nom des colonnes)
Rows("1:1").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
intRow = intRow + ActiveSheet.UsedRange.Rows.Count
'Insertionde 2 colonnes (vides) pour conserver compatibilité avec fmc (anciennes colonnes)
Columns("D:E").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select
'sauvegarde au format texte, la date des données est passée via le nom de ce fichier à créer
ActiveWorkbook.SaveAs Filename:=myChemin1 & "\" & mySousChemin4 & "\GPMSDATA" & Format(myDate, "yymmdd") & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
On Error Resume Next
myFileCount = UBound(MyFileSave)
Err.Clear
On Error GoTo 0
ReDim Preserve MyFileSave(myFileCount + 1)
MyFileSave(myFileCount + 1) = myChemin1 & "\" & mySousChemin4 & "\GPMSDATA" & Format(myDate, "yymmdd") & ".csv"
ActiveWorkbook.Close False
End If
'Cellule suivante (ligne introw = juste après les données que l'on a deja traitées)
Windows("Wilshire.xls").Activate
If ActiveSheet.AutoFilterMode Then Selection.AutoFilter 'enlever le filtre
Cells(intRow + 2, 1).Select '2 en plus car 1 ligne en têtes et on veut aller aussi sur la ligne juste après les données traitées
Wend
ActiveWorkbook.Close False
myIntCompteur = myIntCompteur + 1
Next MyFile
'Retour au chemin par défaut présent avant le lancement de cette macro
On Error Resume Next
ChDrive myCurrDir
ChDir myCurrDir
On Error GoTo 0
'Rétablissement des options d'affichage
With Application
.StatusBar = ""
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub