'exemple mixte lecture ecriture
'regrouper plusieurs fichiers text
Sub test()
Dim x1 As Integer, x2 As Integer, i As Long, dataline As String
x1 = FreeFile
fichier1$ = "C:\Users\polux\Desktop\monfichier.txt"
fichierfinal$ = "C:\Users\polux\Desktop\fichierfinal.txt"
Open fichierfinal For Append As #x1
x2 = FreeFile 'déclarer toujours le 2d freefile apres avoir ouvert le premier fichier
Open fichier1 For Input As #x2
While Not EOF(x2) 'lecture ligne par ligne dans une boucle while/wend
Line Input #x2, dataline 'on est tranquille on a pas a se soucier de la taille du fichier il est lu ligne par ligne
If dataline Like "*;33;*" Or dataline Like "*;06;*" Then Print #x1, dataline
Wend
Close #x2
End Sub
bonjour
oui c'est possible
mais vu la taille du fichier mieux vaut l'ouvrir en mémoire et lecture ligne par ligne
un exemple adapté de mon tuto 2011 à ta demande
te reste plus qu'a adapter les chemins de fichier
VB:'exemple mixte lecture ecriture 'regrouper plusieurs fichiers text Sub test() Dim x1 As Integer, x2 As Integer, i As Long, dataline As String x1 = FreeFile fichier1$ = "C:\Users\polux\Desktop\monfichier.txt" fichierfinal$ = "C:\Users\polux\Desktop\fichierfinal.txt" Open fichierfinal For Append As #x1 x2 = FreeFile 'déclarer toujours le 2d freefile apres avoir ouvert le premier fichier Open fichier1 For Input As #x2 While Not EOF(x2) 'lecture ligne par ligne dans une boucle while/wend Line Input #x2, dataline 'on est tranquille on a pas a se soucier de la taille du fichier il est lu ligne par ligne If dataline Like "*;33;*" Or dataline Like "*;06;*" Then Print #x1, dataline Wend Close #x2 End Sub
Sub test()
Const Path As String = "C:\Test\"
Dim cible As String, Source As String
Source = "Departement.csv"
cible = "Departement2.csv"
Const Champs As String = "Col1=Colonne_A Text" & vbCrLf & _
"Col2=Colonne_B Text" & vbCrLf & _
"Col3=Colonne_C Text" & vbCrLf
Dim Cn As Object
Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Path & "' ;Extended Properties=""text;HDR=YES;"""
If Dir(Path & cible) <> "" Then Cn.Execute "Drop Table [" & Replace(cible, ".", "#") & "]"
ShemaIni Path, Source, "Delimited(;)",Champs
ShemaIni Path, cible, "Delimited(;)", Champs, True
Cn.Execute "select * into [" & Replace(cible, ".", "#") & "] from [" & Replace(Source, ".", "#") & "] WHERE [Colonne_B] in('06','33')"
Cn.Close
MsgBox "Fin"
End Sub
Public Sub ShemaIni(Rep As String, Fichier As String, Delimited As String, Optional Champs As String = "", Optional Append As Boolean= False, Optional NewCsv As Boolean = False)
Dim txt As String
txt = "[" & Replace(Fichier, "#", ".") & "]" & vbCrLf & "Format=" & Delimited
If Champs <> "" Then txt = txt & vbCrLf & Champs
Dim FSO, NewFichier
Set FSO = CreateObject("Scripting.FileSystemObject")
Set NewFichier = FSO.OpenTextFile(Rep & "\schema.ini", Array(2, 8)(Abs(Append)), True)
NewFichier.Write txt
NewFichier.Close
If NewCsv = True Then
Set NewFichier = FSO.OpenTextFile(Rep & "\" & Replace(Fichier, "#", "."), 2, True)
NewFichier.Write ""
NewFichier.Close
End If
Set NewFichier = Nothing
Set FSO = Nothing
End Sub
Sub test()
Dim x1 As Integer, x2 As Integer, i As Long, dataline As String, expression
expression = Array("06", "33")
x1 = FreeFile
fichier1$ = "C:\Users\polux\Desktop\Departement.csv"
fichierfinal$ = "C:\Users\polux\Desktop\Departement2.csv"
If Dir(fichierfinal) <> "" Then Kill fichierfinal
Open fichierfinal For Append As #x1
x2 = FreeFile 'déclarer toujours le 2d freefile apres avoir ouvert le premier fichier
Open fichier1 For Input As #x2
While Not EOF(x2) 'lecture ligne par ligne dans une boucle while/wend
Line Input #x2, dataline 'on est tranquille on a pas a se soucier de la taille du fichier il est lu ligne par ligne
For i = LBound(expression) To UBound(expression)
Debug.Print ";" & expression(i) & ";"
If InStr(1, dataline, ";" & expression(i) & ";") > 0 Then Print #x1, dataline
Next
Wend
Close #x2
Close #x1
MsgBox "fin"
End Sub
Sub test()
Dim x1 As Integer, x2 As Integer, i As Long, dataline As String, colA, colB
colB = Array("06", "33")
colA = Array("Alpes-Maritimes", "La-Gironde")
x1 = FreeFile
fichier1$ = "C:\Users\polux\Desktop\Departement.csv"
fichierfinal$ = "C:\Users\polux\Desktop\Departement2.csv"
If Dir(fichierfinal) <> "" Then Kill fichierfinal
Open fichierfinal For Append As #x1
x2 = FreeFile 'déclarer toujours le 2d freefile apres avoir ouvert le premier fichier
Open fichier1 For Input As #x2
While Not EOF(x2) 'lecture ligne par ligne dans une boucle while/wend
Line Input #x2, dataline 'on est tranquille on a pas a se soucier de la taille du fichier il est lu ligne par ligne
For i = LBound(colA) To UBound(colA)
If InStr(1, dataline, colA(i) & ";" & colB(i) & ";") > 0 Then Print #x1, dataline
Next
Wend
Close #x2
Close #x1
MsgBox "fin"
End Sub
Sub test()
Dim x1 As Integer, x2 As Integer, i As Long, dataline As String, colonnes, colA, colB, X
colB = Array("06", "33")
colonnes = Array(1, 2) 'colonnes a récupérer
x1 = FreeFile
fichier1$ = "C:\Users\polux\Desktop\Departement.csv"
fichierfinal$ = "C:\Users\polux\Desktop\Departement2.csv"
If Dir(fichierfinal) <> "" Then Kill fichierfinal
Open fichierfinal For Append As #x1
x2 = FreeFile 'déclarer toujours le 2d freefile apres avoir ouvert le premier fichier
Open fichier1 For Input As #x2
While Not EOF(x2) 'lecture ligne par ligne dans une boucle while/wend
Line Input #x2, dataline 'on est tranquille on a pas a se soucier de la taille du fichier il est lu ligne par ligne
X = Split(dataline, ";")
For i = LBound(colB) To UBound(colB)
If X(1) = colB(i) Then Print #x1, X(0) & ";" & X(1)
Next
Wend
Close #x2
Close #x1
MsgBox "fin"
End Sub
'que les colonnes A et B
Cn.Execute "select Colonne_A,Colonne_B into [" & Replace(cible, ".", "#") & "] from [" & Replace(Source, ".", "#") & "] WHERE [Colonne_B] in('06','33')"
Non effectivement c'est le drame d'Excel !ok Robert merci pour ton explication
mais 06 revient toujours en 6 quand on ouvre le csv avec excel mais ça tu n'y peux rien je crois