Problème ligne colonne VBA

Fermé
Ereudet Messages postés 23 Date d'inscription vendredi 18 mai 2018 Statut Membre Dernière intervention 13 septembre 2018 - 1 juin 2018 à 18:04
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 5 juin 2018 à 22:31
Bonjour,

J'ai créé une macro VBA qui va piocher certaines valeurs dans un fichier .txt et crée un fichier .csv dans lequel il copie certaines valeurs du .txt, je voudrais avoir des valeurs dans les colonnes A, B et C de mon fichier .csv, mais tout va dans la colonne A, comment faire SVP, voici un extrait de ma macro :

fcsv.[A1] = "Sensor"
fcsv.[A2] = "Dossier"
fcsv.[A3] = "Commentaire"
fcsv.[A5] = DateSerial(Year(nn), Month(nn), 1) - 1
fcsv.[A6] = DateSerial(Year(nn), Month(nn) + 1, 1) - 1
[A5].NumberFormat = "dd/mm/yyyy"
[A6].NumberFormat = "dd/mm/yyyy"
fcsv.[B1] = "Index EDF Mois-1"
fcsv.[B2] = "Previsionnel"
fcsv.[B3] = "Comnentaire"
fcsv.[B4] = "3"
fcsv.[C1] = "Index EDF Mois"
fcsv.[C2] = "Previsionnel"
fcsv.[C3] = "Comnentaire"
fcsv.[C4] = "4"
fcsv.[C5] = ftxt.[C2] * 1000
fcsv.[B6] = ftxt.[C2] * 1000

En fait ça me met tout en colonne A, et ce qui devrait être en colonne B ou C se retrouve quand même dans la colonne A, voici ce que j'ai dans mon .csv :

En A1 : Sensor,Index EDF Mois-1,Index EDF Mois
En A2 : Dossier,Previsionnel,Previsionnel
En A3 : Commentaire,Comnentaire,Comnentaire
En A4 : ,3,4
En A5 : 31/05/2018,,2382047000
En A6 : 30/06/2018,2382047000,

En fait, à la place de me changer de colonne, il ma rajoute une virgule mais reste dans la colonne A...

Merci d'avance pour votre aide !
A voir également:

3 réponses

JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4
1 juin 2018 à 19:56
J'ai une solution mais je ne l'ai jamais fais en macro.
Je te donne la solution manuelle peut être que tu trouveras le code qui va bien.

Sélectionnes les données de la colonne A (avec la souris bien sur)
De A1 à A6 pour ton cas
Dans l'onglet "Données", Convertir, Délimité, Suivant, Sélectionnes la virgule, Terminé.

Tes données seront dans les colonnes souhaitées.

Vois si tu peux retranscrire le code.
0
Ereudet Messages postés 23 Date d'inscription vendredi 18 mai 2018 Statut Membre Dernière intervention 13 septembre 2018
2 juin 2018 à 13:05
Ok merci, c'est justement de retranscrire cette solution en code que je trouve compliqué, tu as une idée ? Merci d'avance :)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 2 juin 2018 à 10:22
Bonjour,

C'est normal :
CSV = Comma Separated Value
i.e. : Valeurs séparées par des virgules

PS : ouvres ton fichier csv avec LibreOffice tu verras qu'il est correct.

0
Ereudet Messages postés 23 Date d'inscription vendredi 18 mai 2018 Statut Membre Dernière intervention 13 septembre 2018
2 juin 2018 à 13:04
D'accord merci. Comment faire pour que les valeurs apparaissent bien en colonnes B et C, en restant en .csv ? Merci d'avance
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
2 juin 2018 à 22:33
Au lieu d'ouvrir le fichier csv, faire :
Données/A partir du fichier texte/Délimité/virgule
0
JuanLucas38 Messages postés 57 Date d'inscription mardi 22 mai 2018 Statut Membre Dernière intervention 3 avril 2023 4 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
2 juin 2018 à 22:38
Le code est celui-ci. Par contre à toi d'adapter les cellules A1:A6 (données de départ)

Range("A1:A6").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True


Idem pour Array(1,1), Array(2,1) etc... le premier chiffre étant la colonne 1=A, 2=B 3=C etc... et le second la ligne
Vu que tu as 3 valeurs dans les , (virgules) il faut les 3 Array si tu en as plus il faudra les ajouter.
0
Ereudet Messages postés 23 Date d'inscription vendredi 18 mai 2018 Statut Membre Dernière intervention 13 septembre 2018
2 juin 2018 à 22:39
Le problème c'est que ce n'est pas moi qui vais ouvrir le fichier, c'est un programme qui va l'ouvrir pour l'intégrer dans une base de données, ma macro crée plus d'une centaine de fichier csv chaque mois, qui sont exportés sur un ftp, puis il sont ensuite intégrés dans une base de données, mais il faut que la forme soit correcte, avec les bonnes infos dans les différentes cellules des colonnes A, B, C. Donc là je l'ouvre à la main juste pour regarder que le forme est correcte. Pas évident je sais :/ si vous avez une autre idée, je suis preneur ! Merci :)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 2 juin 2018 à 22:46
Si c'est toi qui crée les csv, utilises comme séparateur le point virgule à la place de la virgule, il n'y aura pas de problème pour l'ouvrir avec Excel (à condition que ce soit Excel version française).
Sinon pour être plus universel il suffit d'utiliser le format .txt (plutôt que csv qui est spécifique à chaque pays)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
3 juin 2018 à 00:24
Pour ouvrir un csv anglais (séparé par des virgules) :
Set wbk = Workbooks.Open(Filename:=nomFichier, Format:=2, local:=False)


0