Données Excel vers fichier texte pour générer fichier XML

Résolu/Fermé
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021 - 26 nov. 2021 à 09:49
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021 - 1 déc. 2021 à 12:00
Bonjour,
Je souhaiterais générer un fichier texte à partir de données présentes dans une feuille de calcul afin de pouvoir l'exporter vers un fichier XML.

Mon fichier final devrait faire 1700 lignes, impossible de faire un fichier xml à la main en venant compléter les données entre les balises pour chaque client.
Et impossible de venir faire référence à un schéma xml à partir d'excel je ne sais pas exporter.

Je me suis renseigné, on me réponds : qu'il n'existe pas d'outil qui permette d’exporter les données d’un fichier Excel vers un fichier XML qui répond aux exigences de la déclaration à la Banque Nationale.

Ci-dessous le code qu'il faudrait pouvoir générer
<Customer CustomerSequenceNumber="1" CustomerBankIdentification="52082299872">
		<CustomerIdentification>
			<NaturalPersonId>
				<RRNIdentification>52082299872</RRNIdentification>
			</NaturalPersonId>
		</CustomerIdentification>
		<CustomerActions>
			<AddAction>
				<Contracts>
					<Contract RelationSequenceNumber="1">
						<ContractTypeName>
							<InstalmentLoan/>
						</ContractTypeName>
						<CustomerStartDate>2014-01-01</CustomerStartDate>
					</Contract>
        </Contracts>
			</AddAction>
 		</CustomerActions>
  </Customer>


Structure du fichier Excel :

Colonne 1 CustomerSequenceNumber
Colonne 2 CustomerStartDate
Colonne 3 RN
Colonne 4 ContractTypeName
Colonne 5 CustomerBankIdentification (idem au RN)
Colonne 6 RelationSequenceNumber

1 2014-01-01 80010498302 InstalmentLoan 80010498302 1
2 2014-01-01 52081799432 InstalmentLoan 52081799432 2
3 2014-01-01 53051999271 InstalmentLoan 53051999271 3
4 2014-01-01 55110299580 InstalmentLoan 55110299580 4
5 2014-01-01 57040799718 InstalmentLoan 57040799718 5

Merci de votre aide
A voir également:

3 réponses

jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
26 nov. 2021 à 10:06
Bonjour,

Qu'as tu essayé ?
Sur quoi bloques tu ?

Car visiblement, une boucle sur chaque ligne de ta feuille permettrait de générer assez facilement le xml attendu puis de l'écrire dans un nouveau fichier.

Un truc du genre
Sub test()
    Dim xml As String
    Dim CustomerSequenceNumber  As String
    Dim CustomerStartDate As String
    Dim CustomerBankIdentification As String
    
    xml = "" ' variable qui contiendra le résultat final
    
    'Exemple de boucle de la ligne 1 à 20 de ta feuille
    For i = 1 To 20
        
        'exemple pour trois de tes variables.. à toi de compléter le reste
        CustomerSequenceNumber = Cells(i, 1).Value
        CustomerStartDate = Cells(i, 2).Value
        CustomerBankIdentification = Cells(i, 5).Value
        
        xml = xml & "<Customer CustomerSequenceNumber='" & CustomerSequenceNumber & "' CustomerBankIdentification='" & CustomerBankIdentification & "'>" _
                & "  <CustomerIdentification>" _
                & "    <NaturalPersonId>" _
                & "       <RRNIdentification>52082299872</RRNIdentification>" _
                & "    </NaturalPersonId>" _
                & "  </CustomerIdentification>" _
                & "  <CustomerActions>" _
                & "  <AddAction>" _
                & "      <Contracts>" _
                & "        <Contract RelationSequenceNumber='1'>" _
                & "           <ContractTypeName>" _
                & "<InstalmentLoan/>" _
                & "</ContractTypeName>" _
                & "<CustomerStartDate>" & CustomerStartDate & "</CustomerStartDate>" _
                & "</Contract>" _
                & "</Contracts>" _
                & "</AddAction>" _
                & "</CustomerActions>" _
          & "</Customer>"
    Next
    
    
    'Pour afficher le résultat dans la console
    Debug.Print xml
    
    'A la place, prévoir la génération d'un fichier text contenant ton xml. (fichier text que tu peux nommer  en .xml lors de la création )
    ' Voir : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/createtextfile-method
    
    
    

End Sub


