Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb importation fichier .csv avec VBA

5 réponses
Avatar
JMarc LeNormand
Bonjour,

J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:\.....\ficstock.csv"

Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.

En attendant, sur excel 2003, j'ouvre le fichier csv, le réenregistre en
format .xls, puis lance la macro avec Workbooks.Open Filename:= _
"C:\.....\ficstock.xls"
C'est Ok, mais si l'on oublie cette manip, on récupère l'ancienne version
des stocks avec tous les inconvénients....

Y a t-il un paramètre à ajouter, ou bien faut-il passer par Opentext, ou
bien...

Merci d'avance de vos conseils toujours éclairés et pertinents.

JMarc

5 réponses

Avatar
michdenis
Bonjour JMarc,

Essaie ceci :

Pour ta version Excel 2003 : Je suppose que le séparateur est le point-virgule ...

Workbooks.Open Filename:="c:Monfichier.csv", Local:=True

Si tu vas voir dans l'aide, il y a plusieurs paramètres non définis ici pour la méthode "Open" de l'objet Workbooks.

Reviens si pépins !


Salutations!







"JMarc LeNormand" a écrit dans le message de news: 4306f377$0$22299$
Bonjour,

J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:.....ficstock.csv"

Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.

En attendant, sur excel 2003, j'ouvre le fichier csv, le réenregistre en
format .xls, puis lance la macro avec Workbooks.Open Filename:= _
"C:.....ficstock.xls"
C'est Ok, mais si l'on oublie cette manip, on récupère l'ancienne version
des stocks avec tous les inconvénients....

Y a t-il un paramètre à ajouter, ou bien faut-il passer par Opentext, ou
bien...

Merci d'avance de vos conseils toujours éclairés et pertinents.

JMarc
Avatar
JMarc LeNormand
Bonjour Denis,
Merci pour ta réponse :
Local:=True m'a été refusé, mais j'ai mis Format:=4 (= point virgule) et
cela marche ! :-))
J'ai réessayé cette version sur excel 2000, et elle a été acceptée : ouf!

Car si on écrit du VBA sur 2003 pour tourner aussi sur 2000 ou 97, on a
souvent des plantages avec "arguments en trop ou inconnus".
Donc j'essaye d'écrire directement sur 2000 pour éviter cela.
Peut-on tester la version d'Excel et pouvoir ainsi avoir une ligne de code
différente pour chaque version?

Salutations et encore merci.

JMarc
"michdenis" a écrit dans le message de news:

Bonjour JMarc,

Essaie ceci :

Pour ta version Excel 2003 : Je suppose que le séparateur est le
point-virgule ...

Workbooks.Open Filename:="c:Monfichier.csv", Local:=True

Si tu vas voir dans l'aide, il y a plusieurs paramètres non définis ici
pour la méthode "Open" de l'objet Workbooks.

Reviens si pépins !


Salutations!







"JMarc LeNormand" a écrit dans le message
de news: 4306f377$0$22299$
Bonjour,

J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:.....ficstock.csv"

Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.

En attendant, sur excel 2003, j'ouvre le fichier csv, le réenregistre en
format .xls, puis lance la macro avec Workbooks.Open Filename:= _
"C:.....ficstock.xls"
C'est Ok, mais si l'on oublie cette manip, on récupère l'ancienne version
des stocks avec tous les inconvénients....

Y a t-il un paramètre à ajouter, ou bien faut-il passer par Opentext, ou
bien...

Merci d'avance de vos conseils toujours éclairés et pertinents.

JMarc





Avatar
michdenis
Bonjour JMarc,

Il y a ceci qui doit fonctionner avec toutes les versions d'excel :

Regarde dans l'aide la méthode "TextToColumns", ses arguments sont nombreux et susceptibles de s'adapter à différente situation.

Dans la solution retenue : DecimalSeparator:="." , ce n'est pas toujours le cas, il faut adapter selon son environnement.


'------------------------------
Sub Exemple()
Dim Fichier As String
Fichier = "c:test.csv"
OuvrirFichier Fichier
End Sub
'------------------------------
Sub OuvrirFichier(NomFichier As String)
Dim Wk As Workbook
Set Wk = Workbooks.Open(NomFichier)
Wk.Sheets(1).Columns(1).TextToColumns _
Range("A1"), , , False, , True, , _
DecimalSeparator:="."
Set Wk = Nothing
End Sub
'------------------------------


Salutations!



"JMarc LeNormand" a écrit dans le message de news: 43083878$0$22277$
Bonjour Denis,
Merci pour ta réponse :
Local:=True m'a été refusé, mais j'ai mis Format:=4 (= point virgule) et
cela marche ! :-))
J'ai réessayé cette version sur excel 2000, et elle a été acceptée : ouf!

Car si on écrit du VBA sur 2003 pour tourner aussi sur 2000 ou 97, on a
souvent des plantages avec "arguments en trop ou inconnus".
Donc j'essaye d'écrire directement sur 2000 pour éviter cela.
Peut-on tester la version d'Excel et pouvoir ainsi avoir une ligne de code
différente pour chaque version?

Salutations et encore merci.

JMarc
"michdenis" a écrit dans le message de news:

Bonjour JMarc,

