Ouvrir un fichier csv dans une feuille de mon classeur actif

Gisamark

XLDnaute Junior
Ouvrir un fichier csv dans une feuille de mon classeur actif [RESOLU]

Bonjour les gens !

Je crois que mon titre dit tout. :p
J'ai donc un classeur (appelons-le... Classeur1 :D) à l'intérieur duquelle j'ai 4 feuilles. (feuil1, feuil2, feuil3, feuil4)
Sur la feuil2, j'ai un bouton qui sert à ouvrir uniquement des fichiers csv.
Et quand j'ouvre un csv, celui-ci apparait dans un nouveau classeur... :(
J'aimerais qu'il s'ouvre dans la feuil4, et je ne sais pas comment faire.

Merci de votre aide. :)
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Ouvrir un fichier csv dans une feuille de mon classeur actif

Bonjour Gisamark, le forum,
sans avoir ni ta macro ni ton fichier j'ai peur que ta solution ne soit pas facile à trouver
a+
pascal
PS : pour moi c'est ta macro qui génère un nouveau classeur mais?
 

tototiti2008

XLDnaute Barbatruc
Re : Ouvrir un fichier csv dans une feuille de mon classeur actif

Bonjour Gisamark, Bonjour Paritec,

l'utilisation de Workbooks.open ou Workbooks.OpenText génère toujours un nouveau classeur.
2 solutions s'offrent à toi :

1) copier les données du classeur ouvert pour les coller dans la feuille voulue (par macro évidement)

ou

2) enregistrer une macro en:
te plaçant dans la feuille de destination
Menu Données - Données Externes - Importer des données
...
 

Gisamark

XLDnaute Junior
Re : Ouvrir un fichier csv dans une feuille de mon classeur actif

Je fais un petit UP car mon problème n'est pas résolu, même si je sens que je touche au but... :D

J'ai donc suivi la deuxième idée de tototiti, à savoir passer par Données -> Données externes -> Importer des données.
J'ai enregistré la macro et je l'ai affectée à un bouton. Jusque là, ça fonctionne.
Voilà le code : (au début j'efface le contenu de la feuille "fantôme", car c'est dans cette feuille que je veux importer mon fichier csv)

Sheets("Fantôme").Cells.Clear
With Sheets("Fantôme").QueryTables.Add(Connection:= _
"TEXT; d:\Users\DEL1\Desktop\courant.csv" _
, Destination:=Sheets("Fantôme").Range("A1"))
.Name = "courant"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

Le problème, c'est que je veux que l'utilisateur choisisse le fichier à ouvrir, et pas que ce soit toujours courant.csv ;)
J'ai donc utilisé la fonction GetOpenFilename, et c'est là que mon code plante sans que je sache pourquoi.
Le code :


Dim QuelFichier
QuelFichier = Application.GetOpenFilename("Fichier csv, *.csv", , "Importer un fichier csv")

Sheets("Fantôme").Cells.Clear
With Sheets("Fantôme").QueryTables.Add(Connection:= _
"TEXT; QuelFichier" _
, Destination:=Sheets("Fantôme").Range("A1"))
.Name = "courant"
[...]
.Refresh BackgroundQuery:=False
End With


Vous voyez que j'ai simplement défini QuelFichier, puis l'utilisateur choisi le fichier, et enfin j'ai remplacé l'adresse d'avant (d:\Users\DEL1\Desktop\courant.csv) par QuelFichier.
L'erreur indiqué lors du debogage est :
"erreur d'execution 1004
Impossible de trouver le fichier texte pour l'actualisation de cette page de données externes.
Assurez-vous que le texte n'a été ni déplacé ni renommé puis réessayez."

Merci de votre aide. :)
 
Dernière édition:

Gisamark

XLDnaute Junior
Re : Ouvrir un fichier csv dans une feuille de mon classeur actif

Bon j'ai un peu honte mais j'ai trouvé le problème...
Il fallait écrire "TEXT;" & QuelFichier au lieu de "TEXT; QuelFichier" à l'intérieur du QueryTables.Add.
Bref, merci à tototiti et paritec.
En espérant que ça serve à d'autres. ;)
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Ouvrir un fichier csv dans une feuille de mon classeur actif

Bonjour à tous,

je fais juste remarquer que les données externes créent un lien avec le fichier CSV (que tu peux actualiser avec la barre d'outils Données externes).
Si tu veux qu'il n'y ait plus de lien, ajoute un

.Delete

juste après le

.Refresh
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 158
dernier inscrit
laufin