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
|
Sub Test()
Dim Fichier As String
Dim Ligne As String
Dim Tbl()
Dim I As Long
Dim NbCol
Const Sep As String = ";"
'permet le choix d'un fichier csv seulement...
With Application.FileDialog(msoFileDialogFilePicker)
.Filters.Add "Fichiers csv", "*.csv", 1
.Show
'si choix effectué
If .SelectedItems.Count = 1 Then
Fichier = .SelectedItems(1)
'si pas de choix, fin !
Else
MsgBox "Aucun fichier '.csv' choisi, fin de procédure !"
Exit Sub
End If
End With
'ouvre le fichier pour compter le nombre de colonnes...
Open Fichier For Input As #1
Line Input #1, Ligne
'demande le numéro de la colonne à importer
NbCol = InputBox("Le fichier '" & Dir(Fichier) & "' contient " & UBound(Split(Ligne, Sep)) + 1 & " colonne(s) !" & vbCrLf & _
"quel est le numéro de la colonne à importer ?", _
"Choix colonne.", 1)
'referme le fichier...
Close #1
'si non numérique, fin !
If Not IsNumeric(NbCol) Then
MsgBox "Seulement numérique !"
Exit Sub
End If
'puis le réouvre afin de revenir au début !
Open Fichier For Input As #1
'parcour le fichier
Do While Not EOF(1)
'récup de chaque ligne
Line Input #1, Ligne
'suppression d'éventuels espaces
Ligne = Replace(Ligne, """", "")
'seulement si une valeur existe
If Split(Ligne, Sep)(NbCol - 1) <> "" Then
'stocke dans un tableau seulement les valeurs contenues dans la colonne choisie
I = I + 1
ReDim Preserve Tbl(1 To I)
Tbl(I) = Split(Ligne, Sep)(NbCol - 1)
End If
Loop
'fermeture
Close #1
'résultat en colonne A de la feuille active
ActiveSheet.Range(Cells(1, 1), Cells(UBound(Tbl), 1)) = Application.Transpose(Tbl)
End Sub |
Partager