1. #1
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut Créer et analyser un document xml en mémoire

    Bonjour a tous
    je souhaiterait créer un xmldom en mémoire puis l'analyser

    pour cela j'ai un code complet issu de la propriété xlRangeValueXMLSpreadsheet d'un rangemais je sais pas insérer le code complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub essai()
        Dim ExtraitXML As String
     
        ExtraitXML = Sheets(1).Range("b3").MergeArea.Cells(1).Value(xlRangeValueXMLSpreadsheet)
        Debug.Print ExtraitXML
        Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        'comment insérer ici  ExtraitXML 
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    Bonjour
    j'ai bien essayé de créer le root puis intégrer le code mais ca me supprime tout les "<" ou ">"

    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
    Sub essai1()
    Dim objDom As Object
       Dim objRootElem As Object
       Dim objMemberElem As Object
       Dim objMemberRel As Object
       Dim objMemberName As Object
        Dim ExtraitXML As String, innerH$, W#, H#, WRAPP As Boolean, backcol, aligH$, aligV$
     
        ExtraitXML = Sheets(1).Range("b3").Value(xlRangeValueXMLSpreadsheet)    'xlRangeValueMSPersistXML  '
        texte = Replace("<Styles>" & Split(ExtraitXML, "<Styles>")(1), Chr(34), " ")
     
     
       Set objDom = CreateObject("MSXML2.DOMDocument")
     
       ' Creates root element
       Set objRootElem = objDom.createElement("first")
       objDom.appendChild objRootElem
       objRootElem.Text = texte
     
    End sub
    j'ai essayé aussi la propriété "objDom .xml" mais elle est que en lecture seule c'est balo!!
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    12 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 12 139
    Points : 26 832
    Points
    26 832

    Par défaut

    Salut Patrick,

    pour t'eviter un monologue, peux-tu nous dire quelle est ta question technique stp ?
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    BonjourJean- Philippe-André
    la question technique est simple

    je ne veux pas créer les nœuds un par un j'ai déjà un code tout prêt que je veux insérer dans l'Object

    un peu comme avec le l'object htmldocument ( .body.innerhtml="blablabla")
    ce code est récupérer par
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox range("A1").value(xlRangeValueXMLSpreadsheet)
    je veux mettre ce code dans l'object pour le parser et en récupérer certaines données
    depuis hier je l'ai fait avec les librairie de traitement de chaine de caractères mais tu t'en doute c'est un calvaire mais j'y suis arrivé mais je préfèrerais travailler avec les nodes c'est plus propre

    hier je l'ai fait en enregistrant dans un fichier .xml avec open for input as freefile
    puis un load sur le fichier
    mais j'en ai un paquet de cellules a examiner ca m'a paru pas envisageable même si ca fonctionne
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    12 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 12 139
    Points : 26 832
    Points
    26 832

    Par défaut

    OK, mais je n'ai toujours pas reussi a trouve ta question.

    J'ai bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox range("A1").value(xlRangeValueXMLSpreadsheet)
    qui me renvoie une structure xml

    Que cherches tu exactement a faire ?


    TU peux passer par un fichier xml intermediaire si ca te chante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub patrick()
    Dim strXML As String
    strXML = Range("A1").Value(xlRangeValueXMLSpreadsheet)
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim oFile As Object
    Set oFile = fso.CreateTextFile("C:\temp\patrick.xml")
    oFile.WriteLine strXML
    oFile.Close
    Set fso = Nothing
    Set oFile = Nothing
    End Sub
    Mais encore une fois je n'ai toujours pas compris ce qui motive ton post d'origine
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    OK peut etre que la tu va comprendre

    je veux le même résultat que le code qui suit

    sans passer par la creation d'un fichier solide ".xml"

    mais avec ceci si quelque chose comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set docXML=CreateObject("MSXML2.DOMDocument"
    'docXML.xml=range("A1").value(xlRangeValueXMLSpreadsheet)
    pour le moment je le fait comme ceci
    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
    Sub testtextstyle()
    Set doc = CreateObject("htmlfile")
    Debug.Print text_stylé([B3], doc)
    End Sub
    Function text_stylé(cel, doc)
        With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
        ExtraitXML = Replace(cel.Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")
        texte = Split(Split(Replace(ExtraitXML, "html:", ""), "<Data")(1), "</Data")(0)
        texte = Replace(texte, Split(texte, ">")(0) & ">", "")
        If IsDate(cel.Value) Then texte = cel.Text    'Format(cel.Text, "dd/mm/yyyy")
        fcolor = Split(ExtraitXML, "ss:FontName="""): i = 1
        If Not IsNull(cel.Font.Color) And cel.Font.Color <> 0 Then i = 2
        fontcolor = Split(Split(fcolor(i), "ss:Color=""")(1), Chr(34))(0)
        font_size = Split(Split(fcolor(UBound(fcolor)), "ss:Size=""")(1), Chr(34))(0)
        font_name = Split(fcolor(UBound(fcolor)), Chr(34))(0)
          Set fonte = doc.createelement("FONT")
        With fonte: .Style.Color = fontcolor: .Style.FontSize = font_size * ppx: .face = font_name: .innerhtml = texte
            Set Fonts = .getelementsbytagname("FONT")
            For i = 0 To Fonts.Length - 1
                If Fonts(i).Size <> "" Then Fonts(i).Style.FontSize = Fonts(i).Size * ppx: Fonts(i).Size = ""
            Next
        End With
        text_stylé = fonte.outerhtml
    End Function
    en gros je veux insérer le code directement dans l'object pour faire la même chose

    en espérant avoir été plus clair
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    12 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Developpeur VBA migrant tranquillement vers C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 12 139
    Points : 26 832
    Points
    26 832

    Par défaut

    Ok,

    j'aurais aime aider, mais vu que tu cherches a reinventer la roue, je passe mon tour =]
    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    je cherche pas a réinventer la roue

    je veut simplement savoir si cela est possible

    si oui ok
    si non tant pis
    voila tout
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre expert
    Avatar de dysorthographie
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2016
    Messages : 1 875
    Points : 3 178
    Points
    3 178
    Billets dans le blog
    1

    Par défaut

    Bonjour Patrick,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with creatobject("MSXML2.DOMDocument")
        If Not .LoadXML(range("A1").value(xlRangeValueXMLSpreadsheet)) Then
            Err.Raise .parseError.ErrorCode, , .parseError.reason
        End If
    End with
    Il dit non avec la tête
    mais il dit oui avec le coeur
    il dit oui à ce qu’il aime
    il dit non au professeur {Jacques PRÉVERT}

  10. #10
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    re

    bon ben voila
    ".loadxml"
    avec gestion d'erreur en plus

    merci robert

    c'est quand même plus simple pour récupérer des données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Set docxml = CreateObject("MSXML2.DOMDocument")
        'Debug.Print Range("b3").Value(xlRangeValueXMLSpreadsheet)
            With docxml
            '.LoadXML (Replace(Range("B3:c4").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data"))' ca marche aussi sans gestion d'erreur
            If Not .LoadXML(Replace(Range("B3:c4").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then err.Raise .parseError.ErrorCode, , .parseError.reason
     
            ' innerhtml de la cellule
            Set onode = docxml.SelectSingleNode("/Workbook/Worksheet/Table/Row/Cell/Data")
            Debug.Print onode.BaseName & " " & Trim(Replace(onode.XML, Split(onode.XML, ">")(0) & ">", ""))
            'MsgBox docxml.XML
        End With
    End Sub
    j'aurrais besoins de toi robert si tu veux bien
    pour récupéer non pas les node text mais les attributs ca je sais pas faire en XML
    exemple ce qui est en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Border ss:Position="Right" ss:LineStyle="Dash" ss:Weight="2"
         ss:Color="#00B050"/>
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre expert
    Avatar de dysorthographie
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2016
    Messages : 1 875
    Points : 3 178
    Points
    3 178
    Billets dans le blog
    1

    Par défaut

    Bonjour Patrick,

    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
    Sub test()
        Set docxml = CreateObject("MSXML2.DOMDocument")
            With docxml
            If Not .LoadXML(Replace(Range("B1:c10").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then Err.Raise .parseError.ErrorCode, , .parseError.reason
             Set Attrs = docxml.SelectSingleNode("/Workbook/Worksheet/Table").Attributes
            For Each Lignes In docxml.SelectSingleNode("/Workbook/Worksheet/Table").ChildNodes
                For Each colonnes In Lignes.ChildNodes
                    Debug.Print colonnes.Text
                    For Each Att In colonnes.Attributes
                      Debug.Print Att.Text
                    Next
                Next
            Next
            Debug.Print onode.BaseName & " " & Trim(Replace(onode.XML, Split(onode.XML, ">")(0) & ">", ""))
        End With
    End Sub
    Il dit non avec la tête
    mais il dit oui avec le coeur
    il dit oui à ce qu’il aime
    il dit non au professeur {Jacques PRÉVERT}

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 911
    Points : 1 663
    Points
    1 663

    Par défaut

    Bonjour Patrick,

    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
    Option Explicit
     
    Public Sub Test()
    Dim docxml As Variant
    Dim Noeud As Variant
    Dim Attribu As Variant
    Dim Attributs() As String, i As Long
     
        Set docxml = CreateObject("MSXML2.DOMDocument")
        With docxml
            If Not .LoadXML(Replace(Range("B3:c4").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then Err.Raise .parseError.ErrorCode, , .parseError.reason
            Set Noeud = .SelectSingleNode("/Workbook/Worksheet/Table")
            If Not Noeud Is Nothing Then
                For Each Attribu In Noeud.Attributes
                    ReDim Preserve Attributs(i)
                    Attributs(i) = Attribu.BaseName & " := " & Attribu.Value 'Value ou Text, comme tu veux...
                    i = i + 1
                Next
            End If
        End With
        MsgBox Join(Attributs, vbCrLf)
    End Sub
    EDIT : Un petit conseil @Patrick...
    Lorsque tu travailles sur un objet de ce type, même si, in fine tu utiliseras CreateObject, commences par travailler avec la library concernée.
    Ainsi, en cochant la référence XML 6.0 tu as accès à l'intellisence ET à l'aide VBA.
    Aide VBA qui t'aurais apporté ceci :
    Property attributes As IXMLDOMNamedNodeMap
    Lecture seule
    Membre de MSXML2.DOMDocument
    the collection of the node's attributes
    Ensuite, en travaillant toujours avec cette library, tu développes ton code, en déclarant TOUTES les variables, par exemple :
    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
    Option Explicit
     
    Public Sub test()
    Dim docxml As New MSXML2.DOMDocument    'Nouveau doc Xml
    Dim Noeud As IXMLDOMNode                'Node
    Dim Attributs As IXMLDOMNamedNodeMap    'Collection
    Dim A As IXMLDOMAttribute               'Pour boucler sur la collection
     
        With docxml
            If Not .LoadXML(Replace(Range("B3:c4").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then Err.Raise .parseError.ErrorCode, , .parseError.reason
            Set Noeud = .SelectSingleNode("/Workbook/Worksheet/Table")
            If Not Noeud Is Nothing Then
                Set Attributs = Noeud.Attributes
                For Each A In Attributs
                    Debug.Print A.BaseName & " := " & A.Value 'Value ou Text, comme tu veux...
                Next
            End If
        End With
    End Sub
    Et si, enfin, tu ne souhaites pas obliger l'utilisateur à cocher la référence, tu transformes le code comme je te l'ai livré en premier, avec des Variant.....
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  13. #13
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    re
    Bonjour pijaku
    c'est vrai en earlybinding j'aurais l'intelligence il est vrai que j'ai l'habitude inverse "latebinding"
    je vais regarder la propriété "map"
    merci
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre expert
    Avatar de dysorthographie
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2016
    Messages : 1 875
    Points : 3 178
    Points
    3 178
    Billets dans le blog
    1

    Par défaut

    Pour compléter les remarques de pijaku, il m'arrive de faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim docxml as MSXML2.DOMDocument
    Set docxml = CreateObject("MSXML2.DOMDocument")
    Ensuite pour la prod je décoche la référence et je mets as Object!

    J'utilise surtout l'espion
    Il dit non avec la tête
    mais il dit oui avec le coeur
    il dit oui à ce qu’il aime
    il dit non au professeur {Jacques PRÉVERT}

  15. #15
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    re
    bonjour robert

    une derniere question avant de cloturer
    est on obligé de boucler pou chopper x élément de même tag ?????

    j'ai deux elements qui ont le chemin
    /Workbook/Styles/Style/Font")
    chaque "font "est dans une balise"style" diffèrent autrement pour l'exemple
    j'ai
    le 1er pour les paramètre par défaut
    le 2d pour les paramètres actuels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Style ss:ID="Default" ss:Name="Normal">
                <Alignment ss:Vertical="Bottom"/>
                <Borders/>
                <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
                <Interior/>
                <NumberFormat/>
                <Protection/>
            </Style>
            <Style ss:ID="s64">
                <Font ss:FontName="Aharoni" x:CharSet="177" ss:Size="16" ss:Color="#FF0000"/>
                <Interior/>
            </Style>
        </Styles>
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 911
    Points : 1 663
    Points
    1 663

    Par défaut

    Ta réponse, Patrick, m'amène à penser, peut être à tort, que tu n'as pas tenu compte de mes conseils. Tout est dans l'aide VBA sur la library XML 6.0...
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  17. #17
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    ho oui comme j'aimerais un peu d'aide
    Nom : Capture.JPG
Affichages : 83
Taille : 175,8 Ko

    quand a l'aide comment dire heu .......

    en gros la fenêtre des définition pour moi c'est mort et l'aide est tellement succincte que si j'avais un p... de moyen de faire sauter ce point d'interrogation dans ma barre je ne me priverais pas
    *voila ou j'en suis
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Membre expert
    Avatar de dysorthographie
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2016
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2016
    Messages : 1 875
    Points : 3 178
    Points
    3 178
    Billets dans le blog
    1

    Par défaut

    Oui et non, mais il faut savoir que l'id du style et dans le nodes enfant!
    colonnes.Attributes
    Il dit non avec la tête
    mais il dit oui avec le coeur
    il dit oui à ce qu’il aime
    il dit non au professeur {Jacques PRÉVERT}

  19. #19
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : août 2010
    Messages : 911
    Points : 1 663
    Points
    1 663

    Par défaut

    Patrick,

    Il n'y a pas que le point d'interrogation qui t'apporte de l'aide.
    Aide toi et VBA t'aideras petit padawan...

    Avec ton niveau de connaissances, l'explorateur d'objet, dans lequel tu sélectionnes la bonne library, te donnes toutes les méthodes des objets choisis.

    Ainsi, pour ta question, tu aurais trouvé :
    Function getElementsByTagName(tagName As String) As IXMLDOMNodeList
    Membre de MSXML2.IXMLDOMElement
    build a list of elements by name
    ainsi que :
    Function getAttribute(name As String)
    Membre de MSXML2.IXMLDOMElement
    look up the string value of an attribute by name
    et ainsi pondu tout seul le code :
    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
    Option Explicit
     
    Public Sub test()
    Dim docxml As New MSXML2.DOMDocument    'Nouveau doc Xml
    Dim Noeuds As IXMLDOMNodeList           'Liste de noeuds de docxml
    Dim E As IXMLDOMElement                 'Elément
    Dim vIn As String                       'A chercher
    Dim vOut As String                      'Valeur de retour
     
        With docxml
            If Not .LoadXML(Replace(Range("B3:c4").Value(xlRangeValueXMLSpreadsheet), "ss:Data", "Data")) Then Err.Raise .parseError.ErrorCode, , .parseError.reason
            'recherche tous les noeuds appelés font
            Set Noeuds = .getElementsByTagName("Font")
            'Nom de l'attribut à chercher
            vIn = "ss:FontName"
            If Not Noeuds Is Nothing Then
                'boucle sur les noeuds appelés "Font"
                For Each E In Noeuds
                    'retourne leur attribut nommé ss:FontName
                    vOut = E.getAttribute(vIn)
                    Debug.Print vOut
                Next
            End If
        End With
        Set docxml = Nothing
        Set Noeuds = Nothing
    End Sub
    Cordialement,
    Franck P.


    Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...

  20. #20
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 134
    Points : 16 082
    Points
    16 082
    Billets dans le blog
    1

    Par défaut re

    Bonjour pijaku

    Bonjour Pijaku

    je te jure sur ce que j'ai de plus cher au monde que j'avais essayé ".getattribute" et "getelementsbytagname"c'est exactement le même principe qu'en HTML
    d'ailleurs autrefois sur des fichier Xml anciens je m'en servais
    sur ces xml ca n'a rien donné je vais re tester peu être ai-je zapper quelque chose
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 6 12345 ... DernièreDernière

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. 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 XML
    Réponses: 5
    Dernier message: 30/06/2006, 09h18
  5. [DOM] Créer un document xml
    Par the_ugly dans le forum XML
    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