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

Problème VBA et *.csv

7 réponses
Avatar
Jocarno
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno

7 réponses

Avatar
Ardus Petus
Sub test()
Dim NomFichierLong As String
NomFichierLong = Application.GetOpenFilename( _
"Fichiers CSV (*.csv), *.csv")
If NomFichierLong = False Then Exit Sub
Workbooks.OpenText Filename:=NomFichierLong
End Sub

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve
dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno


Avatar
Jocarno
Merci pour la réponse.
Je viens de la tester.
Le résultat est le même.
Quatre champ dans la première colonne, trois dans le deuxième, trois dans le
troisième.
Par ailleurs, l'instruction [If NomFichierLong = False Then Exit Sub] génère
une erreur d'exécution (erreur n°13).

Ma version d'excel est celle de 2002 pour le cas où il y aurait un rapport.



Sub test()
Dim NomFichierLong As String
NomFichierLong = Application.GetOpenFilename( _
"Fichiers CSV (*.csv), *.csv")
If NomFichierLong = False Then Exit Sub
Workbooks.OpenText Filename:=NomFichierLong
End Sub

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve
dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno







Avatar
Ardus Petus
Pour l'erreur 13:
Dim NomFichierLong As Variant

Pour ton problème, je ne vois pas...

Il y a quoi comme séparateurs dans le fichier .csv?

Peux-tu poster un exemple pariel de ton fichier .csv?

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Merci pour la réponse.
Je viens de la tester.
Le résultat est le même.
Quatre champ dans la première colonne, trois dans le deuxième, trois dans
le
troisième.
Par ailleurs, l'instruction [If NomFichierLong = False Then Exit Sub]
génère
une erreur d'exécution (erreur n°13).

Ma version d'excel est celle de 2002 pour le cas où il y aurait un
rapport.



Sub test()
Dim NomFichierLong As String
NomFichierLong = Application.GetOpenFilename( _
"Fichiers CSV (*.csv), *.csv")
If NomFichierLong = False Then Exit Sub
Workbooks.OpenText Filename:=NomFichierLong
End Sub

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction
d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve
dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une
seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno









Avatar
Jocarno
Bonsoir, et merci pour le variant.

Le séparateur utilisé est le point virgule.

Pour le post partiel du fichier, je séche.
Comment faut-il s'y prendre ?
Merci.


Pour l'erreur 13:
Dim NomFichierLong As Variant

Pour ton problème, je ne vois pas...

Il y a quoi comme séparateurs dans le fichier .csv?

Peux-tu poster un exemple pariel de ton fichier .csv?

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Merci pour la réponse.
Je viens de la tester.
Le résultat est le même.
Quatre champ dans la première colonne, trois dans le deuxième, trois dans
le
troisième.
Par ailleurs, l'instruction [If NomFichierLong = False Then Exit Sub]
génère
une erreur d'exécution (erreur n°13).

Ma version d'excel est celle de 2002 pour le cas où il y aurait un
rapport.



Sub test()
Dim NomFichierLong As String
NomFichierLong = Application.GetOpenFilename( _
"Fichiers CSV (*.csv), *.csv")
If NomFichierLong = False Then Exit Sub
Workbooks.OpenText Filename:=NomFichierLong
End Sub

Cordialement,
--
AP

"Jocarno" a écrit dans le message de
news:
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction
d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve
dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une
seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno














Avatar
papou
Bonjour
Utilise la méthode workbooks.OpenText
Tu pourras ainsi spécifier le delimiteur de texte

Cordialement
Pascal

Jocarno a couché sur son écran :
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno


Avatar
Jocarno
Bonsoir.
Dans ce cas précis, le délimiteur étant le point-virgule, quelle doit être
la syntaxe à utiliser avec workbooks.OpenText
Je ne dispose pas d'aide sur cette fonction.
D'avance merci
Cordialement, Jocarno


Bonjour
Utilise la méthode workbooks.OpenText
Tu pourras ainsi spécifier le delimiteur de texte

Cordialement
Pascal

Jocarno a couché sur son écran :
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve dans
une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno







Avatar
papou
Je te conseillerai d'utiliser l'enregistreur de macro pour importer ton
fichier de façon à récupérer la bonne syntaxe.
Mais sinon ,
Voici l'aide sur la méthode :
OpenText, méthode
Voir aussiS'applique àExempleDétailsCette méthode ouvre et redistribue
un fichier texte sous la forme d'un nouveau classeur ne comportant
qu'une seule feuille dans laquelle se trouvent les données du fichier
texte distribuées.

