OVH Cloud OVH Cloud

Probleme avec Excel 2000 et des fichiers CSV

4 réponses
Avatar
Fabrice
Bonjour =E0 tous

Voil=E0 mon probl=E8me :
J'enregistre un fichier Excel au format CSV du type 4=20
colonnes, 10 lignes et =E7a marche tres bien sur mon poste=20
(Excel XP) : le fichier contient les donn=E9es s=E9par=E9es par=20
des ';' et quand je le r=E9-ouvre, tout revient en colonnes.

Si je copie ce CSV sur un autre PC (Excel 2000), tout=20
fonctionne encore tr=E8s bien : quand j'ouvre le fichier,=20
tout se remet en colonnes.

Par contre sur ce nouveau PC (Excel 2000), si je modifie=20
quelquechose et que je l'enregistre =E0 nouveau (toujours en=20
CSV), le fichier contient bien les donn=E9es s=E9par=E9es par=20
des ';' mais quand je le r=E9-ouvre, il apparait sur une=20
seule colonne avec les ';'...

J'ai v=E9rifi=E9 les options r=E9gionales de chacun des 2 PC,=20
c'est bien le ';' qui est le s=E9parateur de liste...

Je cherche donc une =E2me charitable capable de m'aider...

Merci

Fabrice

4 réponses

Avatar
michdenis
Bonjour Fabrice,

La différence comportementale des version excel 2000 et excel 2002 tiens à ce paramètre que l'on retrouve sur excel xp
lorsque l'on enregistre le fichier par le bouton de commande ou par une ligne de code comme celle-là .

ThisWorkbook.SaveAs ..... Excel 2000 ne dispose pas du paramètre suivant et le comportement que tu observes sur celui-ci est
"!normal".

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).


Salutations!



"Fabrice" a écrit dans le message de news:077801c3ce24$fbf8ffd0$
Bonjour à tous

Voilà mon problème :
J'enregistre un fichier Excel au format CSV du type 4
colonnes, 10 lignes et ça marche tres bien sur mon poste
(Excel XP) : le fichier contient les données séparées par
des ';' et quand je le ré-ouvre, tout revient en colonnes.

Si je copie ce CSV sur un autre PC (Excel 2000), tout
fonctionne encore très bien : quand j'ouvre le fichier,
tout se remet en colonnes.

Par contre sur ce nouveau PC (Excel 2000), si je modifie
quelquechose et que je l'enregistre à nouveau (toujours en
CSV), le fichier contient bien les données séparées par
des ';' mais quand je le ré-ouvre, il apparait sur une
seule colonne avec les ';'...

J'ai vérifié les options régionales de chacun des 2 PC,
c'est bien le ';' qui est le séparateur de liste...

Je cherche donc une âme charitable capable de m'aider...

Merci

Fabrice
Avatar
Fabrice
Merci pour la rapidité de la réponse mais...

En clair, est-ce qu'il y a une solution ???

Je n'utilise pas VBA dans ce cas et le passage par Excel
XP n'est que facultatif...

Puis-je m'en sortir avec mon Excel 2000 ?

Merci

Fabrice
Avatar
Clément Marcotte
Bonjour,

Juste à pas passer par enregistrer sous.

La procédure suivante utilise trois façons d'écrire un fichier texte
avec VB-VBA:


Sub ecrirelefichiertexteavecdesvirgules()
Open "unbeaufichiertexte.txt" For Output As 1
Dim i As Integer, derniereligne As Integer
Sheets("Feuil1").Select
derniereligne = [a65536].End(xlUp).Row
'Avec Write
For i = 1 To derniereligne
Write #1, Cells(i, 1).Value; Cells(i, 2).Value; _
Cells(i, 3).Value; Cells(i, 4).Value
Next
'Avec Print et virgules
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34); _
","; Chr(34); Cells(i, 2).Value; Chr(34); _
","; Cells(i, 3).Value; ","; Chr(34); _
Cells(i, 4).Value; Chr(34)
Next
'Le séparateur dans le fichier est entre guillemets
'le séparateur VBA n'est pas entre guillemets
'sauf pour les points-virgules qui collent les
'nom et les guillemets
For i = 1 To derniereligne
Print #1, Chr(34); Cells(i, 1).Value; Chr(34), ",", _
Chr(34); Cells(i, 2).Value; Chr(34); , _
",", Cells(i, 3).Value, ",", Chr(34); _
Cells(i, 4).Value; Chr(34)
Next
Close
End Sub


"Fabrice" a écrit dans le message de
news:07ff01c3ce29$d5c14520$
Merci pour la rapidité de la réponse mais...

En clair, est-ce qu'il y a une solution ???

Je n'utilise pas VBA dans ce cas et le passage par Excel
XP n'est que facultatif...

Puis-je m'en sortir avec mon Excel 2000 ?

Merci

Fabrice
Avatar
michdenis
Bonjour Fabrice,

Il y a cette macro :

'--------------------------------
Sub CSVOpener()
'd'après P. Penet, mpfe
Dim wb As Workbook, NomFich

With Application
NomFich = Application.GetOpenFilename("Fichiers texte,*.csv;*.txt")
If NomFich = False Then Exit Sub
Set wb = .Workbooks.Open(NomFich)
wb.Sheets(1).Columns(1).TextToColumns Range("A1"), , , False, , True
End With

End Sub
'--------------------------------


Il y aussi ceci : Une variante

Un fichier .cvs de ce type

Hello;salut;0321;bonjour

'---------------------------
Sub Ouvrir()
Dim Fichier As String
Dim Wk As Workbook
Fichier = "c:test1.csv"
Set Wk = Workbooks.Open(Fichier)
Wk.Worksheets(1).Columns(1).TextToColumns Range("A1"), _
DataType:=xlDelimited, _
ConsecutiveDelimiter:=True, Semicolon:=True, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1))
Set Wk = Nothing

End Sub
'---------------------------

Regarde dans l'aide le paramètre "FieldInfo" de la méthode "Open" pour les formats de tes données.



Salutations!



"Fabrice" a écrit dans le message de news:07ff01c3ce29$d5c14520$
Merci pour la rapidité de la réponse mais...

En clair, est-ce qu'il y a une solution ???

Je n'utilise pas VBA dans ce cas et le passage par Excel
XP n'est que facultatif...

Puis-je m'en sortir avec mon Excel 2000 ?

Merci

Fabrice