ouverture fichier csv

Le
Laurent
Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition
automatique des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18553051
Lorsque tu travailles en vba, les paramètres sont ceux basés
sur ceux des "américains", et eux, le séparateur qu'il utilise
dans un fichier .csv est la virgule et non le point virgule.
Cependant quand tu ouvres un ficher .csv par l'intermédiaire
de la commande "Fichier / ouvrir" Excel tient compte des
paramètres régionaux définis dans le panneau de configuration
de Windows et ton fichier s'ouvre correctement.

Une solution possible :
Tu l'ouvres comme si c'était un fichier texte et la macro
ressemblerait à ceci

Selon le type de données contenues dans ton fichier texte
regarde ce qui est possible de définir comme paramètre avec
cette méthode : TextToColumns dans l'aide d'excel.
L'enregistreur de macro peut t'aider aussi ...!

'--------------------------------
Sub Ouvrir_Fichier_CSV_En_VBA()
Dim Wk As Workbook, Fichier As String
Fichier = Application.GetOpenFilename("Fichier texte,*.csv;*.txt")
If Fichier = False Then Exit Sub
Set Wk = Workbooks.Open(Fichier)
With Wk.Sheets(1)
.Columns(1).TextToColumns .Range("A1"), , , False, , True
End With
End Sub
'-----------------------------------


"Laurent" 4985eab0$0$28673$
Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition
automatique des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000
Daniel.C
Le #18553881
Bonsoir.
Suivant ta version, tu peux indiquer :
Workbooks.Open "c:tempfichier", local:=True
si le ";" est le séparateur décrit dans les paramètres régionaux
Windows.
Cordialement.
Daniel

Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition automatique
des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000


michdenis
Le #18553861
Et oui, à partir de la version excel 2002, on a
droit à ce paramètre en plus : Local

Workbooks.Open "c:tempfichier", LOCAL:=TRUE


"Daniel.C" #M#
Bonsoir.
Suivant ta version, tu peux indiquer :
Workbooks.Open "c:tempfichier", local:=True
si le ";" est le séparateur décrit dans les paramètres régionaux
Windows.
Cordialement.
Daniel

Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition automatique
des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000


milloche
Le #18558551
Bonjour
J'ai eu ce même problème avec un fichier bnp.exl qui est aussi un fichier texte,séparateur.
Pas de problème en ouverture manuelle ou avec clic sur l'icone mais pas par macro.
La première colonne (les dates) s'ouvrait moitié aligné à droite et moitié à gauche.
Sans rien y comprendre, c'est en bidouillant avec le 1er "Array" que j'ai mis au hazard à (1,4) au
lieu de (1,1) que d'un coup tout allait bien. Je ne peux vous expliquer le pourquoi de la chose,
mais ça marche.
Maintenant, par macro, j'ouvre ce bnp.exl, je copie les données qu'il me faut puis les colle là ou
je veux puis referme ce fichier en un éclair.
Si ça peut servir... (je travaille en V2000)
Voici la ligne de commande obtenue par l'enregistreur et modifiée ...à personnaliser le chemin.

ChDir "C:Documents and SettingsUSERBureau"
Application.Workbooks.OpenText Filename:="C:Documents and SettingsUSERBureaubnp.exl" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:úlse, FieldInfo:=Array(Array(1, 4) _
, Array(2, 1), Array(3, 1))

Cordialement
JMM

"michdenis"
Et oui, à partir de la version excel 2002, on a
droit à ce paramètre en plus : Local

Workbooks.Open "c:tempfichier", LOCAL:=TRUE


"Daniel.C" #M#
Bonsoir.
Suivant ta version, tu peux indiquer :
Workbooks.Open "c:tempfichier", local:=True
si le ";" est le séparateur décrit dans les paramètres régionaux
Windows.
Cordialement.
Daniel

Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition automatique
des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000





michdenis
Le #18559441
| Sans rien y comprendre, c'est en bidouillant avec le 1er "Array"

tu va voir dans l'aide VBA sous l'item "FieldInfo"
on va tout t'expliquer à propos de l'array :
Array(Array(1, 4) , Array(2, 1), Array(3, 1))
Le premier chiffre Array(1, 4) : le numéro du champ
le deuxième chiffre Array(1, 4) : le format du champ

En retenant dans le cas des dates, qu'en VBA, on a forcément
un format américain.




"milloche" #
Bonjour
J'ai eu ce même problème avec un fichier bnp.exl qui est aussi un fichier
texte,séparateur.
Pas de problème en ouverture manuelle ou avec clic sur l'icone mais pas par macro.
La première colonne (les dates) s'ouvrait moitié aligné à droite et moitié à gauche.
Sans rien y comprendre, c'est en bidouillant avec le 1er "Array" que j'ai mis au hazard à
(1,4) au
lieu de (1,1) que d'un coup tout allait bien. Je ne peux vous expliquer le pourquoi de la
chose,
mais ça marche.
Maintenant, par macro, j'ouvre ce bnp.exl, je copie les données qu'il me faut puis les
colle là ou
je veux puis referme ce fichier en un éclair.
Si ça peut servir... (je travaille en V2000)
Voici la ligne de commande obtenue par l'enregistreur et modifiée ...à personnaliser le
chemin.

ChDir "C:Documents and SettingsUSERBureau"
Application.Workbooks.OpenText Filename:="C:Documents and
SettingsUSERBureaubnp.exl" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse _
, Comma:úlse, Space:úlse, Other:úlse, FieldInfo:=Array(Array(1, 4) _
, Array(2, 1), Array(3, 1))

Cordialement
JMM

"michdenis"
Et oui, à partir de la version excel 2002, on a
droit à ce paramètre en plus : Local

Workbooks.Open "c:tempfichier", LOCAL:=TRUE


"Daniel.C" #M#
Bonsoir.
Suivant ta version, tu peux indiquer :
Workbooks.Open "c:tempfichier", local:=True
si le ";" est le séparateur décrit dans les paramètres régionaux
Windows.
Cordialement.
Daniel

Bonsoir,

lorsque j'ouvre un fichier csv avec séparateur ";"
Excel l'ouvre en repartissant correctement chaque champ séparé dans une
colonne distincte (j'espere avoir été clair;).

par contre, en passant par macro avec.GetOpenFilename, (je dois passer par
cette commande) le fichier s'ouvre
mais toutes les données sont affectées sur la premiere colonne (donc obligé
de passer par conversion etc..)
connaissez vous un moyen d'ouvrir ce fichier csv avec repartition automatique
des champs sur chaque colonne ?

merci d'avance

ps : Je suis sur excel 2000





Publicité
Poster une réponse
Anonyme