expression.OpenText(FileName, Origin, StartRow, DataType,
TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space,
Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator,
ThousandsSeparator, TrailingMinusNumbers, Local)
expression Obligatoire. Expression qui renvoie un des objets
répertoriés dans la liste S'applique à.

FileName Argument de type String obligatoire. Indique le nom du
fichier texte à ouvrir et à distribuer.

Origin Argument de type Variant facultatif. Indique l'origine du
fichier texte. Il peut s'agir de l'une des constantes XlPlatform
suivantes : xlMacintosh, xlWindows ou xlMSDOS. Il pourrait aussi s'agir
d'un entier représentant le numéro de page de code du page de code
souhaité. Par exemple, « 1256 » attribue au fichier texte source le
codage Arabe (Windows). Si vous ne spécifiez pas cet argument, la
méthode utilise les paramètres en cours de l'option File Origin dans le
Text Import Wizard.

StartRow Argument de type Variant facultatif. Numéro de la ligne à
laquelle commencer la distribution du texte. La valeur par défaut est
1.

DataType Argument de type Variant facultatif. Indique le format de
la colonne des données dans le fichier. Il peut s'agir de l'une des
constantes XlTextParsingType suivantes : xlDelimited ou xlFixedWidth.
Si vous ne spécifiez pas cet argument, Microsoft Excel tente de
déterminer le format de colonne à l'ouverture du fichier.

TextQualifier Argument XlTextQualifier facultatif. Spécifie le
qualificateur de texte.

XlTextQualifier peut être l'une de ces constantes XlTextQualifier.
xlTextQualifierDoubleQuote par défaut
xlTextQualifierNone
xlTextQualifierSingleQuote

ConsecutiveDelimiter Argument de type Variant facultatif.
Affectez-lui la valeur True pour que plusieurs séparateurs consécutifs
soient considérés comme un seul séparateur. La valeur par défaut est
False.

Tab Argument de type Variant facultatif. Affectez-lui la valeur
True pour que le séparateur soit le caractère de tabulation (DataType
doit avoir la valeur xlDelimited). La valeur par défaut est False.

Semicolon Argument de type Variant facultatif. Affectez-lui la
valeur True pour que le séparateur soit le caractère deux-points
(DataType doit avoir la valeur xlDelimited). La valeur par défaut est
False.

Comma Argument de type Variant facultatif. Affectez-lui la valeur
True pour que le séparateur soit la virgule (DataType doit avoir la
valeur xlDelimited). La valeur par défaut est False.

Space Argument de type Variant facultatif. Affectez-lui la valeur
True pour que le séparateur soit un espace (DataType doit avoir la
valeur xlDelimited). La valeur par défaut est False.

Other Argument de type Variant facultatif. Affectez-lui la valeur
True pour que le séparateur soit le caractère spécifié par l'argument
OtherChar (DataType doit avoir la valeur xlDelimited). La valeur par
défaut est False.

OtherChar Argument de type Variant facultatif (obligatoire si Other
a la valeur True). Indique le caractère séparateur lorsque l'argument
Other a la valeur True. Si plusieurs caractères sont spécifiés, seul le
premier caractère de la chaîne est utilisé ; les autres caractères sont
ignorés.

FieldInfo Argument xlColumnDataType facultatif. Tableau contenant
des informations de distribution pour des colonnes de données
individuelles. L'interprétation dépend de la valeur de DataType.
Lorsque les données sont séparées, cet argument est un tableau de
tableaux à deux éléments, qui indiquent les options de conversion pour
une colonne particulière. Le premier élément est le numéro de la
colonne (base 1) et le deuxième élément est l'une des constantes
XlColumnDataType indiquant comment la colonne est distribuée.

XlColumnDataType peut être l'une de ces constantes XlColumnDataType.
xlGeneralFormat Général
xlTextFormat Texte
xlMDYFormat Format de date Mois-Jour-Année

xlDMYFormat Format de date Jour-Mois-Année

xlYMDFormat Format de date Année-Mois-Jour

xlMYDFormat Format de date Mois-Année-Jour

xlDYMFormat Format de date Jour-Année-Mois

xlYDMFormat Format de date Année-Jour-Mois

xlEMDFormat Date EMD

xlSkipColumn Non distribuée


