Import fichiers txt en commençant à la 5 lign
pipouche
-
pipouche -
pipouche -
Bonjour,
J'ai trouvé du code pour importer plusieurs fichiers txt, présents dans un même répertoire.
Le problème est que dans ces fichiers, qui ont la même structure, je ne veux pas importer les 4 premières lignes. J'ai essayé avec RowStart ou Range, mais je n'y arrive pas.
Voici le code actuel :
Dim Chemin As String
Dim I As Long
'Chemin du dossier à analyser (à adapter au besoin)
Chemin = ThisWorkbook.Path
'
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
If Right(Fichier.Name, 3) <> "xls" Then
LireFichier Fichier
End If
Next
'Conversion des données
'Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
'TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
'Semicolon:=False, Comma:=True, Space:=True, Other:=False
'Range("A5").Select
End Sub
Sub LireFichier(Fichier As Object)
Dim NL As Long, Chaine As String
Dim L As Long
'Insère le nom du fichier
L = ActiveSheet.Range("A65536").End(xlUp).Row
Cells(L + 1, 1).Value = Fichier.Name
'Récupère les lignes du fichier
Open Fichier For Input As #1
RowStart = 4
Do While Not EOF(1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
Close #1
End Sub
Merci ;))
J'ai trouvé du code pour importer plusieurs fichiers txt, présents dans un même répertoire.
Le problème est que dans ces fichiers, qui ont la même structure, je ne veux pas importer les 4 premières lignes. J'ai essayé avec RowStart ou Range, mais je n'y arrive pas.
Voici le code actuel :
Dim Chemin As String
Dim I As Long
'Chemin du dossier à analyser (à adapter au besoin)
Chemin = ThisWorkbook.Path
'
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
If Right(Fichier.Name, 3) <> "xls" Then
LireFichier Fichier
End If
Next
'Conversion des données
'Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
'TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
'Semicolon:=False, Comma:=True, Space:=True, Other:=False
'Range("A5").Select
End Sub
Sub LireFichier(Fichier As Object)
Dim NL As Long, Chaine As String
Dim L As Long
'Insère le nom du fichier
L = ActiveSheet.Range("A65536").End(xlUp).Row
Cells(L + 1, 1).Value = Fichier.Name
'Récupère les lignes du fichier
Open Fichier For Input As #1
RowStart = 4
Do While Not EOF(1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
Close #1
End Sub
Merci ;))
A voir également:
- Import fichiers txt en commençant à la 5 lign
- Comment réduire la taille d'un fichier - Guide
- Renommer des fichiers en masse - Guide
- Partager photos en ligne - Guide
- Fichiers epub - Guide
- Forcer la suppression d'un fichier - Guide
11 réponses
Tu as essayé en mettant une condition ?
Juste après le : Do While Not EOF(1)
Tu mets un :
if (numero ligne > 4) then
traitement
end if
Juste après le : Do While Not EOF(1)
Tu mets un :
if (numero ligne > 4) then
traitement
end if
En faisant ça, ça ne m'importe que la dernière ligne de mes fichiers txt, qui d'ailleurs ne comportent pas toujours le même nombre de lignes !
Juste pour être sûr que je ne me plante pas. ^^
Tu as fait :
Do while Not EOF (1)
NL = NL + 1
if(numero ligne > 4)
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
Tu as fait :
Do while Not EOF (1)
NL = NL + 1
if(numero ligne > 4)
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je l'avais oublié. ^^
Do while Not EOF (1)
NL = NL + 1
if(numero ligne > 4)
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
end if
Loop
Bloup ! :)
Do while Not EOF (1)
NL = NL + 1
if(numero ligne > 4)
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
end if
Loop
Bloup ! :)
Je te donnais la méthode pas la syntaxe exacte vu que je n'en suis pas sûr.
Numero de ligne n'existe pas. Mais je ne sais pas trop comment récupérer le numéro de la ligne.
Je pense à un truc tout con là. :/
Si tu fais :
NL = 4
Do while Not EOF (1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
Numero de ligne n'existe pas. Mais je ne sais pas trop comment récupérer le numéro de la ligne.
Je pense à un truc tout con là. :/
Si tu fais :
NL = 4
Do while Not EOF (1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
en mettant ça :
'Récupère les lignes du fichier
Open Fichier For Input As #1
NL = 4
Do While Not EOF(1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
j'ai l'erreur : fichier déjà ouvert
'Récupère les lignes du fichier
Open Fichier For Input As #1
NL = 4
Do While Not EOF(1)
NL = NL + 1
Input #1, Chaine
Cells(L + NL + 1, 1).Value = Chaine
Loop
j'ai l'erreur : fichier déjà ouvert
c'est ma faute j'avais oublié le : Close #1 après le loop, dédolée.
Mais bon, là il importe tout, il n'exclut pas les 4 premières lignes
Mais bon, là il importe tout, il n'exclut pas les 4 premières lignes
en enregistrant la macro pour un fichier, j'y parviens : c'est le code suivant :
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 29/07/2010 par Leroy Karine
'
'
Workbooks.OpenText Filename:= _
"D:\juxg3w\Mes Documents\capi\Nouveau dossier\PAYE0504.TXT", Origin:= _
xlWindows, StartRow:=5, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(4, 1), Array(5, 1), Array(16, 1), Array(17, 1), Array(22, 1), Array(23, 1), Array( _
28, 1), Array(29, 1), Array(34, 1), Array(35, 1), Array(40, 1), Array(41, 1), Array(46, 1), _
Array(47, 1), Array(53, 1), Array(54, 1), Array(59, 1), Array(60, 1), Array(65, 1), Array( _
66, 1), Array(71, 1), Array(72, 1), Array(78, 1), Array(79, 1), Array(84, 1), Array(85, 1), _
Array(91, 1), Array(92, 1), Array(98, 1), Array(99, 1), Array(106, 1), Array(107, 1), Array _
(112, 1), Array(113, 1))
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A:A,C:C,E:E,G:G,I:I,K:K").Select
Range("K1").Activate
ActiveWindow.SmallScroll ToRight:=8
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U").Select
Range("U1").Activate
ActiveWindow.SmallScroll ToRight:=8
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA").Select
Range("AA1").Activate
ActiveWindow.SmallScroll ToRight:=6
Range( _
"A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA,AC:AC,AE:AE,AG:AG"). _
Select
Range("AG1").Activate
Selection.Delete Shift:=xlToLeft
ActiveWindow.ScrollColumn = 1
Range("A13").Select
End Sub
Mais maintenant je ne sais pas comment l'intégrer pour que l'importation-conversion se fasse pour tous les fichiers de mon répertoire !
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 29/07/2010 par Leroy Karine
'
'
Workbooks.OpenText Filename:= _
"D:\juxg3w\Mes Documents\capi\Nouveau dossier\PAYE0504.TXT", Origin:= _
xlWindows, StartRow:=5, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(4, 1), Array(5, 1), Array(16, 1), Array(17, 1), Array(22, 1), Array(23, 1), Array( _
28, 1), Array(29, 1), Array(34, 1), Array(35, 1), Array(40, 1), Array(41, 1), Array(46, 1), _
Array(47, 1), Array(53, 1), Array(54, 1), Array(59, 1), Array(60, 1), Array(65, 1), Array( _
66, 1), Array(71, 1), Array(72, 1), Array(78, 1), Array(79, 1), Array(84, 1), Array(85, 1), _
Array(91, 1), Array(92, 1), Array(98, 1), Array(99, 1), Array(106, 1), Array(107, 1), Array _
(112, 1), Array(113, 1))
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("A:A,C:C,E:E,G:G,I:I,K:K").Select
Range("K1").Activate
ActiveWindow.SmallScroll ToRight:=8
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U").Select
Range("U1").Activate
ActiveWindow.SmallScroll ToRight:=8
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA").Select
Range("AA1").Activate
ActiveWindow.SmallScroll ToRight:=6
Range( _
"A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA,AC:AC,AE:AE,AG:AG"). _
Select
Range("AG1").Activate
Selection.Delete Shift:=xlToLeft
ActiveWindow.ScrollColumn = 1
Range("A13").Select
End Sub
Mais maintenant je ne sais pas comment l'intégrer pour que l'importation-conversion se fasse pour tous les fichiers de mon répertoire !