Bonjour,

J'ai trouve ce script qui me permets de fusionner des fichiers cvs.
Ceci par exemple pour importer ce fichier dans des base de données (à cause des restrictions de colonnes dans excel)

Elle fonctionne bien à un détail près je pense...a vous de me le dire

Je constate que pour certains enregistrements j'ai des shifts dans la data ?
Est-ce que c'est à cause du fait que j'ai parfois beaucoup de rubriques qui pour l'instant ne contiennent pas de data ?

Je me pose des questions sur la partie inputline="" et outputline ?

Qu'en pensez-vous ?

BAV

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Option Explicit
 
public const ForReading = 1
public const ForWriting = 2
public fso, OutputFile, ProcessedFile
 
dim Folder, Files, File
 
set fso = CreateObject("Scripting.FileSystem* Object")
set Folder = fso.GetFolder(".")
set Files = Folder.Files 
OutputFile = "output.csv"
 
CreateProcessedFile(OutputFile)
 
for each File in Files
    if isCSV(File.Name) and File.Name <> OutputFile then
        Process(File.Name)
    end if
next
 
Function isCSV(FileName)
    dim arrFilename
    arrFilename = split(FileName,".")
    if ubound(arrFilename) > 0 then
        if lcase(arrFilename(ubound(arrFilena* me))) = "csv" then
            isCSV = true
        else
            isCSV = false
        end if
    end if
End Function
 
Function CreateProcessedFile(FileName)
    Set ProcessedFile = fso.CreateTextFile(".\" &FileName, true)
End Function
 
Function Process(FileName)
    dim NextLine, Output, InputLine, TextFile
    set TextFile = fso.OpenTextFile (".\" & FileName, ForReading)
    set ProcessedFile = fso.OpenTextFile (".\" & OutputFile, ForReading)
 
    if ProcessedFile.AtEndOfStream then
        while not TextFile.AtEndOfStream
             if not ProcessedFile.AtEndOfStream then
                InputLine = ProcessedFile.Readline
             else
                InputLine = ""
             end if
             NextLine = TextFile.Readline
             Output = Output & NextLine & vbcrlf
        wend
    else
        while not TextFile.AtEndOfStream
             if not ProcessedFile.AtEndOfStream then
                InputLine = ProcessedFile.Readline
             else
                InputLine = ""
             end if
             NextLine = TextFile.Readline
             Output = Output & InputLine & "," & NextLine & vbcrlf
        wend
     end if
     WriteProcessedFile(Output)
End Function
 
Function WriteProcessedFile(Contents)
    dim TextStream
    Set ProcessedFile = fso.GetFile(".\" & OutputFile)
    Set TextStream = ProcessedFile.OpenAsTextStream(For* Writing,-2)
    TextStream.Write Contents
    TextStream.Close
End Function

___

J'ai trouvé ; c'est le "," qui me posait problème = ";'