Essaie ceci :

Pour ta version Excel 2003 : Je suppose que le séparateur est le
point-virgule ...

Workbooks.Open Filename:="c:Monfichier.csv", Local:=True

Si tu vas voir dans l'aide, il y a plusieurs paramètres non définis ici
pour la méthode "Open" de l'objet Workbooks.

Reviens si pépins !


Salutations!







"JMarc LeNormand" a écrit dans le message
de news: 4306f377$0$22299$
Bonjour,

J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:.....ficstock.csv"

Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.

En attendant, sur excel 2003, j'ouvre le fichier csv, le réenregistre en
format .xls, puis lance la macro avec Workbooks.Open Filename:= _
"C:.....ficstock.xls"
C'est Ok, mais si l'on oublie cette manip, on récupère l'ancienne version
des stocks avec tous les inconvénients....

Y a t-il un paramètre à ajouter, ou bien faut-il passer par Opentext, ou
bien...

Merci d'avance de vos conseils toujours éclairés et pertinents.

JMarc





Avatar
ClémentMarcotte
Bonjour,

Tu peux aussi regarder cela:

http://groups.google.com/group/microsoft.public.fr.excel/msg/1007759e1d215822?q=readline+excel+97+split+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&scoring=d&rnum=1

La version sans split() devrait marcher sur toutes les versions d'Excel
depuis Excel 1997 et l'autre sur toutes les versions depuis Excel 2000


"JMarc LeNormand" a écrit dans le message
de news:4306f377$0$22299$
Bonjour,

J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:.....ficstock.csv"

Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.

En attendant, sur excel 2003, j'ouvre le fichier csv, le réenregistre en
format .xls, puis lance la macro avec Workbooks.Open Filename:= _
"C:.....ficstock.xls"
C'est Ok, mais si l'on oublie cette manip, on récupère l'ancienne version
des stocks avec tous les inconvénients....

Y a t-il un paramètre à ajouter, ou bien faut-il passer par Opentext, ou
bien...

Merci d'avance de vos conseils toujours éclairés et pertinents.

JMarc




Avatar
JMarc LeNormand
Bonsoir,
Merci Denis, merci Clément

J'ai mis en place la version de Denis; c'est Ok sur 2000, et la teste demain
(...ce matin) sur Excel 2003.
Si je ne reposte rien d'ici 24h, c'est que c'est Ok aussi sur 2003.

Merci à vous deux et à tous ceux qui nous aident à progresser pour mieux
utiliser ce logiciel
Slts
J Marc

"michdenis" a écrit dans le message de news:

Bonjour JMarc,
Il y a ceci qui doit fonctionner avec toutes les versions d'excel :
Regarde dans l'aide la méthode "TextToColumns", ses arguments sont
nombreux et susceptibles de s'adapter à différente situation.

Dans la solution retenue : DecimalSeparator:="." , ce n'est pas toujours
le cas, il faut adapter selon son environnement.
'------------------------------
Sub Exemple()
Dim Fichier As String
Fichier = "c:test.csv"
OuvrirFichier Fichier
End Sub
'------------------------------
Sub OuvrirFichier(NomFichier As String)
Dim Wk As Workbook
Set Wk = Workbooks.Open(NomFichier)
Wk.Sheets(1).Columns(1).TextToColumns _
Range("A1"), , , False, , True, , _
DecimalSeparator:="."
Set Wk = Nothing
End Sub
'------------------------------

Salutations!



"JMarc LeNormand" a écrit dans le message
de news: 43083878$0$22277$
Bonjour Denis,
Merci pour ta réponse :
Local:=True m'a été refusé, mais j'ai mis Format:=4 (= point virgule) et
cela marche ! :-))
J'ai réessayé cette version sur excel 2000, et elle a été acceptée : ouf!

Car si on écrit du VBA sur 2003 pour tourner aussi sur 2000 ou 97, on a
souvent des plantages avec "arguments en trop ou inconnus".
Donc j'essaye d'écrire directement sur 2000 pour éviter cela.
Peut-on tester la version d'Excel et pouvoir ainsi avoir une ligne de code
différente pour chaque version?

Salutations et encore merci.

JMarc
"michdenis" a écrit dans le message de news:

Bonjour JMarc,

Essaie ceci :

Pour ta version Excel 2003 : Je suppose que le séparateur est le
point-virgule ...

Workbooks.Open Filename:="c:Monfichier.csv", Local:=True

Si tu vas voir dans l'aide, il y a plusieurs paramètres non définis ici
pour la méthode "Open" de l'objet Workbooks.

Reviens si pépins !

Salutations!
"JMarc LeNormand" a écrit dans le
message
de news: 4306f377$0$22299$
Bonjour,
J'ai un souci pour importer des données.
Je dois charger un fichier en format .csv.
Lorsque je l'ouvre sous excel, pas de pb
Si je fais macro enregistrer, j'obtiens le code suivant :

Workbooks.Open Filename:= _
"C:.....ficstock.csv"
Lorsque j'éxécute sur mon pc sous excel 2000, c'est Ok
Mais lorsque je l'installe sur un autre pc sous excel 2003, toutes les
données se mettent sur une seule colonne !!!.
(...) JMarc