Difficile de paramétrer OpenText lors d'un import CSV

CAPRI_456

XLDnaute Occasionnel
Bonjour le Forum,


J'ai quelques soucis lors de l'imporation de CSV vers XLS


Mon code est :

Workbooks.OpenText (Chemin0) & lefichier, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
Other:=True, _

OtherChar:=","

Cependant, le résultat en XLS est décalé dans les colonnes .
Cela est probablement du au contenu de certains champs CSV :
a) qui reprennent par exemple un poids indiqué comme suit (4.762)
(exemple Box,4.762, ZMU,,,FISHER)
Il me répartit alors 4 dans une col et 762 dans la suivante cela augmente le nombre de colonnes dans XLS et provoque des décalages dans les autres lignes du tableur...


Comment remédier cela dans les paramètres d'OpenText ?

Merci pour votre aide

CAPRI_456


 

Pierrot93

XLDnaute Barbatruc
Re : Difficile de paramétrer OpenText lors d'un import CSV

Bonjour Capri

essaye peut être ainsi, non testé...

Code:
Workbooks.OpenText (Chemin0) & lefichier, _
    DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, comma:=True

bon après midi
@+
 
G

Guest

Guest
Re : Difficile de paramétrer OpenText lors d'un import CSV

Bonjour tous,

Peut être en rajoutant une précision sur le séparateur décimal des données.
Code:
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
Other:=True, _
OtherChar:=",", _
local:=True, _
[B][COLOR=red]DecimalSeparator := "."[/COLOR][/B]

A+ à tous
 

Bebere

XLDnaute Barbatruc
Re : Difficile de paramétrer OpenText lors d'un import CSV

bonjour Capri,Hasco,Mj,Pierrot

essaye ce code,testé

Sub ImportInfoTxt()
Dim wS As Worksheet
Set wS = Sheets("Import")

wS.Cells.ClearContents

Filename = Application.GetOpenFilename(filefilter:="Fichiers txt (*.txt), *.txt", Title:="Choisir le fichier txt")
If UCase(Filename) = "FAUX" Then
MsgBox "Opération annulée"
Exit Sub
End If

Set qtQtrResults = _
wS.QueryTables.Add(Connection:="TEXT;" & Filename, Destination:=wS.Cells(1, 1))
With qtQtrResults
.TextFileParseType = xlDelimited
.TextFileOtherDelimiter = "\"
.Refresh
End With

AjoutFeuille1
End Sub

à bientôt
 

CAPRI_456

XLDnaute Occasionnel
Re : Difficile de paramétrer OpenText lors d'un import CSV

Bonjour Le Forum,
Pierrot, MJA3 , HASCO,

J'ai tenté successivement vos propositions,

Il m'affiche toujours pour:

les poids 0002.452 (soit 2kgs 452 gr) ou
les volumes 0000.192 (soit 0 M3 192 cm3)
2 dans une col et 452 dans celle qui suit
0 dans une col et 192 dans celle qui suit
Il ne s'agit donc pas de décimales mais de séparateur de milliers

Je vais donc tester ThousandsSeparator:="."

et pour les montants 0000000123.75 (soit 123 € 75 cents)
DecimalSeparator:="."

Cependant, je me demande comment excel va appliquer cela à l'une ou à l'autre colonne puisqu'il s'agit dans les deux cas du séparateur "."

Je vais tester...
Ouuppps voilà que j'ai pas le temps d'assimiler avant le boulot que voilà notre ami Bebere qui s'est levé dès 05h43;) (j'te dis pas) du mat pour me fournir une autre proposition.....

Je vois tout cela et reviens à vous

Merci à tous pour votre soutien

CAPRI_456


 

MJ13

XLDnaute Barbatruc
Re : Difficile de paramétrer OpenText lors d'un import CSV

Bonjour Capri, Pierrot, Ges , Bebere

Sinon il y a une autre façon de procéder.

Comme un fichier Csv a en général toujours la même structure (pour un type d'application), tu peux essayer de renommer le .csv en .txt.

Puis tu lances Henry (Henry Gistrair de Macrow),tu ouvres ton fichier txt et tu testes les différents assitants d'import pour voir celui qui convient.

Ensuite tu arrêtes Henry, et tu récupères le code.

Normalement cela devrait te faire gagner du temps, à condition que ton fichier ai les bon délimiteurs.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff

CAPRI_456

XLDnaute Occasionnel
Re : Difficile de paramétrer OpenText lors d'un import CSV

Bonjour yeahou, Pierrot93, Mj13, Hasco, Bebere, le forum,


J'ai pour mon application utilisé "HENRY"(Henry Gistrair de Macrow);), proporsée par MJ13comme suit :

A- CODE QUI renomme LES CSV en TXT
lefichierCSV = Dir(CheminCSV)
While lefichierCSV <> "" ' s'il existe un fichier

If Right(lefichierCSV, 3) = "csv" Then ' UNIQUEMENT SI CSV
' alors renomme CSV en TXT dans répertoire TXT

Name CheminCSV & "\" & lefichierCSV As CheminTXT & "\" & Left(lefichierCSV, Len(lefichierCSV) - 4) & ".TXT"
End If
lefichierCSV = Dir() ' pour affecter le nom de fichier suivant dans

Wend


'B === CODE QUI CONVERTIT LES TXT en XLS à l'ouverture
B1) recherche de fichiers dans un répertoire (sur le Forum)

Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(CheminTXT)
Set fc = f.Files

For Each f1 In fc
If UCase(f1.Name) Like "*.TXT" Then

lefichierTXT = Dir(CheminTXT)

B2 -méthode "OPENTEXT"

Code obtenu grâce à "HENRY";) qui permet de paramétrer les datas à l'importation.

Workbooks.OpenText (CheminTXT) & lefichierTXT _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), _
Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array( _
41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1)) _
, TrailingMinusNumbers:=True



Résultat parfait qui restpece dates, décimales, milliers,....

Merci à tous, au Forum,

CAPRI_456