Bonjour à tous,
Je cherche à faire une macro qui suite à l'appui sur un bouton permet de choisir un fichier csv et d'en importer les données dans un onglet "Data".
Je précise que je suis un complet novice en VB...
J'utilise le code suivant :
Code :
- Sub Rectangle1_Cliquer()
- Dim fStr As String
- With Application.FileDialog(msoFileDialogFilePicker)
- .Show
- If .SelectedItems.Count = 0 Then
- MsgBox "Cancel Selected"
- Exit Sub
- End If
- 'fStr is the file path and name of the file you selected.
- fStr = .SelectedItems(1)
- End With
- With ThisWorkbook.Sheets("Data" ).QueryTables.Add(Connection:= _
- "TEXT;" & fStr, Destination:=Range("$A$1" ))
- .Name = "CAPTURE"
- .FieldNames = True
- .RowNumbers = False
- .FillAdjacentFormulas = False
- .PreserveFormatting = True
- .RefreshOnFileOpen = False
- .RefreshStyle = xlInsertDeleteCells
- .SavePassword = False
- .SaveData = True
- .AdjustColumnWidth = True
- .RefreshPeriod = 0
- .TextFilePromptOnRefresh = False
- .TextFilePlatform = 437
- .TextFileStartRow = 1
- .TextFileParseType = xlDelimited
- .TextFileTextQualifier = xlTextQualifierDoubleQuote
- .TextFileConsecutiveDelimiter = False
- .TextFileTabDelimiter = True
- .TextFileSemicolonDelimiter = False
- .TextFileCommaDelimiter = True
- .TextFileSpaceDelimiter = False
- .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
- .TextFileTrailingMinusNumbers = True
- .Refresh BackgroundQuery:=False
- End With
- End Sub
|
Cela marche plus ou moins. J'ai principalement 2 problèmes :
- l'importation ne marche que si le bouton se situe dans l'onglet "Data" où je souhaite coller les informations du CSV. Comment faire pour qu'il n'y ait pas de relation entre l'onglet comportant le bouton et l'onglet où je souhaite coller les infos?
- le collage des infos du CSV crée de nouvelles colonnes et décale les anciennes. Comment faire pour qu'il les remplace? Je suppose que cela vient du add de QueryTables.Add mais par quoi le remplacer?
Merci pour votre aide!
Message édité par gunvill le 09-10-2014 à 20:08:50