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

  • Initiateur de la discussion Initiateur de la discussion Chrystel01
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 =...
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"
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
794
Retour