IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer et analyser un document xml en mémoire


Sujet :

Macros et VBA Excel

  1. #101
    Invité
    Invité(e)
    Par défaut
    Voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     Sub test()
     Dim savec2 As String
    Set docxml = CreateObject("MSXML2.DOMDocument")
    Set r = ActiveSheet.UsedRange
    With docxml
    If Not .LoadXML(Replace(r.Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then Err.Raise .parseError.ErrorCode, , .parseError.reason
    Dim T() As String
    l = r.Rows.Count
    c = r.Columns.Count
    ReDim T(l, c)
    For l2 = 0 To l - 1
    For c2 = 0 To c - 1
     If r(l2 + 1, c2 + 1).MergeArea.Count > 1 Then
    If Trim("" & r(l2 + 1, c2 + 1)) <> "" Then T(l2, 0) = r(l2 + 1, c2 + 1)
        T(l2, UBound(T, 2)) = " rowspan='" & r(l2 + 1, c2 + 1).MergeArea.Rows.Count & "'  colspan='" & r(l2 + 1, c2 + 1).MergeArea.Columns.Count & "'"
     Debug.Print r(l2 + 1, c2 + 1).MergeArea.Rows.Count
     Else
     If Trim("" & r(l2 + 1, c2 + 1)) <> "" Then T(l2, c2) = r(l2 + 1, c2 + 1) Else T(l2, c2) = "&nbsp;"
     End If
    Next
    Next
    HTML = "<Table border='1'>"
    For l2 = 0 To l - 1
    HTML = HTML & vbCrLf & "<tr>"
    For c2 = 0 To c - 1
    If T(l2, UBound(T, 2)) <> "" Then
        If c2 = 0 And savec2 = "" Then HTML = HTML & "<td Clase='cells(" & l2 & "," & c2 & ")' " & T(l2, UBound(T, 2)) & " >" & T(l2, 0) & "</td>"
        savec2 = c2
    Else
       HTML = HTML & "<td Clase='cells(" & l2 & "," & c2 & ")'&  >" & T(l2, c2) & "</td>"
       savec2 = ""
    End If
    Next
    HTML = HTML & "</tr>"
    Next
    HTML = HTML & vbCrLf & "</table>"
    HTML = Replace(HTML, "'cells(0,0)'", "'S68'")
    HTML = Replace(HTML, "'cells(0,1)'", "'S68'")
    Debug.Print HTML
    End With
    End Sub

  2. #102
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re

    c'est pire que toute a l'heure
    maintenant j'ai tout dans la ligne 1 et une palenquée de tr vides et je ne sais combien de ligne en trop

    pour la meme plage que la capture plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     3 
     2 
     3 
     2 
    <Table border='1'>
    <tr><td Clase='S68'&  >fhfhgfv²</td><td Clase='S68'&  >bbg</td><td Clase='cells(0,2)'&  >ghgh</td><td Clase='cells(0,3)'&  >sdsds</td><td Clase='cells(0,4)'&  >&nbsp;</td><td Clase='cells(0,5)'&  >&nbsp;</td><td Clase='cells(0,6)'&  >&nbsp;</td><td Clase='cells(0,7)'&  >&nbsp;</td><td Clase='cells(0,8)'&  >&nbsp;</td></tr>
    <tr><td Clase='cells(1,0)'  rowspan='1'  colspan='2' >gbff</td></tr>
    <tr></tr>
    <tr></tr>
    <tr></tr>
    <tr></tr>
    <tr></tr>
    <tr><td Clase='cells(7,0)'&  >jbbvghg</td><td Clase='cells(7,1)'&  >&nbsp;</td><td Clase='cells(7,2)'&  >&nbsp;</td><td Clase='cells(7,3)'&  >&nbsp;</td><td Clase='cells(7,4)'&  >&nbsp;</td><td Clase='cells(7,5)'&  >&nbsp;</td><td Clase='cells(7,6)'&  >&nbsp;</td><td Clase='cells(7,7)'&  >&nbsp;</td><td Clase='cells(7,8)'&  >&nbsp;</td></tr>
    <tr><td Clase='cells(8,0)'&  >&nbsp;</td><td Clase='cells(8,1)'&  >&nbsp;</td><td Clase='cells(8,2)'&  >&nbsp;</td><td Clase='cells(8,3)'&  >&nbsp;</td><td Clase='cells(8,4)'&  >&nbsp;</td><td Clase='cells(8,5)'&  >&nbsp;</td><td Clase='cells(8,6)'&  >&nbsp;</td><td Clase='cells(8,7)'&  >&nbsp;</td><td Clase='cells(8,8)'&  >&nbsp;</td></tr>
    <tr><td Clase='cells(9,0)'&  >&nbsp;</td><td Clase='cells(9,1)'&  >&nbsp;</td><td Clase='cells(9,2)'&  >&nbsp;</td><td Clase='cells(9,3)'&  >&nbsp;</td><td Clase='cells(9,4)'&  >&nbsp;</td><td Clase='cells(9,5)'&  >&nbsp;</td><td Clase='cells(9,6)'&  >&nbsp;</td><td Clase='cells(9,7)'&  >&nbsp;</td><td Clase='cells(9,8)'&  >&nbsp;</td></tr>
    <tr><td Clase='cells(10,0)'&  >&nbsp;</td><td Clase='cells(10,1)'&  >&nbsp;</td><td Clase='cells(10,2)'&  >&nbsp;</td><td Clase='cells(10,3)'&  >&nbsp;</td><td Clase='cells(10,4)'&  >&nbsp;</td><td Clase='cells(10,5)'&  >&nbsp;</td><td Clase='cells(10,6)'&  >&nbsp;</td><td Clase='cells(10,7)'&  >&nbsp;</td><td Clase='cells(10,8)'&  >&nbsp;</td></tr>
    <tr><td Clase='cells(11,0)'&  >&nbsp;</td><td Clase='cells(11,1)'&  >&nbsp;</td><td Clase='cells(11,2)'&  >&nbsp;</td><td Clase='cells(11,3)'&  >&nbsp;</td><td Clase='cells(11,4)'&  >&nbsp;</td><td Clase='cells(11,5)'&  >&nbsp;</td><td Clase='cells(11,6)'&  >&nbsp;</td><td Clase='cells(11,7)'&  >&nbsp;</td><td Clase='cells(11,8)'&  >&nbsp;</td></tr>
    </table>
    sincèrement arrête de te martyriser pour rien a moins de mouliner comme un diable tu n'y arrivera pas

    il faut construire avec les row cell en dom en testant si l'element existe ou pas c'est tout c'est pas plus compliqué que ca
    toute l'astuce réside dans la ligne rouge

    shema le plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub test()
        Dim plage, dochtml, TD, TR, TBODY
        Set plage = ActiveSheet.UsedRange
        Set dochtml = CreateObject("htmlfile")
        With dochtml
            .body.innerhtml = "<table><TBODY></TBODY></TABLE>": Set TBODY = .getElementsByTagName("TABLE")(0).Children(0)
            For lig = 1 To plage.Rows.Count
                Set TR = .createelement("tr")
                TBODY.appendchild (TR)
                For col = 1 To plage.Columns.Count
                    Set cel = plage.Cells(lig, col)
                    If .getelementbyid(Replace(cel.MergeArea.Address, "$", "")) Is Nothing Then
                        Set TD = .createelement("td")
                        TD.iD = Replace(cel.MergeArea.Address, "$", "")
                        r = TD.setattribute("index", plage.Cells(lig, col).Column)
                        ' on ajoute atribut ou style ou ce que tu veux au td ici
                        '
                        '
                        TR.appendchild (TD)
                    End If
                Next
            Next
            Debug.Print .body.innerhtml
        End With
    End Sub
    resultat
    <TABLE>
    <TBODY>
    <TR>
    <TD id=A1 index="1"></TD>
    <TD id=B1 index="2"></TD>
    <TD id=C1 index="3"></TD>
    <TD id=D1 index="4"></TD>
    <TD id=E1 index="5"></TD>
    <TD id=F1 index="6"></TD>
    <TD id=G1 index="7"></TD>
    <TD id=H1 index="8"></TD>
    <TD id=I1 index="9"></TD></TR>
    <TR>
    <TD id=A2:B2 index="1"></TD>
    <TD id=C2 index="3"></TD>
    <TD id=D2 index="4"></TD>
    <TD id=E2 index="5"></TD>
    <TD id=F2 index="6"></TD>
    <TD id=G2 index="7"></TD>
    <TD id=H2 index="8"></TD>
    <TD id=I2 index="9"></TD></TR>
    <TR>
    <TD id=A3 index="1"></TD>
    <TD id=B3:C4 index="2"></TD>
    <TD id=D3 index="4"></TD>
    <TD id=E3 index="5"></TD>
    <TD id=F3 index="6"></TD>
    <TD id=G3 index="7"></TD>
    <TD id=H3 index="8"></TD>
    <TD id=I3 index="9"></TD></TR>
    <TR>
    <TD id=A4 index="1"></TD>
    <TD id=D45 index="4"></TD>
    <TD id=E4 index="5"></TD>
    <TD id=F4 index="6"></TD>
    <TD id=G4 index="7"></TD>
    <TD id=H4 index="8"></TD>
    <TD id=I4 index="9"></TD></TR>
    <TR>
    <TD id=A5 index="1"></TD>
    <TD id=B5:B7 index="2"></TD>
    <TD id=C5 index="3"></TD>
    <TD id=E5 index="5"></TD>
    <TD id=F5 index="6"></TD>
    <TD id=G5 index="7"></TD>
    <TD id=H5 index="8"></TD>
    <TD id=I5 index="9"></TD></TR>
    <TR>
    <TD id=A6 index="1"></TD>
    <TD id=C6:C7 index="3"></TD>
    <TD id=D6 index="4"></TD>
    <TD id=E6 index="5"></TD>
    <TD id=F6 index="6"></TD>
    <TD id=G6 index="7"></TD>
    <TD id=H6 index="8"></TD>
    <TD id=I6 index="9"></TD></TR>
    <TR>
    <TD id=A7 index="1"></TD>
    <TD id=D7 index="4"></TD>
    <TD id=E7 index="5"></TD>
    <TD id=F7 index="6"></TD>
    <TD id=G7 index="7"></TD>
    <TD id=H7 index="8"></TD>
    <TD id=I7 index="9"></TD></TR>
    <TR>
    <TD id=A8 index="1"></TD>
    <TD id=B8 index="2"></TD>
    <TD id=C8 index="3"></TD>
    <TD id=D8 index="4"></TD>
    <TD id=E8 index="5"></TD>
    <TD id=F8 index="6"></TD>
    <TD id=G8 index="7"></TD>
    <TD id=H8 index="8"></TD>
    <TD id=I8 index="9"></TD></TR>
    <TR>
    <TD id=A9 index="1"></TD>
    <TD id=B9 index="2"></TD>
    <TD id=C9 index="3"></TD>
    <TD id=D9 index="4"></TD>
    <TD id=E9 index="5"></TD>
    <TD id=F9 index="6"></TD>
    <TD id=G9 index="7"></TD>
    <TD id=H9 index="8"></TD>
    <TD id=I9 index="9"></TD></TR>
    <TR>
    <TD id=A10 index="1"></TD>
    <TD id=B10 index="2"></TD>
    <TD id=C10 index="3"></TD>
    <TD id=D10 index="4"></TD>
    <TD id=E10 index="5"></TD>
    <TD id=F10 index="6"></TD>
    <TD id=G10 index="7"></TD>
    <TD id=H10 index="8"></TD>
    <TD id=I10 index="9"></TD></TR>
    <TR>
    <TD id=A11 index="1"></TD>
    <TD id=B11 index="2"></TD>
    <TD id=C11 index="3"></TD>
    <TD id=D11 index="4"></TD>
    <TD id=E11 index="5"></TD>
    <TD id=F11 index="6"></TD>
    <TD id=G11 index="7"></TD>
    <TD id=H11 index="8"></TD>
    <TD id=I11 index="9"></TD></TR>
    <TR>
    <TD id=A12 index="1"></TD>
    <TD id=B12 index="2"></TD>
    <TD id=C12 index="3"></TD>
    <TD id=D12 index="4"></TD>
    <TD id=E12 index="5"></TD>
    <TD id=F12 index="6"></TD>
    <TD id=G12 index="7"></TD>
    <TD id=H12 index="8"></TD>
    <TD id=I12 index="9"></TD></TR></TBODY></TABLE>
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #103
    Invité
    Invité(e)
    Par défaut
    C'est ce que je tes dit c'est pas la bonne solution. Je me suis fourvoyé!

    Je pense que la méthode transforme de l'xml reste la meilleur solution.
    Dernière modification par Invité ; 23/09/2017 à 00h25.

  4. #104
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour robert
    Je pense que la méthode transforme de l'xml reste la meilleur solution.
    et non!! justement car il y a des trou dans la structure (row/cell)

    la meilleur solution est une table dimensionné a la plage avec commentaire
    un 1er premier passage dans le xml en analysant les coments /remonter au parent cell et recup de l'ID

    et un 2d passage qui avec les bon id on récupère la bonne balise style correspondante a la bonne cell

    et basta
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #105
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour a tous

    j'aimerais bien savoir si il est possible de récupérer un élément par son attribut ID SANS BOUCLER SUR LES TAGS EN VERIFIANT SON ID

    se serait une bonne chose dans le sens ou dans mon projet je suis obligé de boucler alors que je connais le "ID" recherché

    du genre comme en HTML getElementById

    je ne trouve rien la dessus
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #106
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Salut Patrick,

    J'y connais rien et dit peut-être une bêtise,
    Mais y'a t'il pas moyen d'utiliser une collection permettant d'accéder à l'ID
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  7. #107
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    héhé mon cher ryu qui dit collection dit boucle hors ma question est le contraire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #108
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    vola à quoi je m’intéresse, c'est pas dans la poche car je n'est rien compris!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Transform()
     
    Set source = CreateObject("MSXML2.DOMDocument")
     
     
    Set stylesheet = CreateObject("MSXML2.DOMDocument")
    Set result = CreateObject("MSXML2.DOMDocument")
    ' Load data.
    source.async = False: stylesheet.async = False
    If Not source.LoadXML(ThisWorkbook.ActiveSheet.UsedRange.Value(xlRangeValueMSPersistXML)) Then Err.Raise source.parseError.ErrorCode, , source.parseError.reason
    If Not stylesheet.LoadXML(ThisWorkbook.ActiveSheet.UsedRange.Value(xlRangeValueXMLSpreadsheet)) Then Err.Raise source.parseError.ErrorCode, , source.parseError.reason
     
     
    If (source.parseError.ErrorCode <> 0) Then
        MsgBox ("Error loading source document: " & source.parseError.reason)
    Else
        If (stylesheet.parseError.ErrorCode <> 0) Then
            MsgBox ("Error loading stylesheet document: " & stylesheet.parseError.reason)
        Else
            ' Do the transform.
            source.transformNodeToObject stylesheet, result
            result.Save Environ("UserProfile") & "\Desktop\TestRd.html"
        End If
    End If
     
     
    End Sub

  9. #109
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui bonjour robert

    mon non plus je ,e comprends pas ce que tu veux faire

    sauver le code xml dans un fichier HTML????????????

    d'autant plus que la tu oubli qu'il manque des row et cell (toute celles qui n'ont rien (style/value))par rapport au sheets


    a moins de faire une mécanique TU N'AURA JAMAIS LA PLAGE ENTIERE a moins qu'elle soit intégralement remplie de valeur ou se style la moindre cellule vide et/ou non stylée te créera un trou dans l'arborescence html

    honnêtement j'ai une mécanique qui fonctionne tres bien je voudrais juste savoir comment SANS BOUCLER capter un élément avec un id dans le XML ca réduirait encore mon code car pas de boucle sur les nœuds "style"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #110
    Invité
    Invité(e)
    Par défaut
    je veux, comme je l'ai lue, formater les objets xml directement en html sans faire de boucle!

    il semble que ce soit possible mais je ne comprends pas le mécanisme!
    Xml to html directement!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source.transformNodeToObject stylesheet, result 'stylesheet au format XSL pas XLS! ou XHTML
    https://stackoverflow.com/questions/...ba-not-working

  11. #111
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    a d'accords j'avais déjà essayé cela

    regarde
    tu peux le faire comme ca
    mais il manque les cellules vides qui ne sont pas prises en compte dans le xml
    il faut donc taper dans les attributs "index" pour recréer les precedent mais en cas de fusion de lignes précédente cette logique ne tien plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    xxml = Replace(Replace(Replace(ThisWorkbook.ActiveSheet.UsedRange.Value(xlRangeValueXMLSpreadsheet), "<Row", "<TR"), "Row>", "TR>"), "ss:", "")
    xxml = Replace(Replace(Replace(Replace(xxml, "<Cell", "<TD"), "Cell>", "TD>"), "<Data", "<FONT"), "Data>", "FONT>")
    Debug.Print xxml
    Set Source = CreateObject("MSXML2.DOMDocument")
     If Not Source.LoadXML(xxml) Then Err.Raise Source.parseError.ErrorCode, , Source.parseError.reason
    Source.Save Environ("UserProfile") & "\Desktop\TestRd.html"
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #112
    Invité
    Invité(e)
    Par défaut
    oui mais normalement tu n'as pas à faire cela!

    le XML est sensé le faire il faut convertir le xlRangeValueXMLSpreadsheet en XHTML [XSL] puis XML_source.transformNodeToObject XSL, result

    je ne cherche pas à retravailler le XML cells en td; juste jongler avec des objets XML!

  13. #113
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    peut être que pour Excel c'est un format particulier et on ne peut pas convertir alors ,je sais pas

    mais la question des cellules manquantes se pose toujours
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #114
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonsoir,

    Je plussoie Robert qui me semble emprunter la bonne voie.
    Je l'avais abandonné pour cause de méconnaissance de : xml, html et css... Ca faisait beaucoup de manques pour pouvoir insister.

    Patrick, tu ne peux pas te passer de boucle.
    Pourquoi?
    Simplement parce que ce tu nommes 'ID' n'en est pas vraiment un. Il s'agit simplement d'un attribut (comme les autres) d'une balise.
    Cette notion d'id que tu connais en html n'existe pas à proprement parler ici.

    De plus, que crois tu que ferais une méthode GetElementsById?
    A un plus bas niveau, donc plus rapide, mais elle bouclerait...

    Après en cherchant dans la librairie, il existe quelque chose comme :
    Function nodeFromID(idString As String) As IXMLDOMNode
    Membre de MSXML2.DOMDocument
    retrieve node from it's ID
    Mais qui ne semble pas fonctionner depuis un xml excel...
    J'ai bien dit qui ne semble pas. A toi de tester
    Cordialement,
    Franck

  15. #115
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour pijaku
    c'est vraiment dommage c'est juste ce qui me fallait
    je vais essayer de trouver pourquoi sur le xml de Excel ca ne fonctionne pas
    et oui je sais qu'une boucle se fait forcement mais largement!!!!! plus rapide que la boucle VBA

    au final en considérant que je veux absolument (ne pas boucler) je le fait avec split c'est plus rapide sachant qu'apres il faut quand meme boucler sur les nœuds enfants (border,fontname,alignement,etc......)
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #116
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour pijaku j'ai testé sur divers XML que j'ai a ma dispos et c'est vraiment VBA qui ne gère pas cette fonction pas simplement les xml issue d'une plage

    variable non définie
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Construire un Document xml en mémoire plutôt qu'écrire dans un fichier
    Par nancy maman dans le forum Général Python
    Réponses: 3
    Dernier message: 19/04/2011, 10h59
  2. Comment créer un document XML à partir d'une chaine de caractères
    Par imad_eddine dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 19/11/2007, 18h09
  3. Afficher un document XML en mémoire dans une page HTML
    Par anthonyd dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 12/09/2007, 12h00
  4. [DOM] Créer Element dans un document XML
    Par nivose110 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2006, 09h18
  5. [DOM] Créer un document xml
    Par the_ugly dans le forum Format d'échange (XML, JSON...)
    Réponses: 20
    Dernier message: 26/10/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo