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

problème de conversion de date en fichier texte prn

6 réponses
Avatar
Fabrice
Bonjour à tous,

Sous Excel 2000, j'essaie via le code vba d'enregistrer une feuille de
calcul au format texte prn (Fichier / Enregistrer sous / Type de données
Texte séparateur espace *.prn). Ca marche bien si je le fais manuellement,
mais si je l'exécute cette conversion via du code vba, la colonne contenant
une date affiche des #######.Je crois avoir cerné le problème :

Si j'enregistre manuellement avec Fichier / Enregistrer sous, Excel me garde
le format date jj/mm/aa, mais si je le fais via le code vba suivant :

fileSaveName = Application.GetSaveAsFilename(fileFilter:="Text Files
(*.txt), *.txt")
ActiveWorkbook.SaveAs fileSaveName, FileFormat:=xlTextPrinter

il me convertit la date au format jj/mm/aaaa (même qu'à l'écran elle est
affichée au format jj.mm.aa) et il n'a plus de place pour l'afficher, alors
il m'affiche des dièses dans mon fichier texte prn.

Est-ce que quelqu'un à une idée pour lui forcer à prendre le format
jj/mm/aa, lorsque j'enregistre le classeur au format texte prn via le code
vba.

Merci de votre précieuse aide
Fabrice

6 réponses

Avatar
Laurent M
Salut Fabrice,

La méthode SaveAs comporte un paramètre facultatif fort à propos qui
résoud des problèmes comme le tien. Il s'agit du paramèter 'Local', dont
je te retranscris la définition, tiré de l'aide d'Excel 2002:

Local: Argument de type Variant facultatif. La valeur True enregistre
les fichiers en fonction de la langue de Microsoft Excel (y compris les
paramètres du Panneau de configuration). La valeur False (valeur par
défaut) enregistre les fichiers en fonction de la langue de Visual Basic
pour Applications (VBA) (qui est généralement l'anglais des États-Unis,
sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet
VBA XL5/95 de niveau international).

Un seul doute, je ne me souviens pas si ce nouveau paramètre est apparu
sous Excel 2000 ou XL 2002. Tu nous diras.

Laurent M.
Avatar
Fabrice
Merci Laurent de ta réponse. Malheureusement, cet argument n'est pas
disponible dans la version 2000 d'Excel.

Si tu as une autre idée, car je sèche...

Merci encore
Fabrice

"Laurent M" a écrit dans le message de
news:
Salut Fabrice,

La méthode SaveAs comporte un paramètre facultatif fort à propos qui
résoud des problèmes comme le tien. Il s'agit du paramèter 'Local', dont
je te retranscris la définition, tiré de l'aide d'Excel 2002:

Local: Argument de type Variant facultatif. La valeur True enregistre
les fichiers en fonction de la langue de Microsoft Excel (y compris les
paramètres du Panneau de configuration). La valeur False (valeur par
défaut) enregistre les fichiers en fonction de la langue de Visual Basic
pour Applications (VBA) (qui est généralement l'anglais des États-Unis,
sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet
VBA XL5/95 de niveau international).

Un seul doute, je ne me souviens pas si ce nouveau paramètre est apparu
sous Excel 2000 ou XL 2002. Tu nous diras.

Laurent M.



Avatar
Laurent M
Fabrice wrote:
Merci Laurent de ta réponse. Malheureusement, cet argument n'est pas
disponible dans la version 2000 d'Excel.

Si tu as une autre idée, car je sèche...



Euh...ben tu n'as qu'à installer Excel 2002...

;-)))

Sérieusement, j'ai déjà contourné un problème similaire, il y a quelques
années. L'enregistrement en format texte délimité par la voie de VBA
séparait mes paramèters par des virgules au lieu des points-virgules,
alors que le même enregistrement en mode manuel marchait très bien. Tu
peux imaginer ma perplexité à l'époque: j'active le mode
d'enregistrement de macro, je fais fichier/enregistrer sous.
J'enresgistre en format texte délimité. J'arrête le mode
d'enregistrement. Je vérifie le fichier résultant: super! il contient
des points vigules! Donc, je fais confiance à la macro. Sauf que quand
j'exécute la macro, rien ne va plus, j'obtiens des virgules! C'est assez
déroutant la première fois...

Donc, j'avais contourné le problème comme suit: je m'étais créé une
colonne de calcul supplémentaire (pour simplifier, place-là dans un
autre onglet vierge). Cette colonne est une concaténation de toutes les
colonnes que tu veux enregistrer. Tu me vois venir? Il ne reste plus
qu'à enregister cet onglet en format texte.

La difficulté réside dans la confection de cette formule de
concaténation: il faut faire attention à combler avec des espaces les
champs de longueur variable, formater les dates, etc. Mais rien
d'insurmontable. Quelques coups de DROITE, GAUCHE, RÉPÉTER, TEXTE...

A+

Laurent M.

Avatar
Fabrice
Bon, je crois que finalement je vais acheter Excel 2002 :-)

En tout cas merci du tuyau et vive les concaténations !

Je vais tester tout ça

Merci
Fabrice


"Laurent M" a écrit dans le message de
news:
Fabrice wrote:
Merci Laurent de ta réponse. Malheureusement, cet argument n'est pas
disponible dans la version 2000 d'Excel.

