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

Ouvrir un csv en UTF-8

12 réponses
Avatar
Laurent
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent

10 réponses

1 2
Avatar
PAN GOT
Bonjour,
il faut que tu ajoute l'argument 'Local = true' à ta commande Workbooks.Open
salut

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le
format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent


Avatar
Laurent
Merci,
Même avec Local = true, le fichier s'ouvre avec des problèmes d'accent, il
ne convertit pas les accents, mon fichier est toujours en UTF-8.

Un exemple de fichier que je n'arrive pas à ouvir correctement avec Excel
http://cjoint.com/?bvn4T26Ulj

Laurent


"PAN GOT" a écrit :

Bonjour,
il faut que tu ajoute l'argument 'Local = true' à ta commande Workbooks.Open
salut

"Laurent" a écrit dans le message de
news:
> Bonjour,
> J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
> qui permet de les ouvrir correctement avec Excel ?
> Lorsque je les ouvre, j'ai des problèmes d'accents.
> J'ai testé en renommant en txt, l'assistant me permet de choisir le
> format,
> mais le fichier s'ouvre mal (j'ai des retours chariots dans les
> enregistrements).
>
> Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
> notepad et de le réenregistrer dans le bon format.
>
> Laurent





Avatar
Daniel.C
Bonjour.
Renomme ton fichier avec une extension .txt. Quand tu l'ouvres avec XL,
dans l'étape 1 de l'assistant), choisis dans la fenêtre "origine du
fichier" : "65001 Unicode (UTF8)".
Cordialement.
Daniel

Merci,
Même avec Local = true, le fichier s'ouvre avec des problèmes d'accent, il
ne convertit pas les accents, mon fichier est toujours en UTF-8.

Un exemple de fichier que je n'arrive pas à ouvir correctement avec Excel
http://cjoint.com/?bvn4T26Ulj

Laurent


"PAN GOT" a écrit :

Bonjour,
il faut que tu ajoute l'argument 'Local = true' à ta commande Workbooks.Open
salut

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le
format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent









Avatar
Laurent
Merci Daniel.C,
Mais comme je l'ai dit aussi, l'importation ne me donne pas un résultat
satisfaisant, j'ai des enregistrements avec des retours chariots, les
enregistrement sont identifié par des double quote pour ne pas passer à
l'enregistrement suivant, mais en txt (ou en importation de données texte)
Excel considère les retour à la ligne comme un nouvel enregistrement ...
Donc soit j'ai les problèmes d'accents, soit j'ai plus d'enregistrements que
prévus (et en plus ils sont mauvais).

Laurent

"Daniel.C" a écrit :

Bonjour.
Renomme ton fichier avec une extension .txt. Quand tu l'ouvres avec XL,
dans l'étape 1 de l'assistant), choisis dans la fenêtre "origine du
fichier" : "65001 Unicode (UTF8)".
Cordialement.
Daniel

> Merci,
> Même avec Local = true, le fichier s'ouvre avec des problèmes d'accent, il
> ne convertit pas les accents, mon fichier est toujours en UTF-8.
>
> Un exemple de fichier que je n'arrive pas à ouvir correctement avec Excel
> http://cjoint.com/?bvn4T26Ulj
>
> Laurent
>
>
> "PAN GOT" a écrit :
>
>> Bonjour,
>> il faut que tu ajoute l'argument 'Local = true' à ta commande Workbooks.Open
>> salut
>>
>> "Laurent" a écrit dans le message de
>> news:
>>> Bonjour,
>>> J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
>>> qui permet de les ouvrir correctement avec Excel ?
>>> Lorsque je les ouvre, j'ai des problèmes d'accents.
>>> J'ai testé en renommant en txt, l'assistant me permet de choisir le
>>> format,
>>> mais le fichier s'ouvre mal (j'ai des retours chariots dans les
>>> enregistrements).
>>>
>>> Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
>>> notepad et de le réenregistrer dans le bon format.
>>>
>>> Laurent
>>
>>
>>





