[VBA] Récupérer les données XML d'une cellule excel
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

[VBA] Récupérer les données XML d'une cellule excel



  1. #1
    invite5420aad7

    Unhappy [VBA] Récupérer les données XML d'une cellule excel


    ------

    Bonjour,



    Je cherche une solutions pour le problème que j'enonce ci-dessous :
    Je lance des requetes via SOAP UI et j'ai la possibilité de récupérer des bouts de code XML dans une cellule Excel, exemple :

    Le tableau est comme suit :
    A B
    IdClient1 XML1
    IdClient2 XML2
    idClient3 XML3

    et le XML1 est de cette forme :

    Code:
    "
    <PivotContrat>
      <NumeroContrat>NumContrat1
         <NumeroAvenant>Avenant1</NumeroAvenant>
         <NumeroAvenant>Avenant2</NumeroAvenant>
         <NumeroAvenant>Avenant3</NumeroAvenant>
      </NumeroContrat>
      <NumeroContrat>NumContrat2
         <NumeroAvenant>Avenant1</NumeroAvenant>
      <NumeroContrat>NumContrat3</NumeroContrat>
    </PivotContrat>"
    Et le tableau final après execution de la macro doit etre sous cette forme ci (dans une nouvelle feuille) :

    A B C
    IdClient1 Numcontrat1 Avenant1
    IdClient1 Numcontrat1 Avenant2
    IdClient1 Numcontrat1 Avenant3
    IdClient1 Numcontrat2 Avenant1
    IdClient1 Numcontrat3
    IdClient2 Numcontrat1 Avenant1
    IdClient3

    Une ligne représente un cas avec un Id Client, un contrat, un avenant au contrat
    L'id Client est toujours renseigné dans le dernier tableau, mais il peut ne pas y avoir de contrat dans ce cas le champs contrat est vide ou pas d'avenant dans ce cas le champs avenant est vide.

    Je récupère l premier tableau à partir d'une automatisation de test SOAP UI.
    J'ai pu ave cun code reussi rà fair ele tableau final partir d'un fichier, mais je ne peux pas génré un fihcie rpour chaque client il y aurait au moins 200 cas de test, je ne peux pas créer 200 fichiers d'où le fait que l'on récupère le bout d'XML qui interesse dans une cellule excel.

    J'essai donc d'adapter mon code de lecture et récupération d'info dans un fichier xml pour le xml dans une cellule mais je ne sais pas pourquoi ca coince, ci-dessous le code :

    Code:
    Sub Lire()
     
    'Initialisation du parseur
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
     
    'Ouverture du fichier xml
    xmlDoc.Async = "false"
    xmlDoc.Load ("WS\Projets\CCEV3\ReponseCCEV3")
     
    'Declaration d'un compteur de Numero de compte
    Dim i As Integer
    i = 2
     
    'On récupère tous les noeuds PivotContrat dans le xml
    For Each PivotContratElement In xmlDoc.SelectNodes("soapenv:Envelope/soapenv:Body/ser-root:getDataResponse/PivotContrat")
     
    'On recupere les NumContrat
    NumeroContrat = PivotContratElement.SelectSingleNode("NumeroContrat").Text
    Cells(i, 7) = NumeroContrat 'Ecris le numéros de contrat sur la colonne G
     
    'MsgBox "NumeroContrat : " & NumeroContrat, vbOKOnly + vbInformation, "Test"
     
    i = i + 1
    Next
     
    'Destruction du parseur
    Set xmlDoc = Nothing
     
    End Sub
    Pour le moment je veux juste récupérer les Numero de contrat d'un client à partir d'une cellule
    Ce qui se passe c'est qu'il n'entre pas dans la boucle "For Each", il ne retourne aucune erreur.
    Quand je copie/colle le xml qui est ans excel dans notepad je me rend compte que excell met des " et je pense que 'est ce qui l'empêche de voi que c'est du xml.
    Quand je copie ce qui vient de excel dans notepad que j'enleve les "" et enregistre el fichier le code arrive à lire l efichier, mais quand j'essaie d'enlever les " dans excel, excel me dit qu'il n'y a pas de guillement et je ne sais pas comment faire.
    Les " se trouve au début et à la fin du XML comme suit :
    "XML"

    Merci our votre aide je suis preneuse de solutions.

    Bien cordialement.

    -----

  2. #2
    invite0bbe92c0

    Re : [VBA] Récupérer les données XML d'une cellule excel

    Bonjour,

    Citation Envoyé par bbdoll Voir le message
    Ce qui se passe c'est qu'il n'entre pas dans la boucle "For Each", il ne retourne aucune erreur.
    t.
    Tu es sur de la syntaxe X-Path passée en argument à la méthode SelectNodes ?
    Tu l'as essayée séparément ? (hors VBA).

  3. #3
    invite5420aad7

    Re : [VBA] Récupérer les données XML d'une cellule excel

    Bluedeep

    Re : [VBA] Récupérer les données XML d'une cellule excel
    Bonjour,

    Tu es sur de la syntaxe X-Path passée en argument à la méthode SelectNodes ?
    Tu l'as essayée séparément ? (hors VBA).
    Non au début, je voulais faire ca depuis SOAP UI mais je ne maitrise pas les scipt Groovy du tout, et je n'ai pas trouvé d'aide.
    C'est pour ca que j'ai préféré exporter le xml dans un tableau excel et d'autre données (IdClient).
    D'où le problème de récupérer le ode xml. Mais quand je passe en entrée un fichier xml de la meme forme il arrive à récupérer les données, je voudrais juste que ctte fois ci le xml il le récupère dans une cellule.
    Mais le problème c'est que la celule elle met des " au debut et à la fin du coup il ne voit lus le xml.

    Ah sinon en fait tu as raison j'ai pas donné le bon code ca c pour lire dans el fichier :
    voilà pour lire dans al cellule

    Sub LireC()

    'Declaration des variables
    'Dim celluleCible, celluleOrigine As Range
    'Dim NumeroContrat, NumeroAvenant As Integer

    'Initialisation du parseur
    Set xmlDoc = CreateObject("Microsoft.XMLDOM ")

    'Declaration du compteur i
    Dim i As Integer
    i = 2
    'celluleOrigine commence à B2
    celluleOrigine = Cells(4, 2)


    'Ouverture du fichier xml
    xmlDoc.Async = "false"
    xmlDoc.Load (celluleOrigine)

    'On récupère tous les noeuds PivotContrat dans le xml
    For Each PivotContratElement In xmlDoc.SelectNodes("PivotContr at")

    'On recupere les NumContrat
    NumeroContrat = PivotContratElement.SelectSing leNode("NumeroContrat").Text
    Cells(i, 7) = NumeroContrat 'Ecris le code ptf sur la colonne G

    i = i + 1

    Next

    End Sub

  4. #4
    invite5420aad7

    Re : [VBA] Récupérer les données XML d'une cellule excel

    Bon,

    Je me suis dis que je pouvais essayer de mixer le deux solutions.

    L'idée étant de :
    1) créer un fichier xml,
    2) copier le contenu de la cellule dedans
    3) et vider le contenu du fichier

    J'ai rentrer les codes suivant :

    Code:
    Public Function EcrireXML(numLigne As Integer)
    Close
    Chemin = "\\#### anonymisé\donneessiege\User_data_PGEN\data\S832931\Desktop\Recette\WS\Projets\CCEV3"
    Open Chemin & "Tempo.xml" For Output As #1
    Print #1, Worksheets("Feuil1").Cells(numLigne, 2)
    Close
    
    End Function
    
    
    Sub EcrireInXML()
    
        Dim i As Integer
        i = 4
        EcrireXML (i)
    
    End Sub
    Mais lorsque je debug il ne me crée pas le fichier, si je crée le fichier à la main il n le rempli même pas.
    Donc je ne sais pas là où ca coince.

    Bien cordialement.
    Dernière modification par JPL ; 29/11/2016 à 15h56. Motif: à la demande de bbdoll

  5. A voir en vidéo sur Futura
  6. #5
    invite5420aad7

    Re : [VBA] Récupérer les données XML d'une cellule excel

    Il manquait un \ après CCEV3 sur le chemin c'est bon

    Le seul bémol c'est que le XML que je récupère sur excel n'est pas entier parce qu'il depasse les capacités de la cellule en terme de nombre de caractères.
    Il faut donc je fass eun travail de découpage en amont dans le soap ui.

    Merci encore

  7. #6
    invite948b37db

    Re : [VBA] Récupérer les données XML d'une cellule excel

    Bonjour
    VBA peut lire et traiter un fichier texte (ASCII), il n'est donc pas indispensable de charger le XML dans une feuille Excel.

Discussions similaires

  1. récupérer les données d'un service web sur Excel
    Par invitea94ae7de dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 23/09/2016, 21h00
  2. EXCEL - Scinder les données d'une cellule en plusieurs
    Par invite93a253d4 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/08/2016, 13h49
  3. Creation automatique de données en fonction du résultat d'une cellule précédente Excel 2010
    Par invite42961d99 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 23/12/2015, 10h57
  4. transfert de données excel vers une autre page excel
    Par invite595b98a5 dans le forum Logiciel - Software - Open Source
    Réponses: 38
    Dernier message: 01/10/2015, 14h36
  5. VBA Excel - Masquer ligne vide de x cellule à x cellule
    Par invite82dd4f96 dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 08/09/2015, 11h14