excel et csv.... mystère

falkner glact

XLDnaute Junior
Bonjour à tous,

Bon, par quoi et pour où commencer ! J'extrais d'une application un résultat au format *.csv.

Je souhaite compléter ce document par des informations extraites d'un fichier excel.

Dans mon csv je vais avoir par exemple, date, N°, nom de contrepartie...

Dans mon excel j'ai les informations qui iront compléter le csv....

Mon souci maintenant : quand j'essaye d'importer mon csv dans l'outil il me dit qu'il me manque des colonnes./.... après vérification, je m'aperçois en effet, qu'il me manque un paquet de séparateur de type ";".... imaginez que mon csv possède 80 colonnes donc 80; les uns à côté des autres....et que je doive y mettre des informations extraites d'un xls.... je pleure !

Que me conseillez vous pour traiter ce fichier merdi.... simplement dans excel et comment dire à excel "Attention, il faut OBLIGATOIREMENT que tu ajouter des ";" après chaque information, sachant qu'une colonne n'est pas forcément complétée....

J'ai été clair là... j'en doute.

Enfin, je répond à toutes vos questions.

Super à vous si vous pouvez m'aider... si non, bah merci quand même d'avoir lu

Falkner ;)
 

RENAUDER

Nous a quitté
Repose en paix
Re : excel et csv.... mystère

Bonjour,

Ce qui peut arriver c'est que tu es des libellés avec une virgule et ça strappe toute la suite.
Par exemple j'avais un champ dia,27 et bien tout ce qui était à droite de la virgule n'était pas retourné dans Excel.
Ce que j'ai fait j'ai utilisé un autre code ci-joint.

Il faut avoir un classeur vide et cela va tout copier dans ce classeur.
Il faut également une référence Microsoft ActiveX Data Objects 2.7 ou 2.8 (ADO)
L'appel du code
Code:
    GetTextFileData "SELECT * FROM REPORT_GIF_new.csv", "C:\Excel\5-1-1-1 SAP-Synthèse carnet", Range("A1")

Le code appellé
Code:
Sub GetTextFileData(strSQL As String, strFolder As String, rngTargetCell As Range)
    ' example: GetTextFileData "SELECT * FROM filename.txt", "C:\FolderName", Range("A3")
    ' example: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria'", "C:\FolderName", Range("A3")
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer
    If rngTargetCell Is Nothing Then Exit Sub
    Set cn = New ADODB.Connection
    On Error Resume Next
    cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
            "Dbq=" & strFolder & ";" & _
            "Extensions=asc,csv,tab,txt;"
    On Error GoTo 0
    If cn.State <> adStateOpen Then Exit Sub
    Set rs = New ADODB.Recordset
    On Error Resume Next
    rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
    On Error GoTo 0
    If rs.State <> adStateOpen Then
        cn.Close
        Set cn = Nothing
        Exit Sub
    End If
    ' the field headings
    For f = 0 To rs.Fields.Count - 1
        rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name
    Next f
    rngTargetCell.Offset(1, 0).CopyFromRecordset rs    ' works in Excel 2000 or later
    'RS2WS rs, rngTargetCell ' works in Excel 97 or earlier
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
 
Dernière édition:

falkner glact

XLDnaute Junior
Re : excel et csv.... mystère

Bonjour à tous, à renauder particulièrement et que je n'avais pas remercier pour son aide.
Mon problème est "peut-être" simple et c'est peut être moi qui m'y prends mal.

1 - Je souhaite constituer un stock de données existantes sous excel, quelques colonnes de dates, chiffres et textes.

2 - je souhaite importer ce stock dans un soft qui n'accepte QUE du csv. A partir de ce soft qui est une base de données, j'extrait un template vierge (avec des colonnes communes à mon stock existant) au format csv.

3 - je souhaite copier/coller ces colonnes dans le csv précédement extrait afin d'éviter bien entendu d'avoir à tout me taper (800 lignes) à la main directement dans le masque de saisie.

4 - après manip (copie/colle) j'essaye d'importer dans le soft. Un message d'erreur me dit
"ce fichier ne peut pas être importé car la ligne 17 ne contient pas 84 colonnes".

Après vérification dans un editeur de texte je me rends compte en effet, qu'il me manque une floppée de séparateur (;) à la fin de la ligne 17, 18.... etc . Si je compléte des séparateurs manquants, l'import peut normalement se faire

--->> taaa taaa taaa !!!!

Ma question ! comment faire pour ne pas à avoir me prendre la tête et pouvoir importer mes données dans le masque sans avoir à faire 10.000 manip de contrôle qui me prennent un temps fou et qui, au final, ne m'assure même pas d'un travail correct.

Merci d'avoir tout lu ;-)

A votre dispo pour vous fournir ce que vous voulez

falkner
 

mromain

XLDnaute Barbatruc
Re : excel et csv.... mystère

bonjour le fil,

voici un code qui peut peut-être t'aider :
il crée un fichier csv avec tous les séparateurs.
Code:
Sub test()
fichierExport = "E:\aMiki\XLS\test\exportCsv.csv"

Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.CreateTextFile(fichierExport, True)

For iRow = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    ligneCsv = ""
    For iCol = 1 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
        ligneCsv = ligneCsv & ActiveSheet.Cells(iRow, iCol).Text & ";"
    Next iCol
    csvFile.WriteLine (Left(ligneCsv, Len(ligneCsv) - 1))
Next iRow
End Sub

a+
 

Catrice

XLDnaute Barbatruc
Re : excel et csv.... mystère

Bonjour,

J'avoue que les explications ne sont pas tres claires pour moi.
Mais j'ai compris que tu voulais créer un CSV avec un nombre défini de colonnes (donc de points virgules) meme si les cellules sont vides.

Tu peux le faire en selectionnant la zone souhaitée et en appliquant un format ou un encadrement aux cellules et enregistrant en CSV

Le code suivant enregistre un CSV avec 84 points virgules :

Sub Test()
ActiveWorkbook.Sheets(1).Range("A1:CF10").Borders.LineStyle = xlContinuous
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\toto", FileFormat:=xlCSV, local:=True
End Sub
 

falkner glact

XLDnaute Junior
Re : excel et csv.... mystère

je crois avoir trouvé.... en fait il faut appliquer cette macro a un fichier xls et non pas csv comme je tentais de le faire.

en changeant le nom du fichier dans lequel j'exécute la macro, aucun message d'erreur et le fichier csv est crée.

reste à voir maintenant si je peux l'importer... suite dans quelques minutes ;-)
 

falkner glact

XLDnaute Junior
Re : excel et csv.... mystère

Bonjour Catrice,

Je souhaite intégrer dans un fichier CSV des informations (en provenance d'une feuille excel, date, données, texte) puis importer ce CSV dans mon application ; toutes les colonnes du CSV ne sont pas nécessairement remplies. Or, il apparait que lorsque j'ajoute des informations, il manque toujours des ; à la fin ce qui génére des erreurs et l'impossibilité d'importer.

En gros, je crois qu'il faut formater le doc excel au format csv et faire des copier coller des colonnes qui m'interessent DANS le CSV existant.... c'est plus clair ?

PS : j'ai en effet un CSV de 84 colonnes , je souhaite intégrer ca et là des informations que je souhaite importer au format CSV
 

Discussions similaires

Réponses
1
Affichages
435

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 698
dernier inscrit
miespetico