Avatar
michdenis
As-tu essayé quelque chose comme ceci :

La fonction Split() requiert excel 2000 ou plus récent.

Tu dois charger la bibliothèque suivante dans la fenêtre
de l'éditeur de code : Barre de menu / outils / référence
et tu coches :
"Microsoft activex data object 2.x librairy"

'--------------------------------------------------
Sub test()

Dim Con As New ADODB.Connection
Dim Rst As New Recordset, C As Variant
Dim Strm As Stream, T As String
Dim X As Long, S As String, D As Integer
Dim Fichier As String, Lig As Long
Dim Rg As Range, Sep As String

'******************************************
'à définir
Fichier = "C:UsersPowerUserGrosTest.csv"
'Séparateur dans le fichier csv
Sep = ";" 'à définir

With Worksheets("Feuil1") 'à définir
Set Rg = .Range("A1") 'à définir
End With
'******************************************

Set Strm = CreateObject("adodb.stream")

With Strm
.Charset = "utf-8" '"iso-8859-1"
.Type = 2
.Open
.LoadFromFile Fichier
T = .ReadText
Application.ScreenUpdating = False
Do
D = X + 1
X = InStr(D, T, Chr(10), vbTextCompare)
If X = 0 Then Exit Do
S = ""
If X = 0 Then Exit Do
S = Mid(T, D, X - D)
C = Split(S, Sep)
Lig = Lig + 1
Rg(Lig).Resize(, UBound(C)) = C
Lig = Lig + 1
Loop Until X = 0
.Close
End With

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





"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent
Avatar
michdenis
Peut être un peu plus simple comme ceci :

'-------------------------------------
Sub test2()

Dim Rst As New Recordset, C As Variant
Dim Strm As New Stream, T As String
Dim Fichier As String, Lig As Long
Dim Rg As Range, Sep As String

'******************************************
'à définir
Fichier = "C:UsersPowerUserGrosTest.csv"
'Séparateur dans le fichier csv
Sep = ";" 'à définir

With Worksheets("Feuil1") 'à définir
Set Rg = .Range("A1") 'à définir
End With
'******************************************

Set Strm = CreateObject("adodb.stream")
With Strm
.Charset = "utf-8" '"iso-8859-1"
.Type = 2
.Open
If Dir(Fichier) = "" Then
MsgBox "Fichier introuvable"
Exit Sub
End If
.LoadFromFile Fichier
.Position = 0
Do While .EOS = False
T = .ReadText(adReadLine)
C = Split(T, Sep)
Lig = Lig + 1
Rg(Lig).Resize(, UBound(C)) = C
Loop
.Close
End With

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



