Bonjour,
Je cherche à importer une série de données depuis un fichier .CSV délimité par des virgules.
Voici les différentes étapes :
-
sélectionner un fichier .csv délimité par des virgules
-
a partir de la ligne « Hist.SCADA1.GRADRMEA1.F_CV,« Gradient composition measured Line 1 »,100,0 » (ligne 222 sur le fichier csv d’exemple) : rechercher le dernier 0 avant la première valeur positive (ligne 225)
-
copier à partir de ce 0 inclus, les 210 valeurs suivantes (211 valeurs en tout) donc dans mon fichier exemple cela concerne les lignes 225 à 435
-
les coller dans le tableau « tb_mesures_step » (situé ici : =‹ Step - Data ›!$B$2:$B$212)
Merci d’avance pour votre aide!
Ci joint le fichier de calcul et le fichier csv pour exemple.
fichiers-de-calcul.xlsm (479,0 Ko)
step-exemple.csv (46,5 Ko)
Et voici ce que j’ai pu faire, mais ça ne marche pas…
Sub ImportData()
Dim fileToOpen As Variant
Dim fileFilterPattern As String
Dim wbTextImport As Workbook
Dim tbData()
Dim startRow As Long
fileFilterPattern = "Text Files (*.txt; *.csv),*.txt;*.csv"
fileToOpen = Application.GetOpenFilename(fileFilterPattern)
If fileToOpen = False Then
MsgBox "No file selected."
Exit Sub
End If
Workbooks.OpenText _
fileName:=fileToOpen, _
StartRow:=2, _
DataType:=xlDelimited, _
Other:=True, _
semicolon:=True
Set wbTextImport = ActiveWorkbook
' Trouve la ligne de départ pour les données
With wbTextImport.Sheets(1)
startRow = .Cells.Find("Hist.SCADA1.GRADRMEA1.F_CV,""Gradient composition measured Line 1"",100,0").Row + 3
End With
' Charge les données en mémoire
tbData = wbTextImport.Sheets(1).Range("B" & startRow & ":B" & startRow + 210).Value2
' Ferme le fichier d'import
wbTextImport.Close False
' Écrit les données dans le tableau "tb_mesures_step"
With ThisWorkbook.Sheets("Step - Data")
.Range("B2:B212").Value = tbData
End With
MsgBox "Data import successful."
End Sub