Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1226 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro Excel import csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro Excel import csv

n°2239912
gunvill
Posté le 09-10-2014 à 19:07:36  profilanswer
 

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 :
  1. Sub Rectangle1_Cliquer()
  2.      Dim fStr As String
  3.     With Application.FileDialog(msoFileDialogFilePicker)
  4.         .Show
  5.         If .SelectedItems.Count = 0 Then
  6.             MsgBox "Cancel Selected"
  7.             Exit Sub
  8.         End If
  9.         'fStr is the file path and name of the file you selected.
  10.         fStr = .SelectedItems(1)
  11.     End With
  12.     With ThisWorkbook.Sheets("Data" ).QueryTables.Add(Connection:= _
  13.     "TEXT;" & fStr, Destination:=Range("$A$1" ))
  14.         .Name = "CAPTURE"
  15.         .FieldNames = True
  16.         .RowNumbers = False
  17.         .FillAdjacentFormulas = False
  18.         .PreserveFormatting = True
  19.         .RefreshOnFileOpen = False
  20.         .RefreshStyle = xlInsertDeleteCells
  21.         .SavePassword = False
  22.         .SaveData = True
  23.         .AdjustColumnWidth = True
  24.         .RefreshPeriod = 0
  25.         .TextFilePromptOnRefresh = False
  26.         .TextFilePlatform = 437
  27.         .TextFileStartRow = 1
  28.         .TextFileParseType = xlDelimited
  29.         .TextFileTextQualifier = xlTextQualifierDoubleQuote
  30.         .TextFileConsecutiveDelimiter = False
  31.         .TextFileTabDelimiter = True
  32.         .TextFileSemicolonDelimiter = False
  33.         .TextFileCommaDelimiter = True
  34.         .TextFileSpaceDelimiter = False
  35.         .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
  36.         .TextFileTrailingMinusNumbers = True
  37.         .Refresh BackgroundQuery:=False
  38.     End With
  39. 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
mood
Publicité
Posté le 09-10-2014 à 19:07:36  profilanswer
 

n°2239916
Marc L
Posté le 09-10-2014 à 19:57:07  profilanswer
 

 
           Bonjour, bonjour !
 
           Merci d'utiliser l'icône dédié pour baliser le code, cela fera moins mal aux yeux et c'est plus facile pour indiquer un numéro de ligne !
 
           Activer la feuille avant la QueryTable pour voir …
 
           Revoir la propriété  RefreshStyle   pour les colonnes.
           Sinon sur un nouveau classeur activer le Générateur de macros puis paramétrer la QueryTable
           en prenant soin de bien remplir son assistant : le code est livré sur un plateau !
 

n°2239919
gunvill
Posté le 09-10-2014 à 20:12:30  profilanswer
 

Merci pour votre réponse.
 
Désolé pour les balises dédiées au code, je ne les avais pas vu.
 
Je vais essayé de décrypter vos informations, cela semble certainement facile mais je suis débutant donc ça risque de me prendre du temps^^


Message édité par gunvill le 09-10-2014 à 20:42:43
n°2239923
gunvill
Posté le 09-10-2014 à 21:16:12  profilanswer
 

ça marche!
 
Voilà le code suite aux indications de Marc L:
 

Code :
  1. Sub Rectangle1_Cliquer()
  2.      Dim fStr As String
  3.     With Application.FileDialog(msoFileDialogFilePicker)
  4.         .Show
  5.         If .SelectedItems.Count = 0 Then
  6.             MsgBox "Cancel Selected"
  7.             Exit Sub
  8.         End If
  9.         'fStr is the file path and name of the file you selected.
  10.         fStr = .SelectedItems(1)
  11.     End With
  12. Worksheets("Data" ).Activate
  13.     With ThisWorkbook.Sheets("Data" ).QueryTables.Add(Connection:= _
  14.     "TEXT;" & fStr, Destination:=Range("$A$1" ))
  15.         .Name = "CAPTURE"
  16.         .FieldNames = True
  17.         .RowNumbers = False
  18.         .FillAdjacentFormulas = False
  19.         .PreserveFormatting = True
  20.         .RefreshOnFileOpen = False
  21.         .RefreshStyle = xlOverwriteCells
  22.         .SavePassword = False
  23.         .SaveData = False
  24.         .AdjustColumnWidth = True
  25.         .RefreshPeriod = 0
  26.         .TextFilePromptOnRefresh = False
  27.         .TextFilePlatform = 437
  28.         .TextFileStartRow = 1
  29.         .TextFileParseType = xlDelimited
  30.         .TextFileTextQualifier = xlTextQualifierDoubleQuote
  31.         .TextFileConsecutiveDelimiter = False
  32.         .TextFileTabDelimiter = True
  33.         .TextFileSemicolonDelimiter = False
  34.         .TextFileCommaDelimiter = True
  35.         .TextFileSpaceDelimiter = False
  36.         .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
  37.         .TextFileTrailingMinusNumbers = True
  38.         .Refresh BackgroundQuery:=False
  39.     End With
  40. End Sub


 
Merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro Excel import csv

 

Sujets relatifs
Codes pour les Boutons d'un formulaire sur Excel[Excel 2010] Formulaire de recherche multi-listbox
[Excel] Afficher un bouton sous condition : RésoluCharger une image ou fichier dans excel via macro
Excel : Résumé / Liste déroulanteProblème Macro excel 2007
imprimer plusieurs tickets base excelimport base oracle
problème macro import fichier text excel 
Plus de sujets relatifs à : macro Excel import csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR