Sub ImportationFichierXML() ' version de septembre 2021
'Des portions de code sont issues ou adaptées du forum Excel Downloads,d'exemples lus sur des sites internet ou dans des livres VBA
Dim Fichier_XML As String, WBK As Workbook, Feuil As Worksheet
Dim Contenu_XML As Variant, colonnes
Fichier_XML = ThisWorkbook.Path & "\ESPPADOM_TEST_5.xml"
Application.ScreenUpdating = False
'Ouverture du fichier XML dans un nouveau classeur ne contenant qu'une feuille
With ActiveSheet.QueryTables.Add(Connection:="FINDER;" & Fichier_XML, Destination:=Workbooks.Add(1).Sheets(1).Cells(1))
.FillAdjacentFormulas = False
.PreserveFormatting = True
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.AdjustColumnWidth = True
.RefreshPeriod = 0
.Refresh BackgroundQuery:=False
End With
'On définit le nouveau classeur
Set WBK = Workbooks(ActiveWorkbook.Name)
'On définit la feuille de travail
Set Feuil = WBK.Sheets(WBK.Sheets.Count)
Feuil.Activate
'Ajustement des lignes et nettoyage des données
Feuil.Rows("1:2").EntireRow.Delete
Feuil.Cells.RowHeight = 15
Feuil.Columns(105).Delete
'Remplissage du tableau en mémoire : Contenu_XML
Contenu_XML = Feuil.UsedRange.Value
'Effacement de la feuille
Feuil.UsedRange.ClearContents
'Choix des colonnes à garder dans un tableau en mémoire: colonnes
colonnes = Array(84, 87, 89, 85, 110, 116, 119, 123, 126)
'Restitution de la sélection des données issues du fichier XML initial
Feuil.Range("A1").Resize(UBound(Contenu_XML), 9).Value = Application.Index(Contenu_XML, Evaluate("Row(1:" & UBound(Contenu_XML) & ")"), colonnes)
'Mise en forme esthétique
Feuil.Range("E:F").NumberFormat = "0.00"
Feuil.UsedRange.EntireColumn.AutoFit
'reste à faire: Enregistrer sous => Format XLSX ou PDF puis envoi par mail
End Sub