Vous pouvez utiliser la constante xlEMDFormat uniquement si vous avez
installé et sélectionné la prise en charge du chinois (Taïwan). La
constante xlEMDFormat spécifie que les dates d'ères chinoises (Taïwan)
sont utilisées.

L'ordre des éléments de colonne peut être quelconque. S'il manque un
élément pour une colonne donnée dans les données d'entrée, la colonne
est redistribuée sur la base du paramètre Standard.

Remarques

Si vous spécifiez qu'une colonne doit être passée, vous devez déclarer
de manière explicite le type de toutes les autres colonnes, sinon les
données ne seront pas redistribuées correctement.
Si les données contiennent une date reconnaissable, la cellule sera
mise en forme comme une date dans la feuille de calcul même si le
paramètre défini pour la colonne est General. De plus, si vous
spécifiez un des formats de date susmentionnés pour une colonne et que
les données de celle-ci ne contiennent aucune date reconnue, le format
de cellule dans la feuille de calcul sera défini sur General.
L'exemple suivant montre comment redistribuer la troisième colonne sous
le format MJA (par exemple 01/10/1970), comment redistribuer la
première colonne sous la forme de texte et les autres colonnes de
données sources sur la base du paramètre Standard.

Array(Array(3, 3), Array(1, 2))

Si les données sources possèdent des colonnes de largeur fixe, le
premier élément de chaque tableau à deux éléments spécifie la position
du premier caractère dans la colonne (sous la forme d'un nombre entier,
le caractère zéro étant le premier caractère). Le deuxième élément du
tableau à deux éléments spécifie l'option de redistribution pour la
colonne sous la forme d'un nombre compris entre 0 et 9, comme indiqué
dans le tableau précédent.

TextVisualLayout Argument de type Variant facultatif. Mise en page
visuelle du texte.

DecimalSeparator Argument de type Variant facultatif. Séparateur
décimal que Microsoft Excel utilise lorsqu'il reconnaît des nombres.
Les paramètres par défaut sont les paramètres système.

ThousandsSeparator Argument de type Variant facultatif. Séparateur
de milliers qu'Excel utilise lorsqu'il reconnaît des nombres. Les
paramètres par défaut sont les paramètres système.

Le tableau suivant contient les résultats de l'importation de texte
dans Excel pour divers paramètres d'importation. Les résultats
numériques sont affichés dans la colonne la plus à droite.

Séparateur décimal du système Séparateur des milliers du système Valeur
de séparateur décimal Valeur de séparateur des milliers Texte importé
Valeur de la cellule (type de données)
Point Virgule Virgule Point 123.123,45 123,123.45 (numérique)
Point Virgule Virgule Virgule 123.123,45 123.123,45 (texte)
Virgule Point Point Virgule 123.123,45 123,123.45 (numérique)
Point Virgule Point Virgule 123.123,45 123 123.45 (texte)
Point Virgule Point Espace 123.123,45 123,123.45 (numérique)

TrailingMinusNumbers Argument de type Variant facultatif.

Local Argument de type Variant facultatif.

Exemple
Cet exemple montre comment ouvrir le fichier Data.txt et utiliser les
tabulations comme séparateurs pour redistribuer ce fichier texte dans
une feuille de calcul.

Workbooks.OpenText filename:="DATA.TXT", _
dataType:=xlDelimited, tab:=True


Il se trouve que Jocarno a formulé :
Bonsoir.
Dans ce cas précis, le délimiteur étant le point-virgule, quelle doit être
la syntaxe à utiliser avec workbooks.OpenText
Je ne dispose pas d'aide sur cette fonction.
D'avance merci
Cordialement, Jocarno


Bonjour
Utilise la méthode workbooks.OpenText
Tu pourras ainsi spécifier le delimiteur de texte

Cordialement
Pascal

Jocarno a couché sur son écran :
Bonsoir.
J'importe un fichier temp.csv qui est le résultat d'une extraction d'une
base centrale.
L'extraction ne donne le choix que d'un *.csv.

Quand j'ouvre ce fichier directement sous Excel, chaque champ se trouve
dans une colonne.
Quand je l'ouvre depuis VBA, plusieurs champs sont regroupés sur une seule
colonne.
Le code est le suivant :
NomFichierLong = Application.GetOpenFilename("Fichiers office,
*.xls;*.csv")
Workbooks.Open Filename:=NomFichierLong

Où se loge l'erreur ? Je ne vois vraiment pas.
D'avance, merci.
Jocarno