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
| Sub testU()
Dim MyCsv, Chemin, montablo, colonnes, Rng As Range ' variables utiles
Chemin = "C:\Users\polux\DeskTop\toto.csv" ' url du csv
Application.ScreenUpdating = False ' raffraichissement ecran inhibé
Set MyCsv = Workbooks.Open(Chemin, local:=True) 'ouverture du CSV
Set Rng = ActiveWorkbook.Sheets(1).UsedRange ' on determine la plage complete du CSV
colonnes = Array(3, 7, 9, 10) ' les colonne que l'on veut
Set maplage = CreateRangeWithUnionRangeNonContigue(colonnes) 'on créé une plage non contigue avec la fonction
maplage.Copy Destination:=ThisWorkbook.Sheets(1).Cells(1) ' on copy destination tout simplement
MyCsv.Close ' on peut fermer le csv
With ActiveSheet:
.Cells(1, 1).Resize(.UsedRange.Rows.Count, UBound(colonnes) + 1).Columns.AutoFit ' autsize des colonnes utilisé par le tableau
End With
End Sub
'fonction pour créer un range avec l'union de rangeS non contigues
'
'
Function CreateRangeWithUnionRangeNonContigue(colonnes) As Range
Dim p As Range
With ActiveSheet
For i = LBound(colonnes) To UBound(colonnes) ' union de plage colonnes dans "p"
If p Is Nothing Then Set p = .Cells(1, colonnes(i)).Resize(.UsedRange.Rows.Count, 1) Else Set p = Union(p, .Cells(1, colonnes(i)).Resize(.UsedRange.Rows.Count, 1))
Next
End With
Set CreateRangeWithUnionRangeNonContigue = p
End Function |
Partager