Copier/coller selon critère dans colonne
Bonjour,
Je possède deux fichiers: un fichier source .txt et un fichier de destination. Mon code actuel permet d'ouvrir le fichier source .txt et de copier coller le contenu entier dans mon fichier de destination.
Cependant, j'aimerais seulement importer les lignes qui possède le critère "xx" en colonne L du fichier source et pas toutes les lignes.
Voici mon code actuel:
Sub OpenImportFile()
Dim sFileName As String, DestFileName As String
Dim sBase As String, test As String
Dim sSuffix As String
Dim sExt As String
Dim shA As Worksheet
Dim i As Integer
Dim DEST As Range
Dim RowNb As Long, ColNb As Long
Dim dtDébut As Double, dtFin As Double, n As Integer
Dim dt As Double
DestFileName = ThisWorkbook.Name
Set shA = ThisWorkbook.Worksheets("Data")
shA.Cells.ClearContents
dtDébut = Worksheets("Paramètres").Range("B9").Value
dtFin = Worksheets("Paramètres").Range("B10").Value
n = dtFin - dtDébut
For i = 0 To n - 1
dt = Format(dtDébut + i, "yyyymmdd")
sBase = "F:\Fastnet\Fastnet2020\"
sExt = "FastnetI.fic"
sFileName = sBase & dt & sExt
test = Dir(sFileName)
If test <> "" Then
Workbooks.OpenText sFileName, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, Local:=True, DecimalSeparator:="."
' Set DEST = IIf(shA.Range("A1").Value = "", shA.Range("A1"), shA.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
RowNb = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
ColNb = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column
If i = 0 Then
ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(RowNb, ColNb)).Copy
Else
ActiveWorkbook.Worksheets(1).Range(Cells(2, 1), Cells(RowNb, ColNb)).Copy
End If
Workbooks(DestFileName).Worksheets("Data").Activate
If i = 0 Then
Cells(Application.Rows.Count, "A").End(xlUp).Select
Else
Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0).Select
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks(dt & sExt).Close savechanges = False
End If
Next
End Sub
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonjour,
Le fichier est importé en bloc, dans sa totalité, il n'est pas possible de préciser des critères au moment de l'import.
Le traitement doit se faire en 2 étape :
> import des données texte dans Excel (ce qui est fait)
> traitement dans Excel sur les données importées, pour ne retenir que les lignes voulues (par exemple en appliquant un filtre sur la colonne L). Cette opération est automatisable en VBA. Si besoin, utiliser l'enregistreur automatique de macro pour récupérer et adapter le code.
Bouben