Conversion CSV à Excel par VBA

B

Bryan

Guest
Bonjour à tous,

Je dois ouvrir un fichier format .csv (séparateur=";") copier ses valeurs et le coller dans un fichier format .xl. Lorsque j'ouvre mon fichier .csv directement par Excel, je n'ai pas de problèmes. Lorsque je veux faire la même chose par VBA, les données se ramassent dans une colonne car le programme ne tient pas compte des séparateurs ";". Quelqu'un peut m'aider?

Merci à l'Avance

Bryan
 
B

Bryan

Guest
Bonjour à tous,

Suite à mon premier message, voici le code que j'utilise pour ouvrir mon fichier:

Sub nom()

...

Workbooks.Open Filename:= _"Nomdufichier.csv", format:=4

...

End sub

Je sais que le format =4 est pour indiquer que le séparateur est ";", mais pourquoi le fichier CSV s'ouvre sans le considérer reste un mystère. Ma patience commence à être mise à l'épreuve...

Bonne journée

Bryan
 
B

Bryan

Guest
Bonjour à tous,

Suite à mon premier message, voici le code que j'utilise pour ouvrir mon fichier:

Sub nom()

...

Workbooks.Open Filename:= _"Nomdufichier.csv", format:=4

...

End sub

Je sais que le format =4 est pour indiquer que le séparateur est ";", mais pourquoi le fichier CSV s'ouvre sans le considérer reste un mystère. Ma patience commence à être mise à l'épreuve...

Bonne journée

Bryan
 
L

Lord Nelson

Guest
Salut Bryan,

Effectivement il y a un petit problème : l'ouverture d'un CSV délimité par des points-virgules ne pose pas de problème en direct mais ne se fait pas correctement avec une macro VBA.
Explication probable : Excel a été francisé, pas VBA. Pour VBA, un fichier CSV est impérativement délimité par des virgules !
Une parade toute simple : renommer les fichiers .CSV en .TXT et ça marche.

Par exemple :
Workbooks.Open "D:\hc\Excel\Liste.txt", Format:=4

Etonnant non ?

A+
Horatio
 

VIARD

XLDnaute Impliqué
Re : Conversion CSV à Excel par VBA

Bonjour Vekmort

il y a pas mal de temps, je me suis penché sur les fichiers CSV.
et j'ai réalisé ce petit programme.
A mettre dans un module normal.

code
Code:
Sub Ranger_Colonne() 'Traitement fichier au format CSV (point virgule)
Dim Text As String, X As String, ADéconcaténer As String, Caractere As String
Dim M As Integer, Y As Integer, j As Integer, Nb As Integer

M = Sheets("Feuil1").Range("b65536").End(xlUp).Row
Sheets("Feuil1").Activate
Caractere = ";" 'caractère de séparation

'----------- Compteur point virgule ---------------
For Y = 4 To M
    ADéconcaténer = Range("b" & Y).Value
    Nb = Len(ADéconcaténer)
    j = 0
    Text = ""
    For i = 1 To Nb 'traitement caractère par caractère
        X = Mid(ADéconcaténer, i, 1)
        Text = Text & X
        If X = Caractere Then
            j = j + 1
            Text = Left(Text, Len(Text) - 1)
            Range("A" & Y).Select
            Range("A" & Y).Offset(0, j).Value = Text 'si j-1 colonne A départ
            Text = ""
        End If
    Next
Next
End Sub

code à adapter, le code de séparation est le ";" et peut-être changé suivant
le cas.

Bon courage

Jean-Paul
 

kiki29

XLDnaute Barbatruc
Re : Conversion CSV à Excel par VBA

Salut, quel déterrage

Depuis XL 2002, l'export en CSV via VBA prend par défaut pour séparateur une ","
sauf si on le fait à la main : Fichier Enregistrer sous CSV (séparateur point-virgule)

Vérifier dans les Options Régionales | Personnaliser si le séparateur de listes est bien un point-virgule.

L'aide en ligne sur SaveAs est suffisamment explicite :
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).

de même pour OpenText sur option Local :
Spécifiez True si les paramètres régionaux de l'ordinateur doivent être utilisés pour la mise en forme des séparateurs, des nombres et des données.
 

Discussions similaires

Réponses
3
Affichages
479

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 845
Messages
2 092 770
Membres
105 529
dernier inscrit
StarExcel