XL 2016 [Résolu] Combiner plusieurs fichiers XML dans Excel

Amilo

XLDnaute Accro
Bonsoir le forum,

Je cherche à combiner plusieurs fichiers .xml en un tableau .xlsx,
J'ai essayé avec Power query mais sans y parvenir,
Il doit certainement avoir une ligne de code en langage M, à saisir comme pour les fichiers .xls ou .xlsx mais cela ne fonctionne pas sur les fichers .xml,
J'ai également essayé de passer par le développeur puis "Importer" mais je ne peux sélectionner qu'un seul fichier.
Sinon, avez-vous svp une solution en VBA voire un Add-In excel prévu pour cela ?
Un Add-In dans l'autre sens m'intéresserait également à savoir de .xlsx vers .xml
Merci d'avance pour vos réponses,

Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, Amilo

@Amilo
A tester (mais pas sur du résultat)
Quand tu lances la macro, tu dois sélectionner un dossier contenant des fichiers *.xml
VB:
Sub Compiler_XMLs()
Dim wb_A As Workbook, WBKS As Workbook, strPath$, fXML$, i&
On Error GoTo ErrHandler
With Application.FileDialog(4)
  .AllowMultiSelect = 0: .Title = "Choisir le répertoire XML"
  If .Show = -1 Then strPath = .SelectedItems(1)
End With
If strPath = "" Then Exit Sub
Application.ScreenUpdating = False
Set wb_A = ThisWorkbook: i = 1
fXML = Dir(strPath & "\*.xml")
Do While fXML <> vbNullString
  Set WBKS = Workbooks.OpenXML(strPath & "\" & fXML)
  WBKS.Sheets(1).UsedRange.Copy wb_A.Sheets(1).Cells(i, 1)
  WBKS.Close False
  i = wb_A.Sheets(1).UsedRange.Rows.Count + 2
  fXML = Dir()
Loop
Application.ScreenUpdating = True
wb_A.Save
Exit Sub
ErrHandler:
MsgBox "Aucun fichier XML!", vbCritical, "Erreur"
End Sub
 

Amilo

XLDnaute Accro
Bonsoir Staple1600,

Merci pour votre proposition, le résultat est plutôt pas mal surtout sans avoir de fichiers exemple de ma part,
Cependant, les entêtes de colonnes sont dupliquées à chaque changement de fichier mais ce n'est pas trop gênant,
Le souci est surtout que les colonnes numériques sont dédoublées, une fois avec le titre "/Donnees_tableau/Tableau1/Saisie/Montant" et dans une 2ème colonne avec le titre "/Donnees_tableau/Tableau1/Saisie/Montant/#agg"
Et ceci a priori pour chaque colonne au format numérique.
Je chercherai à voir si mon formulaire de départ ne pose pas de problème et je me permettrais de revenir éventuellement avec 2 fichiers exemple en .xml
Merci encore pour votre réponse

Bonne nuit
 

Amilo

XLDnaute Accro
Re,

Finalement, j'ai pris le temps de créer 3 fichiers .xml en exemple,
Pour information, je suis parti d'un modèle du formulaire en pièce jointe "Exemple fact.pdf" pour générer mes fichiers xml via adobe acrobat XI Pro,
J'avoue que ce formulaire est encore en l'état de brouillon et je n'ai pas pris le temps de renommer correctement tous les objets ou champs dont le nom sera récupéré automatiquement dans les entêtes de colonne des fichiers xml/xlsx
Je vous mets également une capture d'écran du mappage XML de l'un des 3 fichiers pour voir sa structure (j'ai mis en rouge, les champs que j'aurais dû renommer correctement, sans parler du champ "Adresse du client" qui est en un seul bloc et que j'aurais dû diviser en plusieurs zones)
Sinon, on constate aussi, malgré un formatage des champs numériques dans le formulaire pdf, que le mappage génère plusieurs chiffres après la virgule.
Merci d'avance

Bonne nuit
 

Pièces jointes

  • Exemple Fact.pdf
    931.3 KB · Affichages: 36
  • Mappages XML_Fact Amilo.jpg
    Mappages XML_Fact Amilo.jpg
    147 KB · Affichages: 82
  • xml.zip
    1.8 KB · Affichages: 39
Dernière édition:

Amilo

XLDnaute Accro
Bonjour le forum, Staple 1600,
Je me permets de relancer le fil pour lequel je pense que ma dernière réponse avec les exemples a très certainement échappé à Staple1600,
Effectivement, je n'avais pas attendu le lendemain pour déposer quelques fichiers demandés par Staple1600 dans son message 4,
Merci d'avance
Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@Amilo
J'ai commencé par le commencement : l'enregistreur de macros
VB:
Sub Macro1()
    With ActiveWorkbook.XmlMaps("formulaire1_Mappage")
        .ShowImportExportValidationErrors = False
        .AdjustColumnWidth = True
        .PreserveColumnFilter = True
        .PreserveNumberFormatting = False
        .AppendOnImport = False
    End With
    ActiveWorkbook.XmlImport URL:= _
        "C:\Users\STAPLE\Documents\xml\Fact Serge.xml", ImportMap:=Nothing, _
        Overwrite:=True, Destination:=Range("$A$1")
End Sub
Avec cette macro, je n'ai pas de ce que tu revelais
Sinon, on constate aussi, malgré un formatage des champs numériques dans le formulaire pdf, que le mappage génère plusieurs chiffres après la virgule.
 

Amilo

XLDnaute Accro
Re,
Staple1600, effectivement je n'ai pas eu de problème de formatage en procédant par l'enregistreur de macro,
J'ai réessayé avec le code de votre tout 1er message et là également le formatage est finalement bon,
Je ne me souviens plus dans quel contexte cela donnait tout autre formatage.
J'ai cependant toujours les colonnes en doublon comma évoqué dans mon message #3,
Cordialement
 

Discussions similaires