Si tu as une autre idée, car je sèche...



Euh...ben tu n'as qu'à installer Excel 2002...

;-)))

Sérieusement, j'ai déjà contourné un problème similaire, il y a quelques
années. L'enregistrement en format texte délimité par la voie de VBA
séparait mes paramèters par des virgules au lieu des points-virgules,
alors que le même enregistrement en mode manuel marchait très bien. Tu
peux imaginer ma perplexité à l'époque: j'active le mode
d'enregistrement de macro, je fais fichier/enregistrer sous.
J'enresgistre en format texte délimité. J'arrête le mode
d'enregistrement. Je vérifie le fichier résultant: super! il contient
des points vigules! Donc, je fais confiance à la macro. Sauf que quand
j'exécute la macro, rien ne va plus, j'obtiens des virgules! C'est assez
déroutant la première fois...

Donc, j'avais contourné le problème comme suit: je m'étais créé une
colonne de calcul supplémentaire (pour simplifier, place-là dans un
autre onglet vierge). Cette colonne est une concaténation de toutes les
colonnes que tu veux enregistrer. Tu me vois venir? Il ne reste plus
qu'à enregister cet onglet en format texte.

La difficulté réside dans la confection de cette formule de
concaténation: il faut faire attention à combler avec des espaces les
champs de longueur variable, formater les dates, etc. Mais rien
d'insurmontable. Quelques coups de DROITE, GAUCHE, RÉPÉTER, TEXTE...

A+

Laurent M.




Avatar
Match
Salut Fabrice (et les autres),

une solution pas testée (et même que j'ai des doutes sur la crédibilité de
cette solution)

si tu élargissais la colonne contenant des dates comme si elle devait
contenir 2 ou 3 caractères de plus
peut-être que tes ###### disparaîtraient.

Charles


"Fabrice" wrote in message
news:3f12e28e$
Merci Laurent de ta réponse. Malheureusement, cet argument n'est pas
disponible dans la version 2000 d'Excel.

Si tu as une autre idée, car je sèche...

Merci encore
Fabrice

"Laurent M" a écrit dans le message de
news:
Salut Fabrice,

La méthode SaveAs comporte un paramètre facultatif fort à propos qui
résoud des problèmes comme le tien. Il s'agit du paramèter 'Local', dont
je te retranscris la définition, tiré de l'aide d'Excel 2002:

Local: Argument de type Variant facultatif. La valeur True enregistre
les fichiers en fonction de la langue de Microsoft Excel (y compris les
paramètres du Panneau de configuration). La valeur False (valeur par
défaut) enregistre les fichiers en fonction de la langue de Visual Basic
pour Applications (VBA) (qui est généralement l'anglais des États-Unis,
sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet
VBA XL5/95 de niveau international).

Un seul doute, je ne me souviens pas si ce nouveau paramètre est apparu
sous Excel 2000 ou XL 2002. Tu nous diras.

Laurent M.







Avatar
Fabrice
Bonjour à tous et tout d'abord merci de votre aide,

Effectivement, il y avait un problème de largeur de colonne. De plus, Excel
ne gardait pas le format date souhaité (jj.mm.aa). Il affichait ce format à
l'écran, mais lors de la conversion en fichier texte, il mettait une date au
format jj.mm.aaaa. Pour résoudre ce problème, j'ai procédé comme suit :
forcer le format date souhaité en convertissant les dates en texte :

macellule.Value = "'" & Format(.Cells(l, 4).Value, "dd""/""mm""/""yy")

et ensuite j'ai augmenté un chouiat la largeur de la colonne :

maCellule.EntireColumn.ColumnWidth = 8.3

Et maintenant ça marche.

Encore une fois merci à tous et très bonne semaine
Fabrice


"Match" a écrit dans le message de
news:%
Salut Fabrice (et les autres),

une solution pas testée (et même que j'ai des doutes sur la crédibilité de
cette solution)

si tu élargissais la colonne contenant des dates comme si elle devait
contenir 2 ou 3 caractères de plus
peut-être que tes ###### disparaîtraient.

Charles


"Fabrice" wrote in message
news:3f12e28e$
Merci Laurent de ta réponse. Malheureusement, cet argument n'est pas
disponible dans la version 2000 d'Excel.

Si tu as une autre idée, car je sèche...

Merci encore
Fabrice

"Laurent M" a écrit dans le message de
news:
Salut Fabrice,

La méthode SaveAs comporte un paramètre facultatif fort à propos qui
résoud des problèmes comme le tien. Il s'agit du paramèter 'Local',
dont



je te retranscris la définition, tiré de l'aide d'Excel 2002:

Local: Argument de type Variant facultatif. La valeur True enregistre
les fichiers en fonction de la langue de Microsoft Excel (y compris
les



paramètres du Panneau de configuration). La valeur False (valeur par
défaut) enregistre les fichiers en fonction de la langue de Visual
Basic



pour Applications (VBA) (qui est généralement l'anglais des
États-Unis,



sauf si le projet VBA où Workbooks.Open est exécuté est un ancien
projet



VBA XL5/95 de niveau international).

Un seul doute, je ne me souviens pas si ce nouveau paramètre est
apparu



sous Excel 2000 ou XL 2002. Tu nous diras.

Laurent M.