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 :

Import fichier XML dans tableau variable très long


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut Import fichier XML dans tableau variable très long
    Bonjour à tous,

    je me permets d'ouvrir une discussion car je ne trouve pas de solution à mon problème.

    Je souhaite importer un fichier xml dans un tableau variable pour y travailler les données (fichier que je serai amenée à importer régulièrement pour des contrôles). Le fichier en question fait (aujourd'hui) 25 mo, et la macro important ces données met 20 minutes... J'essaie donc de trouver des solutions à ce problème :

    - Puis-je optimiser le code ci-dessous pour diminuer le temps d'exécution?

    - Par ailleurs, puis-je n'importer qu'une partie du fichier xml, c'est-à-dire prendre toutes les balises, mais seulement les "lignes" répondant à des conditions? Je n'ai pas réussi à le faire.

    Merci d'avance pour vos conseils !

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Option Explicit
    Option Base 1
     
    Function InverseTab(T, Optional Base As Byte = 1) 'Permet de transposer les dimensions d'un tableau
    Dim Temp()
    Dim i As Long
    Dim j As Long
    ReDim Temp(Base To UBound(T, 2), Base To UBound(T))
    For i = LBound(T, 2) To UBound(T, 2)
        For j = LBound(T) To UBound(T)
            Temp(i, j) = T(j, i)
        Next j
    Next i
    InverseTab = Temp
    End Function
     
     
    Sub lecture_contrat()
     
        ActiveWorkbook.PrecisionAsDisplayed = False
        Application.DisplayAlerts = False 'Désactive/Active les fenêtres Windows (pour éviter d'avoir une fenêtre de confirmation àla suppression de feuilles par exemple)
        Application.ScreenUpdating = False 'Désactive la mise à jour de l'écran
        Application.DisplayStatusBar = False 'Désactive la barre d'état
        Application.Calculation = xlCalculationManual 'Calcul manuel
        Application.EnableEvents = False 'Désactive les évènements
        ActiveSheet.DisplayPageBreaks = False 'Désactive les sauts de page
        Application.Cursor = xlWait 'sablier
     
     
     
    Dim recolte As String
    recolte = Worksheets("Paramètres").Range("A6")
     
    Dim sDossier As String
    Dim sFichier As String
    Dim sDossierFichier As String
     
    Dim colonne As Long
    Dim ligne As Long
    Dim i As Long
    Dim j As Long
     
    Dim tabDonnees() As Variant
     
    Dim oXML As MSXML2.DOMDocument
    Dim oNode As MSXML2.IXMLDOMNode
    Dim childNode As MSXML2.IXMLDOMNode
    Dim oSubNode As MSXML2.IXMLDOMNode
     
    Dim xmlRecolte
     
     
    '1. Ouverture du fichier xml et lecture du contenu
     
    'Nom fichier à lire
    Worksheets("Paramètres").Activate
    sDossier = Range("B9") & "/"
    sFichier = "Contrat.xml"
    sDossierFichier = sDossier & sFichier
     
    'Chargement du fichier
    Set oXML = New MSXML2.DOMDocument
    oXML.async = False
    oXML.Load sDossierFichier
     
     
    'Lecture du contenu
    ligne = 0
    For Each oNode In oXML.DocumentElement.ChildNodes
     
        ligne = ligne + 1
        ReDim Preserve tabDonnees(55, ligne)
     
        colonne = 0
        If ligne = 1 Then
            For Each oSubNode In oNode.ChildNodes
                colonne = colonne + 1
                tabDonnees(colonne, ligne) = oSubNode.BaseName
            Next
        Else
            For Each oSubNode In oNode.ChildNodes
                colonne = colonne + 1
                tabDonnees(colonne, ligne) = oSubNode.Text
            Next
        End If
    Next
     
    '2. Affichage des données dans Excel
     
    Worksheets("Contrat").Activate
     
    'Nettoyage des données précédentes
     
    Range("A2:BC" & Range("A2").End(xlDown).Row).Clear
     
    'Affichage des nouvelles données
     
    Range("A1:BC" & UBound(tabDonnees, 2)) = InverseTab(tabDonnees)
     
     
        ActiveWorkbook.PrecisionAsDisplayed = True
        Application.DisplayAlerts = True 'Désactive/Active les fenêtres Windows (pour éviter d'avoir une fenêtre de confirmation à la suppression de feuilles par exemple)
        Application.ScreenUpdating = True 'Désactive la mise à jour de l'écran
        Application.DisplayStatusBar = True 'Désactive la barre d'état
        Application.Calculation = xlCalculationAutomatic 'Calcul manuel
        Application.EnableEvents = True 'Désactive les évènements
        ActiveSheet.DisplayPageBreaks = True 'Désactive les sauts de page
        Application.Cursor = xlDefault 'sablier
     
    End Sub

  2. #2
    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 Heu
    Bonjour un fichier xml de 20mega c'est impensable.! Tu en es sur ! de sa taille ?
    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. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    22,498 mo... et le problème c'est qu'il va augmenter au fur et à mesure...

    Pour le contexte, nous échangeons des données entre SAP et notre site internet, des contrats que les utilisateurs :
    - peuvent créer sur internet : import des contrats vers SAP
    - peuvent voir même si le contrat est créé directement sur SAP : export des contrats de SAP vers le site

    L'éditeur a mis à disposition des "administrateurs" des fichiers xml contenant les infos des bases de données du site.

    J'ai besoin de récupérer ces fichiers pour les comparer à mes extractions SAP, et dans le cas présent, la quantité de données est énorme : il s'agit de l'ensemble des contrats apparaissant sur le site (15000 pour l'instant), dont je dois vérifier la majorité des informations (55 champs...) pour confirmer que le site reprend bien les infos de SAP.

    J'ai besoin de récupérer ce contenu dans un tableau variable pour y extraire les données qui m'intéresse, et travailler certaines données pour retrouver le même format que mes données SAP.

    Peut-être y a-t-il un moyen de limiter les données importées dès le départ?

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    De ce que je me souvient de ma période SAP et ABAP tu peux faire des BAPI qui permette d'interagir avec SAP.
    Pourquoi ne pas essaye de faire ce traitement via interrogation par BAPI voir webservice entre les deux ?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci de votre réponse. Je ne suis pas sûre de la comprendre par contre, ne touchant pas du tout à la programmation SAP ...

    Néanmoins, côté SAP je n'ai pas de problème puisque j'exporte les données en xls. Je parlais de SAP pour expliquer le contexte (et la nécessité de contrôler mes données dans le détail, ligne par ligne, d'où la taille des fichiers), mais les données extraites de SAP sont justement celles que je dois comparer à mes données XML. La comparaison sera faite dans Excel via un code vba.

    Mon problème vient plutôt de la récupération des données XML qui met une vingtaine de minutes, et qui n'ira pas en s'arrangeant puisque le nombre de données va augmenter.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Est ce que tu peux manuellement importer ton xml (Données > données externes...etc)

    Avec l'enregistreur de macro
    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
    Sub LaMacro()
    Dim Fichier As String
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With ThisWorkbook
        Fichier = .Worksheets("Paramètres").Range("B9") & "/Contrat.xml"
        With .XmlMaps.Add(Fichier, "Ta racine de ton xml")    '>>>> à adapter avec la racine de ton fichier xml
            .ShowImportExportValidationErrors = True
            .DataBinding.ClearSettings
            .AdjustColumnWidth = True
            .PreserveColumnFilter = True
            .PreserveNumberFormatting = True
            .AppendOnImport = False
        End With
        .Worksheets("Contrat").UsedRange.Clear
        .XmlImport URL:=Fichier, ImportMap:=Nothing, Overwrite:=True, Destination:=.Worksheets("Contrat").Range("A1")
        .Connections(.Connections.Count).Delete
    End With
    Application.DisplayAlerts = True
    End Sub
    Qu'est ce que ça donne?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci de ton retour.

    en passant par Données --> Autres sources --> Provenance "Importation de données XML" ou en exécutant ta macro, l'import est effectivement beaucoup plus rapide (1 à 2 minutes). Mais du coup je ne peux pas l'intégrer dans un tableau variable?

  8. #8
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu récupère à partir de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim Tb
     
    Tb=worksheets("Contrat").usedrange
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    C'est ce que j'essaie de faire, mais depuis que j'ai rajouté les lignes pour intégrer dans un tableau, le programme redevient super long (j'ai arrêté l'exécution au bout de 5 minutes).


    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
     
    Sub LaMacro()
    Dim Fichier As String
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With ThisWorkbook
        Fichier = .Worksheets("Paramètres").Range("B9") & "/Contrat.xml"
        With .XmlMaps.Add(Fichier, "DataExport")    '>>>> à adapter avec la racine de ton fichier xml
            .ShowImportExportValidationErrors = True
            .DataBinding.ClearSettings
            .AdjustColumnWidth = True
            .PreserveColumnFilter = True
            .PreserveNumberFormatting = True
            .AppendOnImport = False
        End With
        .Worksheets("Contrat temp").UsedRange.Clear
        .XmlImport URL:=Fichier, ImportMap:=Nothing, Overwrite:=True, Destination:=.Worksheets("Contrat temp").Range("A1")
        .Connections(.Connections.Count).Delete
    End With
     
    Application.DisplayAlerts = True
     
    Dim tableauDonnees() As Variant
    tableauDonnees = Worksheets("Contrat temp").UsedRange
     
    'Affichage des nouvelles données
    Worksheets("Contrat").Activate
    Range("A2:BC" & Range("A2").End(xlDown).Row).Clear
    Range("A1:BC" & UBound(tabDonnees, 1)) = tabDonnees
     
    End Sub

  10. #10
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Je ne sais pas pourquoi tu passes par une feuille intermédiaire contrat temp
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Pour garder une trace du résultat intermédiaire. C'est çà qui pose problème?

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Mercatog
    Le demandeur pourra peut-être t'indiquer (entre autres) de quel chapeau il "sort" tabDonnees
    A moins que le code montré ne soit finalement pas un copié/collé (souhaitable) de son vrai code
    Amitiés

    Edit : et les expressions du type
    nettoient des formules et mises en forme, mais pas des contenus
    S'il a vraiment des formules, l'utiliser, mais compléter par :
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_de_la_feuille.UsedRange
    qui va mettre à jour le UsedRange résiduel
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_de_la-Feuille.Usedrange.ClearContents
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    où est le problème avec tabDonnees ? il s'agit du nom d'un tableau variable initialisé la ligne juste au dessus, et qui doit récupérer les données du fichier xml, ou plutôt avec ce code il doit récupérer les données de la feuille "Contrat temp", qui est à ce moment-là censé contenir les données du fichier xml...

    Ce n'est pas bon?

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Citation Envoyé par steph6499 Voir le message
    Bonjour,

    où est le problème avec tabDonnees ? il s'agit du nom d'un tableau variable initialisé la ligne juste au dessus
    Je ne la vois pas, moi, cette ligne. Aide-moi donc à la voir, s'il te plait
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tableauDonnees() As Variant
    tableauDonnees = Worksheets("Contrat temp").UsedRange
    Ligne 24 dans mon message de 16h21

    Effectivement, il s'agit de tableauDonnees et non de tabDonnees... (quel c**) Par contre, le code n'arrive pas jusque là, il bloque lorsque j'essaie d'affecter les données de la feuille dans le tableau tableauDonnees.

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je n'y vois pas (l'un de nous deux a besoin de verres correcteurs) tabDonnees
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Effectivement, je suis devant depuis hier, j'ai 4 macros de test en même temps je ne vois plus bien .

    Sinon, après correction de cette erreur, mon problème est le même, il ne veut pas intégrer les données de la feuille "Contrat temp" dans tableauDonnees --> "Incompatibilité de type", mais je ne comprends pas pourquoi. Cela vient-il du mappage?

    Je remet le code corrigé :

    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
    Sub LaMacro()
    Dim Fichier As String
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With ThisWorkbook
        Fichier = .Worksheets("Paramètres").Range("B9") & "/Contrat.xml"
        With .XmlMaps.Add(Fichier, "DataExport")
            .ShowImportExportValidationErrors = True
            .DataBinding.ClearSettings
            .AdjustColumnWidth = True
            .PreserveColumnFilter = True
            .PreserveNumberFormatting = True
            .AppendOnImport = False
        End With
        .Worksheets("Contrat temp").UsedRange.Clear
        .XmlImport URL:=Fichier, ImportMap:=Nothing, Overwrite:=True, Destination:=.Worksheets("Contrat temp").Range("A1")
        .Connections(.Connections.Count).Delete
    End With
     
     
     
     
    Dim tableauDonnees() As Variant
    tableauDonnees = Worksheets("Contrat temp").UsedRange
     
     
    'Affichage des nouvelles données
     
    Worksheets("Contrat").Activate
     
    Range("A2:BC" & Range("A2").End(xlDown).Row).Clear
     
    Range("A1:BC" & UBound(tableauDonnees, 1)) = tableauDonnees
     
     
     
    Application.DisplayAlerts = True
     
    End Sub

    Par contre, je n'ai pas touché au ".Clear" : si je remplace la ligne par ".ClearContent" il me dit "Propriété ou méthode non gérée par cet objet".

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    Bon, après correction, çà met 1 à 2 minutes et çà a l'air de fonctionner !!

    Je dois vraiment être fatiguée. Désolée pour cette erreur bête (je ne comprends pas pourquoi il bloquait avant par contre, mais tant pis).

    Merci à vous pour votre aide, et pour la solution alternative.

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    si je remplace la ligne par ".ClearContent" il me dit "Propriété ou méthode non gérée par cet objet"
    je n'ai pas écrit "ClearContent", mais "ClearContents" !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    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
    Bonjour
    même si c'est résolu
    perso si ton importation n'est pas par le xml et que celui ci te sert a contrôler ton importation SAP pourquoi vouloir importer le xml

    fait une recherche directement a l'intérieur
    dim tablo
    tablo=range(......) 'ici ton tablo de ce que tu a importé de SAP

    après dans une boucle tu vérifie la présence des élément dans le xml sans importation!!! en pointant les nodes et childnode etc.....
    tu le memo une fois seulement au départ dans l'object xml

    a mon avis ce serait plus rapide

    a moins que tu veuille importer les manquants

    au quel cas pourquoi se servir des données SAP autant récupérer le xml au complet et l'importer en tableau (une sorte de mise a jour tout simplement )

    d'autant plus que si le xml et conforme en l'ouvrant avec open (vba) en texte quelque replace et 2 split et on créé le tableau au complet
    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

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

Discussions similaires

  1. import fichier XML dans un fichier TXT ou XLS
    Par logiclogic dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 11/01/2013, 11h19
  2. Réponses: 0
    Dernier message: 04/01/2011, 19h45
  3. Import fichier XML dans table Transact SQL
    Par chicken92000 dans le forum Développement
    Réponses: 8
    Dernier message: 17/06/2009, 09h41
  4. [SSIS] [2K8] importer fichier xml dans une table
    Par Tankian dans le forum SSIS
    Réponses: 1
    Dernier message: 15/04/2009, 12h34
  5. import fichier XML dans une table oracle 10g
    Par aijedelachance dans le forum Import/Export
    Réponses: 0
    Dernier message: 08/02/2009, 21h52

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