Microsoft 365 Empecher la conversion EAN a l'ouverture CSV

merinos

XLDnaute Impliqué
Bonjour le Forum,

Dans le cadre du boulot, nous devons regulièrement ouvrir/importer des fichiers CSV contenant des EAN (suite de 18 chiffres)

Le problème est qu'Excel voit des "nombres" et effectue une conversion en nombres... ce qui effectue un arrondi... et on perd les derniers chiffres de l'EAN...
541449811000000011 => 5.41449E+17 => 541449811000000000
541449811000000012 => 5.41449E+17 => 541449811000000000
bref... impossible d'employer

on peut bien sûr transformer le query afin d'importer le colonne en texte... mais c'est une operétion manuelle
on peut aussi ouvrir dans le notepad , copier, déposer le mémoire en Excel puis convertir en colonnes... mais c'est aussi une opération manuelle


Quelqu'un connaitrait-il une methode pour empecher les conversions a l'ouverture des fichiers CSV?
Y aurait il setting a modifier quelque part?

Merci,
Merinos

PS: J'ai dû sauver mon CSV en TXT pour le charger ...




1647596886058.png
 

Pièces jointes

  • test CSV import.txt
    1.6 KB · Affichages: 9
Dernière édition:

Hasco

XLDnaute Barbatruc
Bonjour,

Je ne connais pas d'option pour ça mais en faisant l'importation par l'ancien assistant d'importation, à la troisième étape d'importation, on peut choisir le format des colonnes.

Avec l' enregistreur de macro, cela donne ces lignes :
VB:
Workbooks.OpenText Filename:= _
        "YY:\Chemin\Vers\Votre\Document\test CSV import.txt", Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
        Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array( _
        3, 2), Array(4, 2), Array(5, 1), Array(6, 4)), TrailingMinusNumbers:=True

Où "YY:\Chemin\Vers\Votre\Document\" est à adapter bien entendu.
1647599938761.png

Cordialement
 
Bonjour merinos, hasco, le forum

Je ne connais pas d'option pour ça mais en faisant l'importation par l'ancien assistant d'importation, à la troisième étape d'importation, on peut choisir le format des colonnes.
Cela ne marchera pas en exécution Vba, même si l'enregistreur de macro retourne le code, avec un Csv pour lequel Excel refuse l'ouverture en mode texte en Vba, par contre, on peut ouvrir le Csv en mode normal et appliquer ensuite une conversion de données sur la colonne A exactement selon le même principe.
Avant, on pouvait le faire quand même en renommant avant le fichier source en Txt mais je crois que cela ne fonctionne plus sur les dernières versions d'Excel.

Bien cordialement, @+
 

Hasco

XLDnaute Barbatruc
Re,

S'il a l'extension .txt la macro fonctionne. Par contre avec .csv celle-ci fonctionne chez moi.
VB:
Sub Import2()
'
' Import2 Macro
'

'
    Application.CutCopyMode = False
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;YY:\Chemin\Vers\Votre\Document\test CSV import.csv", Destination:=Range( _
        "$A$1"))
        .CommandType = 0
        .Name = "test CSV import"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Je suis passé par :

1647601572961.png


Cordialement
 
celle-ci fonctionne chez moi.
elle peut s'automatiser par Vba !

Bien cordialement, @+
Entièrement d'accord, c'est ce que je disais là.
Mais j'ai arrêté d'utiliser cette méthode pour des gros fichiers Csv, elle me provoque des vérolages aléatoires des fichiers Xlsb dans lesquels j'importe les données et je suis revenu à la bonne vieille conversion de données qui ne me pose aucun problème dans ce cas de figure sur ce type de fichier.

Bien cordialement, @+
 

merinos

XLDnaute Impliqué
Merci à tous,

Visiblement pas de methode générique.

Le probleme c'est que je recois des fichiers CSV avec des formats différents ... plus de 10 fois par jour.
Donc le VB ou le fichier "shema.ini" ou même le query...
(shema.ini : chic j'ai encore appris quelque chose, merci)


Dans les faits on passe par un nouveau query a chaque fois.

Je pensais a quelquechose qui ressemble aux settings de localisation pour les dates...
Un setting caché qui bloquerait la conversion des colonnes en nombre/date/...

Bref Merci...

Mérinos ( qui devra continuer de vivre comme cela)
 

Hasco

XLDnaute Barbatruc
RE,

Dans
des fichiers CSV avec des formats différents ...
Qu'est-ce qui change exactement:
Le nombre de colonnes ?
Les types de données des colonnes ?
Les noms de colonnes ?
L'order des colonnes ? (moins important ça!)
Pour les noms de fichiers, vous savez faire déjà, mais pour le reste, s'il y a récurrence ont peut peut-être faire une query qui choisisse une autre query en fonction d'une table de paramètres contenant la description des colonnes.

A voir...
 

merinos

XLDnaute Impliqué
Re @Hasco


ils me prennent déja pour un magicien avec mes query...

En fait tout peut changer: il s'agit d'extraits faits sur besoins specifiques depuis un systeme de gestion de l'énergie. il n'y a qu'une colonne semblable: l'EAN....

Tous les extraits "standards" sont gèrés par des query standards... qui convertissent correctement.

J'ai aussi la solution de faire exporter le résulat sous forme xlsx... mais pour des information standardissées. Donc au lieu d'exporte 5 colonnes à la demande, j'en mets 35.... et on rentre dnas le standards et donc l'Excel.

a+
 

Statistiques des forums

Discussions
302 098
Messages
2 000 373
Membres
214 829
dernier inscrit
Pierroth29