Importer des lignes précises d'un fichier txt mise en forme
Bonjour à tous,
J'ai une macro qui fonctionne assez bien mais qui est beaucoup trop lourde, et fais ramer mon fichier. J'aimerais aussi modifier ma macro et faire en sorte qu'il ne m'importe que des données précises du fichier txt.
Je m'explique, mon fichier txt est composé de cinq colonnes. Dans la 3ème colonne, est renseigné un nom de groupe, on va dire A, B ou C.
Dans mon fichier excel j'aurai une feuille pour chaque type de groupe. Le nom du groupe est renseigné en H2.
J'ai besoin que lors de l'importation, mon code lise le fichier txt, et qu'il ne m'importe que les données du groupe renseigné en h2.
Donc si dans la 3ème colonne la valeur est égale à H2 on importe la ligne. Sinon on importe pas.
L'importation se fait dans un modèle de tableau qui contient plein de formules, qui va me permettre d'effectuer des calculs. Ce modèle est disponible dans mon classeur sous une feuille appelé "modèle". Au début de ma macro, j'ouvre une nouvelle feuille, puis j'effectue le copier coller de mon modèle au fur et à mesure car l'importation de mon ficher txt me décalais tout.
Si vous avez des conseils pour tout me simplifier, et réaliser l'importation selon la valeur d'une cellule précise, je suis à l'écoute et dans tous les cas je continue mes recherches.
Merci à tous
Sub NouvellefeuilleContrôle()
Dim feuille As Worksheet
Dim formules_modèles As Range
Dim nom As String
Dim Fichiertxt As Variant
Sheets.Add after:=Sheets(Sheets.Count) 'nouvelle feuille vierge
Set feuille = ActiveSheet
'assignation feuille active
Sheets("convention").Select
nom = Application.InputBox("Sélectionnez une Orientation de Gestion dans la feuille Convention ", "Orientation de Gestion", Type:=2)
If nom = "Faux" Or nom = "" Then Exit Sub
MsgBox ("Le nom que vous avez séléctionné est : " & nom)
feuille.Name = nom
feuille.Select
Range("A1").Value = nom
feuille.Select
MsgBox ("Sélectionnez le fichier d'allocation")
Fichiertxt = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If Fichiertxt <> False Then
With feuille.QueryTables.Add(Connection:="TEXT;" & Fichiertxt, Destination:=Range("$A$19"))
.Name = nom
.FieldNames = True
.PreserveFormatting = True
.SaveData = True
.AdjustColumnWidth = True
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileSemicolonDelimiter = True
.Refresh BackgroundQuery:=False
End With
End If
'formatage suivant modèle SELECTION
Sheets("Modèle").Cells.Copy
feuille.Cells.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Sheets("Modèle").Select
Range("H19:U43").Select
Selection.Copy
feuille.Select
Range("H19").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("Modèle").Select
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 1
Range("A2:U18").Select
Application.CutCopyMode = False
Selection.Copy
feuille.Select
Range("A2:U18").Select
ActiveSheet.Paste
Range("B12").Select
End Sub