Problème ligne colonne VBA
Ereudet
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
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 !
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:
- Problème ligne colonne VBA
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Partager photos en ligne - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
3 réponses
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.
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.
Ereudet
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
Ok merci, c'est justement de retranscrire cette solution en code que je trouve compliqué, tu as une idée ? Merci d'avance :)
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.
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.
Le code est celui-ci. Par contre à toi d'adapter les cellules A1:A6 (données de départ)
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.
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.
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 :)
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)
Sinon pour être plus universel il suffit d'utiliser le format .txt (plutôt que csv qui est spécifique à chaque pays)