CSV avec virgules dans texte

Razelbok

XLDnaute Nouveau
Bonjour à tous,
je me permets d'écrire car cela fait 2 jours que je cherche la réponse mais sans succès... total. Mon pbm est le suivant. J'ai un fichier excel à une 100aine de lignes qui doit me servir à un export CSV pour google calendar (CSV avec virgules). Ce fichier excel contient des virgules aussi, et notamment dans l'adresse (par ex. "parc montsouris, paris14"). Lorsque je l'exporte, il le fait avec des point virgules en séparateurs. Comme le nombre de lignes est grand, si je veux modifier les points virgules en virgules (pour le faire reconnaitre par GCal) je dois automatiser la tâche en "recherchant-remplacant" TOUTES les virgules par des points virgules.
ET c'est là mon pbm: j'aimerais que mon CSV reconnaisse tout de même les virgules de mon texte. Comment faire?

Je ne sais pas si j'ai été assez clair, je ne vois comment formuler mon pbm autrement

MErci d'avance pour votre aide de programmeurs

Cordialement

Niko
 

Catrice

XLDnaute Barbatruc
Re : CSV avec virgules dans texte

Bonjour,

ci-joint une macro qui génère un CSV avec séparateur virgule et qui mets les données entre guillemets (pour isoler les nombres décimaux ou textes utilisant le séparateur virgule)
Tu peux définir le séparateur au début du code de la macro
 

Pièces jointes

  • Classeur1.xls
    30 KB · Affichages: 470
  • Classeur1.xls
    30 KB · Affichages: 484
  • Classeur1.xls
    30 KB · Affichages: 476
Dernière édition:

Razelbok

XLDnaute Nouveau
Re : CSV avec virgules dans texte

Alors, ca marche plutôt bien, merci, merci, merci.
Même si je pensais pouvoir me passer de macro...
Cependant, lorsque j'exporte en CSV des horaires du type 19:30 il me les affiche en texte du type 0,821. Est-ce que les guillemets y sont pour qqch? Y'a-til un moyen de contourner le pbm?
 

mromain

XLDnaute Barbatruc
Re : CSV avec virgules dans texte

bonjour Razelbok,

j'ai fait une petite modif sur le code de Catrice, mais je n'ai pas testé, tiens-nous au jus.

Code:
Sub Test2()
Chemin = ThisWorkbook.Path
MonFichier = "Test.csv"
MonSep = ","
'--------------------------------
[B][COLOR="Red"]Dim Y As Range[/COLOR][/B]
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile Chemin & "\" & MonFichier
Set f = fs.GetFile(Chemin & "\" & MonFichier)
Set ts = f.OpenAsTextStream(2, -2)
For Each X In ActiveSheet.Range("A1:" & ActiveSheet.Range("A65536").End(xlUp).Address)
    For Each Y In ActiveSheet.Range(X, ActiveSheet.Cells(X.Row, 256).End(xlToLeft))
        MaVar = MaVar & MonSep & """" & Y[B][COLOR="Red"].Text[/COLOR][/B] & """"
    Next
ts.Write Right(MaVar, Len(MaVar) - 1) & Chr(13) + Chr(10)
MaVar = ""
Next
ts.Close
End Sub

à tester donc.

a+
 
Dernière édition:

Razelbok

XLDnaute Nouveau
Re : CSV avec virgules dans texte

Et bien écoutez, ca a l'air de marcher.
Je ne comprends pas vraiment ce que ca fait (et ca m'embête) et j'ai copié bêtement le code, mais ca marche. A voir à l'usage.
Je vous tiens bientôt au courant pour le RESOLU définitif.

Merci d'avoir pris le temps
 

mromain

XLDnaute Barbatruc
Re : CSV avec virgules dans texte

re,

en fait, dans le code initial de Catrice, elle récupère Y (sous-entendu Y.Value),
dans une cellule avec des heures, bien que soit affiché "19:30", la valeur de la cellule est de "0,821 (jours)".
en écrivant Y.Text, on force la macro à prendre le texte affiché dans la cellule ("19:30").

a+
 

ftindustriels

XLDnaute Nouveau
Re : CSV avec virgules dans texte

Bonjour tout le monde,

Je suis dans le même cas, et votre solution a très bien répondu à mon besoin, cependant dans la forme du fichier csv dont j'ai besoin le passage d'une ligne à l'autre se fait par une virgule et pas par un saut de ligne, comme ça :

"nom","prénom","age","description détaillé","nom1","prénom1","age1","description détaillé1","nom2","prénom2","age2","description détaillé2"

et non pas :

"nom","prénom","age","description détaillé"
"nom1","prénom1","age1","description détaillé1"
"nom2","prénom2","age2","description détaillé2"

Vu que je suis novice en vba, qu'est ce que je dois changer dans la macro pour avoir mon type de fichier csv?

Merci d'avance.
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : CSV avec virgules dans texte

Bonjour le fil :),
Je suis dans le même cas, et votre solution a très bien répondu à mon besoin, cependant dans la forme du fichier csv dont j'ai besoin le passage d'une ligne à l'autre se fait par une virgule et pas par un saut de ligne, comme ça :
T'es sûr de ton coup :confused: ?
Parce qu'un fichier de donnée avec une seule ligne et un seul type de séparateur, je vois pas comment pouvoir réextraire les données ensuite :rolleyes:...
Logiquement, pour ce que tu demandes, il suffit de déplacer le déchargement de la variable ainsi
Code:
Next
Next
ts.Write Right(MaVar, Len(MaVar) - 1)
MaVar = ""
ts.Close
mais si ton fichier est gros, tu risque d'avoir un dépassement de capacité au niveau de la variable :eek:...
Bon courage :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 563
Messages
2 089 681
Membres
104 252
dernier inscrit
dbsromaric