VBA - Problème de lecture du CSV
Bonjour,
Je me permets aujourd'hui de vous écrire car j'effectue actuellement un fichier me permettant d'analyser deux données provenant de deux sources différentes.
Pour cela, j'ai créé deux boutons qui me permettent d'aller chercher mes fichiers CSV, ils sont nommés IRL et SIM.
J'ai aucun problème pour aller chercher ma donnée IRL qui fonctionnent parfaitement bien. Mais j'ai toujours une erreur sur mon bouton SIM. Il s'avère que le code est le même, je l'ai juste adapté pour SIM car beaucoup plus de colonnes dans le CSV...
Est-ce qu'une personne fort sympathique pourrait vérifier mon code VBA ? Vous trouverez mes deux CSV ci-dessous ainsi que les deux codes des deux boutons :
IRL :
Sub IRLimportCSV()
Dim dialogbox As FileDialog
Dim selectedfile As String
Set dialogbox = Application.FileDialog(msoFileDialogFilePicker)
With dialogbox
.Filters.Add "CSV", "*.CSV", 1
.AllowMultiSelect = False
If .Show = True Then
selectedfile = .SelectedItems(1)
End If
Debug.Print selectedfile
End With
If selectedfile <> "" Then
Open selectedfile For Input As #1
Dim rownumber As Long
Dim linefromfile As String
Dim lineitems As Variant
Dim itteration As Integer
rownumber = 1
Do Until EOF(1)
Line Input #1, linefromfile
lineitems = Split(linefromfile, ";")
For itteration = 0 To 7
Range("IRLDataImport").Cells(rownumber, itteration + 1) = lineitems(itteration)
Next
rownumber = rownumber + 1
Loop
Close #1
End If
End SubSIM :
Sub SIMimportCSV()
Dim dialogbox As FileDialog
Dim selectedfile As String
Set dialogbox = Application.FileDialog(msoFileDialogFilePicker)
With dialogbox
.Filters.Add "CSV", "*.CSV", 1
.AllowMultiSelect = False
If .Show = True Then
selectedfile = .SelectedItems(1)
End If
Debug.Print selectedfile
End With
If selectedfile <> "" Then
Open selectedfile For Input As #2
Dim rownumber As Long
Dim linefromfile As String
Dim lineitems As Variant
Dim itteration As Integer
rownumber = 1
Do Until EOF(2)
Line Input #2, linefromfile
lineitems = Split(linefromfile, ";")
For itteration = 0 To 170
Range("SIMDataImport").Cells(rownumber, itteration + 1) = lineitems(itteration)
Next
rownumber = rownumber + 1
Loop
Close #2
End If
End SubEn vous remerciant!...
Bonjour à tous !
Et....
Si VBA n'est pas une obligation indépassable, une proposition via Power Query (une ligne de code pour le chargement....) :
Note : Pour alléger le fichier je n'ai conservé que les 1000 premières lignes du fichier Irl.csv (la ligne de commande devra être supprimée.)
bonjour, pour la même boulette ...
Sub IRLimportCSV()
Dim dialogbox As FileDialog
Dim selectedfile As String
Set dialogbox = Application.FileDialog(msoFileDialogFilePicker)
With dialogbox
.Filters.Add "CSV", "*.CSV", 1
.AllowMultiSelect = False
If .Show = True Then
selectedfile = .SelectedItems(1)
End If
Debug.Print selectedfile
End With
If selectedfile <> "" Then
Open selectedfile For Input As #1
mydata = Input$(LOF(1), 1)
Close #1
strdata = Split(mydata, vbCrLf)
For i = 0 To UBound(strdata)
If Len(strdata(i)) Then
sp = Split(strdata(i), ";")
'Range("IRLDataImport").Cells(i + 1, 1).Resize(, UBound(sp) + 1).Value = sp 'soit complètement
Range("IRLDataImport").Cells(i + 1, 1).Resize(, Application.Min(8, UBound(sp) + 1)).Value = sp 'soit seulement 8 colonnes
End If
Next
End If
End SubMerci à tous pour vos réponses, le souci venait que j'avais mal configuré le nombre de colonne !
Merci à vous tous
