Chargement de plusieurs fichiers via macro et mémoire qui explose
Bonjour à tous,
Je vous remercie déjà de bien vouloir me lire et m'accorder un peu de votre temps pour essayer de résoudre mon problème.
J'ai bcp cherché et simplifié au maximum le code pour résoudre ce problème sur le forum et sur internet en testant directement des solutions proposées pour des soucis quasi similaires mais rien n'y fait et j'ai besoin de nouveaux points de vue.
Alors je vous expose mon souci.
Dans mon boulot, je réalise des simulations sous un logiciel dédié qui va me créer des fichiers résultats dans un format propre à lui avec une certaine tabulation qui permet de les ouvrir sous excel pour les lire. Il faut juste ouvrir le fichier en indiquant à excel qu'il se base sur les espaces et les tabulations pour le charger correctement. Rien de bien sorcier jusque là.
Dans le répertoire des simulations, on retrouve le fichier du modèle, le fichier résultat, le rapport de la simulation, Etc. tous sous le même nom mais avec une extension différente. Bref, tout ca pour dire que le fichier résultat ne sera jamais le seul dans le repertoire lorsqu'une simulation est lancée.
C'est là que ca se complique. Comme je dois réaliser des enveloppes opératoires d'un système, je dois lancer plusieurs simulations, le nombre varient entre 10 et 50000 en fonction des cas. Tout est automatisé bien entendu car je n'ai pas envie de cliquer 50000 fois sur le bouton "RUN" du logiciel.
Une fois les simulations complétées, il faut les post-traiter et j'ai donc aussi créé une macro pour éviter le travail laborieux de post-traitement surtout si j'en ai 50000. Cette macro me permet de:
- Charger les cas sur je veux considérer pour le post-traitement. Ces derniers apparaissent sous forme d'une liste dans une colonne sous excel avec leur chemin d'accès complet sur le PC. La macro créée est capable de faire le distinguo entre les différentes extension et ne se concentre que sur les fichiers résultats - Aucun souci jusque-là
- Lire la liste et pour chaque fichier résultat: l'ouvrir, faire des traitements de données par rapport à des variables que je souhaite regarder (pression, temperature, Etc.), extraire les données vers le fichier excel résultats et fermer le fichier de simulations sans le modifier pour qu'il soit toujours lisible par le logiciel
- Continuer le post-traitement mais directement dans le fichier excel résultat (analyse plus fine des données)
Ce code fonctionne très bien dans le sens où les fichiers sont bien ouverts et les data sont bien extraites. MAIS le problème est que excel finit par saturé généralement après 2500 cas traités.
Lorsque je regarde le gestionnaire des taches pdt l'exécution de la macro, je vois en fait la mémoire allouée à excel qui augmente au fur et à mesure que les fichiers s'ouvrent et se ferment jusqu'au moment où plus de réponse ...
Après différents tests et investigation, la partie du code qui fait que la mémoire augmente est celle qui ouvre et ferme les fichiers. A chaque fois le fichier excel est ouvert dans une nouvelle instance d'Excel. Est ce que cela vient de là ? je ne sais pas répondre. Le fait de fermer le fichier une fois que je n'en ai plus besoin devrait suffire à libérer la mémoire donc je en comprends pas.
Le fait d'avoir des fichiers avec une extension différente de celle d'excel ne permet pas de faire un traitement via SQL et ADO sans ouverture du fichier car le format différent est détecté et bloque.
Le code est déjà optimisé avec la désactivation du calcul auto et la mise à jour écran. J'ai également préféré l'écriture en dure dans les cellules plutôt que des formules.
Je vous copie la partie du code. Merci pour votre aide et vos retours.
[u]
Code:[/u]
Option Explicit
Sub Test_macro()
Dim T As Double
T = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim Max_line As Long
Dim indice As Long
Dim P_var_line As Long
Dim Pos_P_var_line As Long
Dim Max_line_trend As Long
Dim check As Long
Dim check_EVR As Long
Dim Forced As Long
Dim Forced_EVR As Long
Dim toto As Long
Dim Max_line_check As Long
Dim conv_factor As Double
Dim Time_end As Double
Dim DT As Double
Dim Time_simu As Double
Dim Forced_value As Double
Dim Forced_value_EVR As Double
Dim EVR_criteria As Double
Dim Main_file As Workbook
Dim Variable As String
Dim Variable_EVR As String
Variable = Cells(3, 3)
conv_factor = Cells(4, 3)
Time_end = Cells(5, 6)
Time_simu = Cells(3, 6) - 2
Forced_value = Cells(6, 6)
Variable_EVR = Cells(7, 3)
EVR_criteria = Cells(7, 6)
Forced_value_EVR = Cells(8, 11)
If Cells(5, 3) = "Min & Max values before end of simulations" Then
check = 1
Else
check = 0
End If
If Cells(6, 3) = "Yes" Then
Forced = 1
Else
Forced = 0
End If
If Cells(8, 3) = "Yes" Then
check_EVR = 1
Else
check_EVR = 0
End If
If Cells(8, 6) = "Yes" Then
Forced_EVR = 1
Else
Forced_EVR = 0
End If
Max_line = Cells(1000000, 2).End(xlUp).Row
Cells(1, 17) = 0
Range(Cells(11, 16), Cells(1000000, 22)).Clear
Set Main_file = ActiveWorkbook
For indice = 1 To 1
Call extraction_1st_case(Main_file, indice, Variable, Variable_EVR, check_EVR, conv_factor)
Next
Max_line = 200
For indice = 2 To Max_line - 10
Call extraction_other_cases(Main_file, indice, Variable, Variable_EVR, check_EVR, conv_factor)
Next
Sheets("Inlet pressure post-processing").Activate
Set Main_file = Nothing
Cells(3, 9) = Application.Round((Timer - T), 1) & " Sec"
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub extraction_1st_case(Main_file As Workbook, indice As Long, Variable As String, Variable_EVR As String, check_EVR As Long, conv_factor As Double)
Dim chemin As String
Dim catalog_line As Long
Dim time_series_line As Long
Dim count As Long
Dim Max_column As Long
Dim Variable_line As Long
Dim Variable_line_EVR As Long
Dim pressure_column As Long
Dim EVR_column As Long
Dim Max_line_trend As Long
Dim Nb_time_step As Long
Dim increment As Long
Dim temp_file As Workbook
'Chargement fichier résultat dans un nouveau WB, extraction resultat, puis fermeture du WB
chemin = Cells(10 + indice, 2)
'Vérification de la couleur de la cellule sheetname'
If Sheets("Inlet pressure post-processing").Cells(indice + 10, 1).Interior.ColorIndex = xlNone Then
On Error Resume Next
Sheets("Inlet pressure post-processing").Cells(10 + indice, 14).Clear
Application.DisplayAlerts = False
Workbooks.OpenText FileName:= _
chemin, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlSingleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
Space:=True, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Application.DisplayAlerts = True
If Err.Number = 0 Then
Err.Clear
Set temp_file = ActiveWorkbook
temp_file.Sheets(1).Select
temp_file.Sheets(1).Name = "Trend_extract"
'Identification de la position des variables à traiter
temp_file.Sheets("Trend_extract").Activate
catalog_line = Cells.Find(What:="CATALOG", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
time_series_line = Cells.Find(What:="SERIES", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
'Concatenation catalogue & numérotation'
Range("A" & catalog_line, "A" & time_series_line - 1).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
For count = 1 To Cells(catalog_line + 1, 3)
Cells(catalog_line + 1 + count, 2) = count
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 3)
Max_column = Cells(catalog_line + 1 + count, 3).End(xlToRight).column
If Max_column > 7 Then
For increment = 4 To 10
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 1) & " '" & Cells(catalog_line + 1 + count, increment) & "'"
Next
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 1) & " '" & Cells(catalog_line + 1 + count, 11) & "'"
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 1) & " '" & Cells(catalog_line + 1 + count, 12) & "'"
Else
For increment = 4 To Max_column
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 1) & " '" & Cells(catalog_line + 1 + count, increment) & "'"
Next
End If
Next
Variable_line = Cells.Find(What:=Variable, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
pressure_column = Cells(Variable_line, 2)
If check_EVR = 1 Then
Variable_line_EVR = Cells.Find(What:=Variable_EVR, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
EVR_column = Cells(Variable_line_EVR, 2)
End If
Max_line_trend = Cells(1000000, 1).End(xlUp).Row
Nb_time_step = Max_line_trend - time_series_line
'Recopie des données*
Main_file.Activate
Sheets("Working_sheet").Activate
Range(Cells(2, 1), Cells(1000000, 7)).Clear
If check_EVR = 1 Then
For increment = 1 To Nb_time_step
Cells(increment + 1, 1) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 3) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 2) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, pressure_column + 1) * conv_factor
Cells(increment + 1, 4) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, EVR_column + 1)
Next
Else
For increment = 1 To Nb_time_step
Cells(increment + 1, 1) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 2) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, pressure_column + 1) * conv_factor
Next
End If
temp_file.Close (False)
Set temp_file = Nothing
Main_file.Activate
Sheets("Working_sheet").Activate
Else
Err.Clear
MsgBox ("First file not existing - Post-processing stopped - Please review inputs")
Sheets("Inlet pressure post-processing").Activate
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End
End If
End If
End Sub
Sub extraction_other_cases(Main_file As Workbook, indice As Long, Variable As String, Variable_EVR As String, check_EVR As Long, conv_factor As Double)
Dim chemin As String
Dim catalog_line As Long
Dim time_series_line As Long
Dim count As Long
Dim Max_column As Long
Dim Variable_line As Long
Dim Variable_line_EVR As Long
Dim pressure_column As Long
Dim EVR_column As Long
Dim Max_line_trend As Long
Dim Nb_time_step As Long
Dim increment As Long
Dim temp_file As Workbook
Sheets("Inlet pressure post-processing").Activate
'Chargement fichier résultat dans un nouveau WB, extraction resultat, puis fermeture du WB
chemin = Cells(10 + indice, 2)
'Vérification de la couleur de la cellule sheetname'
If Cells(indice + 10, 1).Interior.ColorIndex = xlNone Then
On Error Resume Next
Sheets("Inlet pressure post-processing").Cells(10 + indice, 14).Clear
Application.DisplayAlerts = False
Workbooks.OpenText FileName:= _
chemin, Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlSingleQuote, _
ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
Space:=True, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Application.DisplayAlerts = True
If Err.Number = 0 Then
Err.Clear
Set temp_file = ActiveWorkbook
temp_file.Sheets(1).Select
temp_file.Sheets(1).Name = "Trend_extract"
'Identification des variables
Sheets("Trend_extract").Activate
catalog_line = Cells.Find(What:="CATALOG", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
time_series_line = Cells.Find(What:="SERIES", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
'Concatenation catalogue & numérotation'
Range("A" & catalog_line, "A" & time_series_line - 1).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
For count = 1 To Cells(catalog_line + 1, 3)
Cells(catalog_line + 1 + count, 2) = count
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 3)
Max_column = Cells(catalog_line + 1 + count, 3).End(xlToRight).column
For increment = 4 To Max_column
Cells(catalog_line + 1 + count, 1) = Cells(catalog_line + 1 + count, 1) & " '" & Cells(catalog_line + 1 + count, increment) & "'"
Next
Next
Variable_line = Cells.Find(What:=Variable, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
pressure_column = Cells(Variable_line, 2)
If check_EVR = 1 Then
Variable_line_EVR = Cells.Find(What:=Variable_EVR, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
EVR_column = Cells(Variable_line_EVR, 2)
End If
Max_line_trend = Cells(1000000, 1).End(xlUp).Row
Nb_time_step = Max_line_trend - time_series_line
'Recopie des données*
Main_file.Activate
Sheets("Working_sheet").Activate
Range(Cells(2, 1), Cells(1000000, 7)).Clear
If check_EVR = 1 Then
For increment = 1 To Nb_time_step
Cells(increment + 1, 1) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 3) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 2) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, pressure_column + 1) * conv_factor
Cells(increment + 1, 4) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, EVR_column + 1)
Next
Else
For increment = 1 To Nb_time_step
Cells(increment + 1, 1) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, 1)
Cells(increment + 1, 2) = temp_file.Sheets("Trend_extract").Cells(time_series_line + increment, pressure_column + 1) * conv_factor
Next
End If
temp_file.Close (False)
Set temp_file = Nothing
Main_file.Activate
Sheets("Working_sheet").Activate
Else
Err.Clear
Sheets("Inlet pressure post-processing").Cells(10 + indice, 14) = "Input file not found"
Sheets("Inlet pressure post-processing").Cells(11 + Sheets("Inlet pressure post-processing").Cells(1, 17), 16) = Sheets("Inlet pressure post-processing").Cells(10 + indice, 2)
Sheets("Inlet pressure post-processing").Cells(11 + Sheets("Inlet pressure post-processing").Cells(1, 17), 22) = Sheets("Inlet pressure post-processing").Cells(10 + indice, 14)
Sheets("Inlet pressure post-processing").Cells(1, 17) = Sheets("Inlet pressure post-processing").Cells(1, 17) + 1
End If
End If
End Subbonjour
peux-tu nous donner des noms de tes fichiers à ouvrir (noms et extensions) ?
ainsi qu'un ou des exemples (raccourcis-les si trop volumineux)
mon avis est qu'il faut les lire (sans les ouvrir) dans Excel (ou dans Power BI) avec Power Query
des milliers de fichiers d'un coup !
sans macro
ou bien, s'il faut modifier leur extension avant lecture par PQuery, tu feras la macro (qui n'ouvre rien
à te relire
bonne année
Bonjour jmd,
Merci pour ta réponse et ton aide. Je ne connais pas Power query et power BI, j'ai vu que cela pourrait peut être résoudre ce problème mais je n'ai pas voulu me lancer dedans car je ne connaissais pas et je n'avais pas forcément le temps de m'y mettre . Mais si je n'ai pas le choix, pourquoi pas. Ca permettra de découvrir un outil supplémentaire.
Je joins à ma réponse un exemple de fichier résultat. J'ai du modifier l'extension car elle n'était pas pris en charge.
Les fichiers résultats ont normalement des extensions ".tpl"
Une fois l'extension rechangée, ils peuvent se lire via un notepad sans aucun souci ou s'ouvrir avec excel.
Le problème en changeant en barbare l'extension est que l'on perd la tabulation et les espaces ce qui rend plus compliquée l'analyse des données.
Pour le nom des cas, ils sont tous construits de la même manière. Un numéro, puis un nom générique qui rappelle les variables du calcul pour définir l'enveloppe opératoire. Voilà à quoi ressemble la liste dans excel une fois chargée.
File name
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 1 - THP10WC0GOR10GRAT0LIQ500_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 2 - THP10WC0GOR10GRAT0LIQ5000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 3 - THP10WC0GOR10GRAT0LIQ7000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 4 - THP10WC0GOR10GRAT0LIQ8000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 5 - THP10WC0GOR10GRAT0LIQ9000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 6 - THP10WC0GOR10GRAT0LIQ10000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 7 - THP10WC0GOR10GRAT0LIQ11000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 8 - THP10WC0GOR10GRAT0LIQ12000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 9 - THP10WC0GOR10GRAT0LIQ13000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 10 - THP10WC0GOR10GRAT0LIQ13500_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 11 - THP10WC0GOR10GRAT0LIQ14000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 12 - THP10WC0GOR10GRAT0LIQ14500_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 13 - THP10WC0GOR10GRAT0LIQ15000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 14 - THP10WC0GOR10GRAT0LIQ16000_Riser.tpl
C:\Users\J0389783\00 - Working directory\VLPRiser - Refined\Case 15 - THP10WC0GOR10GRAT0LIQ20000_Riser.tpl
Encore merci.
re
ton fichier est l'exemple type du fichier à lire avec Power Query
pour ton Excel 2013
https://www.youtube.com/watch?v=gwW2CDdvUUs
il est inclus dans les Excel plus récents
et il est dans Power BI Desktop gratuit. N'essaye pas ce dernier logiciel, tu deviendrais accro
et à transfpormer dans PQuery
supprimer des lignes
éclater des colonnes selon un séparateur (ici l'espace)
etc
d'abord leur mettre une extension du genre txt, csv ou xls,
les mettre tous dans un unique répertoire
puis ouvrir un Excel (ou Power BI Desktop gratuit)
menu Power Query
obtenir "depuis un répertoire" ou un classeur
tous tes fichiers sont lus d'un coup, et transformés
note : il est trèèèès important pour ton avenir d'apprendre PQuery et PBI
à te relire
Re,
Power Query était déjà installé sur mon PC, mais je ne voulais pas y toucher pour le moment après quelques tests infructueux.
Est ce que tu aurais plus de doc ou des liens pour comprendre un peu mieux le fonctionnement de cet outil car là je patauge un peu.
Quelques questions que je me pose:
- Faut-il vraiment copier les fichiers dans un répertoire unique ? En fait je voudrais limiter le nombre de déplacements de fichiers pour des questions d'archivage. Est ce que l'on pourrait gérer cela avec les filtres de Power Query ? ce n'est pas très clair. Par expérience, peut on faire cela avec une macro (je la ferai bien entendu si possible, mais j'ai un doute) ?
- Faut-il vraiment changer leur extension ? A priori on arrive à charger le .tpl et faire quelques manips. Ou est ce que en mettant un csv, ce sera plus facile à gérer sous Pquery, toujours pour des questions de duplicata, Etc.
- Est ce que le traitement de query peut se faire automatiquement via macro ? En fonction des cas et des modèles, l'entête du fichier peut changer, tout comme le nombre de variables résultats. C'est pour cela que je faisais des recherches d'index "CATALOG" et que je cherchais la variable résultat "PT INLET PRESSURE (Pa) dans la macro d'origine. Est ce que tout cela est possible via Pquery
- Enfin, est ce que l'on peut gérer tout ça sous macro ? Cette macro est à la base un outil utilisé par une communauté au sein de ma boite. Certains ne sont pas du tout à l'aise avec de la programmation et de la gestion de données. Bref il faut un outil simple ou en cliquant sur un bouton, un macro fait tut le boulot à leur place.
Merci pour ton retour.
re
il faut mettre tes fichiers dans un unique répertoire (si tu les disperses, tu auras trop de travail à saisir leurs chemins, idem en VBA je pense ! )
teste :
ouvre Excel, ouvre Power Query, Obtenir et teste notamment les formats du genre html et autres formats bizarre, et aussi ytt et csv
il y a du boulot, car on peut ouvrir 100+ formats !
joins un de tes origiaux, je vais essayer de mon côté
je te déconseille VBA pour piloter PQuery ou PQuery pour piloter VBA (je ne sais pas si c'est possible)
tu veux simple, pour des débutants :
- faire une macro pour changer les extensions, ils n'auront qu'à lancer ta macro (si modif d'extension nécessaire)
- créer un Power BI Desktop gratuit, ils n'auront qu'à cliquer "actualiser)
amiités
Merci pour tes conseils.
Je vais regarder un peu ce que l'on pourrait faire et reviens vers toi pour te tenir informé de l'avancée ou si j'ai des questions.
Je viens de charger 10 fichiers résultats pour toi si tu veux essayer comme tu me le proposais.
En les zippant ca passe.
Dans ces fichiers résultats, les lignes qui m'intéressent sont celles sous "CATALOG". Le chiffre sous le catalogue indique le nombre de variable du fichier résultat.
Il y a deux variables résultats: PT et EVR.
Pour les résultats, ils sont sous forme colonne sous ces variables. Dans les fichiers joints:
Colonne 1: temps
Colonne 2: PT
Colonne 3: EVR
Ce que je cherche à récupérer: la pression en fonction du temps.
Merci pour ton aide et ton temps.
Bonjour à tous,
Problème résolu en s'inspirant de la proposition de jmd.
Voilà ce que j'ai mis en place:
- Copies des fichiers résultats dans une dossier temporaire en changeant en même temps leur extension en .csv
- Chargement des données en utilisant sous VBA le code .querytables.add dans la feuille excel avec indexation sur le nom
- Post-processing des résultats et mise en forme
- Fermeture de la liaison avec le fichier résultats
- On répète la boucle sur toute la liste des fichiers résultats
- Effacement du dossier temporaire
Avec ce nouveau algorithme, la macro a gagné en temps de calcul en plus: Traitement de 50000 cas en 1h alors qu'avant il fallait plus d'une journée.
Reste un dernier problème à régler: l'effacement du dossier temporaire.
Je parviens à effacer les fichiers à l'intérieur mais pas le dossier qui apparaît toujours dans la fenêtre window tout en étant plus accessible ...
Bonne journée.
Christophe.