"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent
Avatar
Laurent
Bonjour,
Merci michdenis mais désolé mais ni l'une ni l'autre des macros ne
fonctionnent sur mon fichier, les retour à la ligne dans mes enregistrements
posent problème (fichier : http://cjoint.com/?bvn4T26Ulj)
Je regarde quand même si j'arrive à adpater ce code.

Laurent


"michdenis" a écrit :

As-tu essayé quelque chose comme ceci :

La fonction Split() requiert excel 2000 ou plus récent.

Tu dois charger la bibliothèque suivante dans la fenêtre
de l'éditeur de code : Barre de menu / outils / référence
et tu coches :
"Microsoft activex data object 2.x librairy"

'--------------------------------------------------
Sub test()

Dim Con As New ADODB.Connection
Dim Rst As New Recordset, C As Variant
Dim Strm As Stream, T As String
Dim X As Long, S As String, D As Integer
Dim Fichier As String, Lig As Long
Dim Rg As Range, Sep As String

'******************************************
'à définir
Fichier = "C:UsersPowerUserGrosTest.csv"
'Séparateur dans le fichier csv
Sep = ";" 'à définir

With Worksheets("Feuil1") 'à définir
Set Rg = .Range("A1") 'à définir
End With
'******************************************

Set Strm = CreateObject("adodb.stream")

With Strm
.Charset = "utf-8" '"iso-8859-1"
.Type = 2
.Open
.LoadFromFile Fichier
T = .ReadText
Application.ScreenUpdating = False
Do
D = X + 1
X = InStr(D, T, Chr(10), vbTextCompare)
If X = 0 Then Exit Do
S = ""
If X = 0 Then Exit Do
S = Mid(T, D, X - D)
C = Split(S, Sep)
Lig = Lig + 1
Rg(Lig).Resize(, UBound(C)) = C
Lig = Lig + 1
Loop Until X = 0
.Close
End With

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





"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent



Avatar
michdenis
| les retour à la ligne dans mes enregistrements posent problème

Il y a beaucoup d'autres choses qui posent problème !
je ne crois pas qu'on puisse automatiser son ouverture.

Je t'offre une macro qui va copier tout ton fichier originale
vers une destination que tu vas définir. Cette macro va
s'occuper de tes caractères accentués et tu vas pouvoir
ouvrir ton nouveau fichier par la suite dans excel. Il te
restera a en faire une présentation acceptable !

Requiert la bibliothèque "Microsoft activex data objects 2.x library"
'-------------------------------------
Sub Modifier_Accents()
Dim Strm As New Stream
Dim Source As String, Dest As String

Source = "C:TonCheminRapportTabulaire.csv"
Dest = "C:TonCheminNouveau_RapportTabulaire.csv"

Set Strm = CreateObject("ADODB.Stream")
With Strm
.Charset = "utf-8"
.Type = 2
.Open
If Dir(Source) <> "" Then
.LoadFromFile Source
.SaveToFile Dest, adSaveCreateOverWrite
Else
MsgBox "Fichier introuvable"
End If
.Close
End With
End Sub
'-------------------------------------


"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci michdenis mais désolé mais ni l'une ni l'autre des macros ne
fonctionnent sur mon fichier, les retour à la ligne dans mes enregistrements
posent problème (fichier : http://cjoint.com/?bvn4T26Ulj)
Je regarde quand même si j'arrive à adpater ce code.

Laurent


"michdenis" a écrit :

As-tu essayé quelque chose comme ceci :

La fonction Split() requiert excel 2000 ou plus récent.

Tu dois charger la bibliothèque suivante dans la fenêtre
de l'éditeur de code : Barre de menu / outils / référence
et tu coches :
"Microsoft activex data object 2.x librairy"

'--------------------------------------------------
Sub test()

Dim Con As New ADODB.Connection
Dim Rst As New Recordset, C As Variant
Dim Strm As Stream, T As String
Dim X As Long, S As String, D As Integer
Dim Fichier As String, Lig As Long
Dim Rg As Range, Sep As String

'******************************************
'à définir
Fichier = "C:UsersPowerUserGrosTest.csv"
'Séparateur dans le fichier csv
Sep = ";" 'à définir

With Worksheets("Feuil1") 'à définir
Set Rg = .Range("A1") 'à définir
End With
'******************************************

Set Strm = CreateObject("adodb.stream")

With Strm
.Charset = "utf-8" '"iso-8859-1"
.Type = 2
.Open
.LoadFromFile Fichier
T = .ReadText
Application.ScreenUpdating = False
Do
D = X + 1
X = InStr(D, T, Chr(10), vbTextCompare)
If X = 0 Then Exit Do
S = ""
If X = 0 Then Exit Do
S = Mid(T, D, X - D)
C = Split(S, Sep)
Lig = Lig + 1
Rg(Lig).Resize(, UBound(C)) = C
Lig = Lig + 1
Loop Until X = 0
.Close
End With

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





"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
qui permet de les ouvrir correctement avec Excel ?
Lorsque je les ouvre, j'ai des problèmes d'accents.
J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
mais le fichier s'ouvre mal (j'ai des retours chariots dans les
enregistrements).

Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
notepad et de le réenregistrer dans le bon format.

Laurent



Avatar
Laurent
Merci michdenis,
Ca me convient parfaitement, un peu de fioriture autour et ca sera parfait.
Le seul truc que je ne comprends pas c'est qu'il reste encore des caractères
bizarres (point d'interrogation dans un carré). Mais bon, je vais me
débrouiller.

Merci encore

Laurent

"michdenis" a écrit :

| les retour à la ligne dans mes enregistrements posent problème

Il y a beaucoup d'autres choses qui posent problème !
je ne crois pas qu'on puisse automatiser son ouverture.

Je t'offre une macro qui va copier tout ton fichier originale
vers une destination que tu vas définir. Cette macro va
s'occuper de tes caractères accentués et tu vas pouvoir
ouvrir ton nouveau fichier par la suite dans excel. Il te
restera a en faire une présentation acceptable !

Requiert la bibliothèque "Microsoft activex data objects 2.x library"
'-------------------------------------
Sub Modifier_Accents()
Dim Strm As New Stream
Dim Source As String, Dest As String

Source = "C:TonCheminRapportTabulaire.csv"
Dest = "C:TonCheminNouveau_RapportTabulaire.csv"

Set Strm = CreateObject("ADODB.Stream")
With Strm
.Charset = "utf-8"
.Type = 2
.Open
If Dir(Source) <> "" Then
.LoadFromFile Source
.SaveToFile Dest, adSaveCreateOverWrite
Else
MsgBox "Fichier introuvable"
End If
.Close
End With
End Sub
'-------------------------------------


"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci michdenis mais désolé mais ni l'une ni l'autre des macros ne
fonctionnent sur mon fichier, les retour à la ligne dans mes enregistrements
posent problème (fichier : http://cjoint.com/?bvn4T26Ulj)
Je regarde quand même si j'arrive à adpater ce code.

Laurent


"michdenis" a écrit :

> As-tu essayé quelque chose comme ceci :
>
> La fonction Split() requiert excel 2000 ou plus récent.
>
> Tu dois charger la bibliothèque suivante dans la fenêtre
> de l'éditeur de code : Barre de menu / outils / référence
> et tu coches :
> "Microsoft activex data object 2.x librairy"
>
> '--------------------------------------------------
> Sub test()
>
> Dim Con As New ADODB.Connection
> Dim Rst As New Recordset, C As Variant
> Dim Strm As Stream, T As String
> Dim X As Long, S As String, D As Integer
> Dim Fichier As String, Lig As Long
> Dim Rg As Range, Sep As String
>
> '******************************************
> 'à définir
> Fichier = "C:UsersPowerUserGrosTest.csv"
> 'Séparateur dans le fichier csv
> Sep = ";" 'à définir
>
> With Worksheets("Feuil1") 'à définir
> Set Rg = .Range("A1") 'à définir
> End With
> '******************************************
>
> Set Strm = CreateObject("adodb.stream")
>
> With Strm
> .Charset = "utf-8" '"iso-8859-1"
> .Type = 2
> .Open
> .LoadFromFile Fichier
> T = .ReadText
> Application.ScreenUpdating = False
> Do
> D = X + 1
> X = InStr(D, T, Chr(10), vbTextCompare)
> If X = 0 Then Exit Do
> S = ""
> If X = 0 Then Exit Do
> S = Mid(T, D, X - D)
> C = Split(S, Sep)
> Lig = Lig + 1
> Rg(Lig).Resize(, UBound(C)) = C
> Lig = Lig + 1
> Loop Until X = 0
> .Close
> End With
>
> End Sub
> '--------------------------------------------------
>
>
>
>
>
> "Laurent" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
> qui permet de les ouvrir correctement avec Excel ?
> Lorsque je les ouvre, j'ai des problèmes d'accents.
> J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
> mais le fichier s'ouvre mal (j'ai des retours chariots dans les
> enregistrements).
>
> Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
> notepad et de le réenregistrer dans le bon format.
>
> Laurent
>


Avatar
Laurent
Pour info :
Pour éviter d'avoir a cocher la bibliothèque adéquat (différente d'une
version d'Excel à l'autre) :
...
Dim Strm As Object
...
dans ce cas il va chercher tout seul la bonne bibliothèque sans la déclarer
dasn les références.

Laurent

"michdenis" a écrit :

| les retour à la ligne dans mes enregistrements posent problème

Il y a beaucoup d'autres choses qui posent problème !
je ne crois pas qu'on puisse automatiser son ouverture.

Je t'offre une macro qui va copier tout ton fichier originale
vers une destination que tu vas définir. Cette macro va
s'occuper de tes caractères accentués et tu vas pouvoir
ouvrir ton nouveau fichier par la suite dans excel. Il te
restera a en faire une présentation acceptable !

Requiert la bibliothèque "Microsoft activex data objects 2.x library"
'-------------------------------------
Sub Modifier_Accents()
Dim Strm As New Stream
Dim Source As String, Dest As String

Source = "C:TonCheminRapportTabulaire.csv"
Dest = "C:TonCheminNouveau_RapportTabulaire.csv"

Set Strm = CreateObject("ADODB.Stream")
With Strm
.Charset = "utf-8"
.Type = 2
.Open
If Dir(Source) <> "" Then
.LoadFromFile Source
.SaveToFile Dest, adSaveCreateOverWrite
Else
MsgBox "Fichier introuvable"
End If
.Close
End With
End Sub
'-------------------------------------


"Laurent" a écrit dans le message de groupe de
discussion :
Bonjour,
Merci michdenis mais désolé mais ni l'une ni l'autre des macros ne
fonctionnent sur mon fichier, les retour à la ligne dans mes enregistrements
posent problème (fichier : http://cjoint.com/?bvn4T26Ulj)
Je regarde quand même si j'arrive à adpater ce code.

Laurent


"michdenis" a écrit :

> As-tu essayé quelque chose comme ceci :
>
> La fonction Split() requiert excel 2000 ou plus récent.
>
> Tu dois charger la bibliothèque suivante dans la fenêtre
> de l'éditeur de code : Barre de menu / outils / référence
> et tu coches :
> "Microsoft activex data object 2.x librairy"
>
> '--------------------------------------------------
> Sub test()
>
> Dim Con As New ADODB.Connection
> Dim Rst As New Recordset, C As Variant
> Dim Strm As Stream, T As String
> Dim X As Long, S As String, D As Integer
> Dim Fichier As String, Lig As Long
> Dim Rg As Range, Sep As String
>
> '******************************************
> 'à définir
> Fichier = "C:UsersPowerUserGrosTest.csv"
> 'Séparateur dans le fichier csv
> Sep = ";" 'à définir
>
> With Worksheets("Feuil1") 'à définir
> Set Rg = .Range("A1") 'à définir
> End With
> '******************************************
>
> Set Strm = CreateObject("adodb.stream")
>
> With Strm
> .Charset = "utf-8" '"iso-8859-1"
> .Type = 2
> .Open
> .LoadFromFile Fichier
> T = .ReadText
> Application.ScreenUpdating = False
> Do
> D = X + 1
> X = InStr(D, T, Chr(10), vbTextCompare)
> If X = 0 Then Exit Do
> S = ""
> If X = 0 Then Exit Do
> S = Mid(T, D, X - D)
> C = Split(S, Sep)
> Lig = Lig + 1
> Rg(Lig).Resize(, UBound(C)) = C
> Lig = Lig + 1
> Loop Until X = 0
> .Close
> End With
>
> End Sub
> '--------------------------------------------------
>
>
>
>
>
> "Laurent" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> J'ai un problème avec des CSV créé en UTF-8, connaissez vous une solution
> qui permet de les ouvrir correctement avec Excel ?
> Lorsque je les ouvre, j'ai des problèmes d'accents.
> J'ai testé en renommant en txt, l'assistant me permet de choisir le format,
> mais le fichier s'ouvre mal (j'ai des retours chariots dans les
> enregistrements).
>
> Merci d'avance si vous avez une solution autre que de l'ouvrir avec le
> notepad et de le réenregistrer dans le bon format.
>
> Laurent
>


1 2