0
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021
29 nov. 2021 à 14:23
Bonjour,
Cela génère bien ce que je souhaite obtenir mais tout est mis à la suite dans la fenêtre d'exécution.
Comment faire pour avoir un retour à la ligne à la fin de chaque ligne (après le > )
0
jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675 > malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021
29 nov. 2021 à 14:24
Et bien.. tu regardes le code que je t'ai donné aux lignes 42 et 43
0
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021 > jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024
1 déc. 2021 à 10:17
Code que je dois ajouter à la place de Debug.Print xml ?
Désolé je ne sais pas comment faire.
Merci de votre aide
0
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021 > malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021
1 déc. 2021 à 12:00
Voilà j'ai trouvé la solution

Dim FileNumber As Long
Dim FileName As String
 
FileName = "C:\Users\....\Desktop\exportXML.txt"
 
FileNumber = FreeFile
Open FileName For Output As #FileNumber
Print #FileNumber, xml 
Close #FileNumber


Si ça peut servir à quelqu'un
0
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021 > malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021
29 nov. 2021 à 15:13
Re,
J'ai ajouté & vbCrLf comme suit

Sub test()
    Dim xml As String
    Dim CustomerSequenceNumber  As String
    Dim RN As String
    Dim CustomerStartDate As String
    Dim CustomerBankIdentification As String
    Dim RelationSequenceNumber As String
    
    xml = "" ' variable qui contiendra le résultat final
    
    'Exemple de boucle de la ligne 1 à 20 de ta feuille
    For i = 2 To 201
        
        'exemple pour trois de tes variables.. à toi de compléter le reste
        CustomerSequenceNumber = Cells(i, 1).Value
        CustomerStartDate = Cells(i, 2).Value
        RN = Cells(i, 3).Value
        CustomerBankIdentification = Cells(i, 5).Value
        RelationSequenceNumber = Cells(i, 6).Value
        
        xml = xml & "<Customer CustomerSequenceNumber='" & CustomerSequenceNumber & "' CustomerBankIdentification='" & CustomerBankIdentification & "'>" _
               & vbCrLf & "<CustomerIdentification>" _
               & vbCrLf & "<NaturalPersonId>" _
               & vbCrLf & "<RRNIdentification>" & RN & "</RRNIdentification>" _
               & vbCrLf & "</NaturalPersonId>" _
               & vbCrLf & "</CustomerIdentification>" _
               & vbCrLf & "<CustomerActions>" _
               & vbCrLf & "<AddAction>" _
               & vbCrLf & "<Contracts>" _
               & vbCrLf & "<Contract RelationSequenceNumber='" & RelationSequenceNumber & "'>" _
               & vbCrLf & "<ContractTypeName>" _
               & vbCrLf & "<InstalmentLoan/>" _
               & vbCrLf & "</ContractTypeName>" _
               & vbCrLf & "<CustomerStartDate>" & CustomerStartDate & "</CustomerStartDate>" _
               & vbCrLf & "</Contract>" _
               & vbCrLf & "</Contracts>" _
               & vbCrLf & "</AddAction>" _
               & vbCrLf & "</CustomerActions>" _
               & vbCrLf & "</Customer>"
    Next
    
    
    'Pour afficher le résultat dans la console
    Debug.Print xml
    
    'A la place, prévoir la génération d'un fichier text contenant ton xml. (fichier text que tu peux nommer  en .xml lors de la création )
    ' Voir : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/createtextfile-method
    
    
    

End Sub


mais je n'ai que les 10 derniers (de 190 à 200) dans la fenêtre d'éxécution ce qui représente 200 lignes dans mon fichier xml

Il y a t-il une limite de ligne dans la fenêtre d'exécution ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
26 nov. 2021 à 11:01
Bonjour,

tu peux le faire directement d'Excel sans passer par un fichier texte:

Option Explicit
Sub vba_code_to_convert_excel_to_xml()
Dim wb As Object
Set wb = Workbooks.Open("C:\Users\LePivert\Documents\Customers.xlsx")
wb.SaveAs Filename:="C:\Users\LePivert\Documents\Customers.xml", FileFormat:= _
        xlXMLSpreadsheet, ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
'adapter les chemins

0
jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
26 nov. 2021 à 11:30
Salut pivert ..
La conversion en XML respectera le format attendu ? Je ne suis pas sûr...
0
malo1974 Messages postés 6 Date d'inscription vendredi 26 novembre 2021 Statut Membre Dernière intervention 1 décembre 2021
29 nov. 2021 à 10:34
Bonjour,
Merci pour vos retours, je teste et reviens vers vous asap.
Belle journée.
0