XL 2013 Ouvrir dans excel un fichier .txt grâce au code VBA

Chrystel01

XLDnaute Occasionnel
Bonjour à tous,

J'ai une macro qui me permet d'ouvrir puis consolider des fichiers excel.
Je souhaiterais pouvoir faire la même consolidation quand les fichiers sont de type pdf.

J'ai donc ouvert un fichier pdf en enregistrant la macro correspondante que j'ai insérée dans mon code vba.
Mais cela ne fonctionne pas et je ne sais pourquoi.

Pourriez-vous svp m'aider ? Je vous joints le fichier si cela peut aider.

1616597746942.png




Je vous remercie d'avance

Bonne journée

Chrystel
 

Pièces jointes

  • CONSO.zip
    45.1 KB · Affichages: 6
Solution
Re

Je suis également sous Excel 2013
Il suffit de télécharger PowerQuery sur le site de Microsoft
(C'est un addon gratuit)

En VBA, c'est possible mais plus ergonomique avec PQ

Voici ce que donne mon engistreur de macros (pour 1 fichier)
VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\STAPLE\conso\ge05-m-RH-ABS-201910-20210322.txt" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "ge05-m-RH-ABS-201910-20210322"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword =...

Staple1600

XLDnaute Barbatruc
Bonsoir

Un possibilité avec PowerQuery
(Tout se fait à la souris)
Il faut choisir
1) A partir d'un dossier
2) Combiner et charger dans ...
Et voilà ce que cela donne

Ci-dessous la requête générée par PQ
VB:
let
    Source = Folder.Files("C:\Users\STAPLE\Documents\conso"),
    #"Fichiers masqués filtrés1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
    #"Appeler une fonction personnalisée1" = Table.AddColumn(#"Fichiers masqués filtrés1", "Transformer le fichier à partir de conso", each #"Transformer le fichier à partir de conso"([Content])),
    #"Colonnes renommées1" = Table.RenameColumns(#"Appeler une fonction personnalisée1", {"Name", "Source.Name"}),
    #"Autres colonnes supprimées1" = Table.SelectColumns(#"Colonnes renommées1", {"Source.Name", "Transformer le fichier à partir de conso"}),
    #"Erreurs supprimées1" = Table.RemoveRowsWithErrors(#"Autres colonnes supprimées1", {"Transformer le fichier à partir de conso"}),
    #"Colonne de tables développée1" = Table.ExpandTableColumn(#"Erreurs supprimées1", "Transformer le fichier à partir de conso", Table.ColumnNames(#"Transformer le fichier à partir de conso"(#"Exemple de fichier"))),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonne de tables développée1",{{"Source.Name", type text}, {"CODE_INDICATEUR", type text}, {"DATE_MESURE", type date}, {"MESURE", Int64.Type}, {"SOURCE_UO", type text}, {"UO", type text}, {"PERIODE_MESURE", Int64.Type}, {"PROGRAMME", type any}, {"OPERATION", type any}, {"MI_AXE_CODE1", type any}, {"MI_CODE1", type any}, {"MI_AXE_CODE2", type text}, {"MI_CODE2", type text}, {"MI_AXE_CODE3", type text}, {"MI_CODE3", Int64.Type}, {"MI_AXE_CODE4", type text}, {"MI_CODE4", type text}, {"MI_AXE_CODE5", type text}, {"MI_CODE5", type text}, {"MI_AXE_CODE6", type text}, {"MI_CODE6", type text}, {"MI_AXE_CODE7", type any}, {"MI_CODE7", type any}, {"MI_AXE_CODE8", type text}, {"MI_CODE8", type text}, {"MI_AXE_CODE9", type any}, {"MI_CODE9", type any}, {"MI_AXE_CODE10", type any}, {"MI_CODE10", type any}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each [DATE_MESURE] <> null and [DATE_MESURE] <> "")
in
    #"Lignes filtrées"
 

Staple1600

XLDnaute Barbatruc
Re

Je suis également sous Excel 2013
Il suffit de télécharger PowerQuery sur le site de Microsoft
(C'est un addon gratuit)

En VBA, c'est possible mais plus ergonomique avec PQ

Voici ce que donne mon engistreur de macros (pour 1 fichier)
VB:
Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\STAPLE\conso\ge05-m-RH-ABS-201910-20210322.txt" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "ge05-m-RH-ABS-201910-20210322"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
NB: Pour tester, ne pas oublier d'adapter le chemin du fichier texte.
 

Staple1600

XLDnaute Barbatruc
Re

Une autre façon de faire en VBA
(un peu plus courte ;))
VB:
Sub Macro2()
Dim wb As Workbook, strTxt$
strTxt = "C:\Users\STAPLE\conso\ge05-m-RH-ABS-201910-20210322.txt"
Workbooks.OpenText Filename:=strTxt, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, Tab:=True
Set wb = ActiveWorkbook
wb.Sheets(1).Copy
wb.Close False
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 244
Membres
102 834
dernier inscrit
nadusha