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

ouverture fichier csv

5 réponses
Avatar
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

5 réponses

Avatar
michdenis
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" @FNAC.NET> a écrit dans le message de groupe de discussion :
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
Avatar
Daniel.C
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


Avatar
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" a écrit dans le message de groupe de discussion :
#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


Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de discussion :
#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





Avatar
michdenis
| 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" a écrit dans le message de groupe de discussion :
#
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de discussion :
#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