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 :

chercher des données dans un XML zipé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut chercher des données dans un XML zipé
    Bonjour à tous,

    dsl mais quand j'aurais exposé ma requete vous comprendrez que le titre est loin du compte, meme si c'est a mon avis la partie la plus chiante, bref je m'xplique:

    dans le cadre du taf j'ai des stats mensuelles à faire, pour ca je dois aller dans X zip créés durant le mois et dans chaque zip ouvrir le fichier xml qui s'y trouve et relever les info de plusieurs lignes.

    le top serait dans la mesure du possible:
    après clic sur le bouton
    1- ouverture d'une boite de choix afin de sélectionner les X zip a traiter;
    2- lister ces zip dans la première colonne d'un tableau par date de création avec lien hypertexte pour ouvrir le zip;
    3- pour chaque fichier XML present dans chaque zip chercher la balise <cle_sy>XXXXXXXX</clesy> et repport des données XXXX dans la colonne 2 du tableau
    4- pareil avec balise <code>YYYYYY</code> : repport des données Y dans la colonne 3
    5- pareil avec balise <Objet>ZZZZZZ</Objet> : repport des données Z dans la colonne 4

    je me rends bien compte du travail que ca demande et que je suis malheureusement dans l'incapacité d'aider car j'y comprends pas grand chose pour l'instant.

    Un grand merci d'avance à celui ou ceux qui se lancerait meme pour un tout petit bout du code pour aller chercher les lignes des XML ça me fera un bon début pour commencer, d'ailleurs la première question aurait due être: est ce qu'au moins c'est réalisable?.

    MERCI d'avoir pris le temps de lire.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par looping6767 Voir le message
    1- ouverture d'une boite de choix afin de sélectionner les X zip a traiter;
    https://msdn.microsoft.com/fr-fr/lib.../ff834966.aspx

    2- lister ces zip dans la première colonne d'un tableau
    https://msdn.microsoft.com/fr-fr/lib.../gg278779.aspx

    par date de création
    https://msdn.microsoft.com/fr-fr/lib.../ff840646.aspx

    avec lien hypertexte pour ouvrir le zip;
    https://msdn.microsoft.com/fr-fr/lib.../ff839653.aspx
    Mais, étant donné que tu veux faire ça par VBA, je ne vois pas trop à quoi peut servir le lien.

    3- pour chaque fichier XML present dans chaque zip
    Déjà, il va falloir commencé par le décompresser.
    Et le code dépendra de ton logiciel de compression. S'il n'a pas de bibliothèque VBA, il faudra passer par une commande en ligne avec le Shell.

    chercher la balise <cle_sy>XXXXXXXX</clesy> et repport des données XXXX dans la colonne 2 du tableau
    Le plus simple est de l'ouvrir dans Excel comme un fichier texte.
    https://msdn.microsoft.com/fr-fr/lib.../ff837097.aspx
    Lancer ensuite un Find
    https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx
    Et de trier les données avec une combinaison de InStr et Mid
    https://msdn.microsoft.com/fr-fr/lib.../gg264811.aspx
    https://msdn.microsoft.com/fr-fr/lib.../gg251677.aspx

    je me rends bien compte du travail que ca demande et que je suis malheureusement dans l'incapacité d'aider car j'y comprends pas grand chose pour l'instant.
    Ca n'a rien d'incurable.
    http://bidou.developpez.com/article/VBA/
    En tout cas, ce n'est pas une raison de demander à d'autres de faire ton travail à ta place.

    Pour info : http://club.developpez.com/regles/#LIV-N

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    bonjour,

    merci pour ton aide ô combien précieuse...

    j’espère qu'un jour à ton tour tu iras sur un forum en dehors de ton domaine de compétences et qu'un "expert" te tendra un manuel en te disant "tu as qu'a apprendre".

    Il est vrai que je n'avais pas lu dans les "règles" du forum que celui ci était réserver aux seuls initiés, ça fait un peu franc maçon ou illuminati quand même...

    Pour finir sache que le feignant en question qui est chef de service fait ça sur son temps libre pour aider des gens qui travail pour lui et pour qui excel est un gros point d’interrogation.

    Je me rends compte que ma demande demandait certainement beaucoup de travail, mais me donner ne serait ce qu'un petit bout de code ou une piste sur un ton moins pédant aurait été plutôt sympa.

    bref, je te souhaite une très bonne continuation, et surtout de trouver l’épanouissement le plus total dans l'aide que tu pourrait apporter aux gens.

    Très cordialement.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par looping6767 Voir le message
    j’espère qu'un jour à ton tour tu iras sur un forum en dehors de ton domaine de compétences et qu'un "expert" te tendra un manuel en te disant "tu as qu'a apprendre".
    Et moi j'espère qu'un jour tu passeras une demi-heure à aider quelqu'un en recherchant toutes les références dont il a besoin et qu'il traitera avec mépris le temps que tu lui as consacré.

    Je me rends compte que ma demande demandait certainement beaucoup de travail, mais me donner ne serait ce qu'un petit bout de code ou une piste sur un ton moins pédant aurait été plutôt sympa.
    Si Excel est pour toi aussi obscure que tu le dis, je doute qu'un "petit bout" de code ou une "piste" t'aurais suffit.
    Ton message le montre bien : dans ce que je t'ai fourni, il y a de nombreuses pistes et beaucoup de codes. Je t'ai indiqué un par un chaque élément dont tu avais besoin.
    Mais visiblement, ce que tu souhaitais, c'est qu'on te fasse l'intégralité de ce que tu demandais, comme le prouve ta réponse.

    Pour finir sache que le feignant en question qui est chef de service
    Je n'ai traité personne de fainéant. Je t'ai juste incité à participer un minimum au travail d'élaboration du code.
    Ce que je trouve étrange, au passage, c'est que depuis ton inscription il y a moins d'une semaine, tu sois passé de Directeur commercial à chef de service.

    bref, je te souhaite une très bonne continuation, et surtout de trouver l’épanouissement le plus total dans l'aide que tu pourrait apporter aux gens.
    C'est sûr que ce genre de réponse est vraiment motivante pour continuer à donner de son temps bénévolement.

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    allons, je vais te montrer que, quand bien même ça a pu te paraître brusque, menhir a raison

    voici donc une procédure qui permet de dézipper un fichier situé à l'emplacement X, pour le placer dans le dossier situé à l'emplacement Y

    - source = chemin d'accès complet au Zip (nom du fichier + extension inclus)
    - destination = chemin d'accès complet au dossier de destination
    j'ai laissé les paramètres typés en Variant, mais un String fait très bien l'affaire il me semble

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub DeZip(Source As Variant, Destination As Variant)
    Dim oApp As Object
    Set oApp = CreateObject("Shell.Application")
        oApp.NameSpace(Source).CopyHere oApp.NameSpace(Destination).Items, 16
    Set oApp = Nothing
    End Sub
    voilà, je ne crois pas que ceci va t'avancer, tout du moins, tu n'avanceras pas aussi vite qu'en consultant les références fournies par Menhir.
    Car en l'état, tu ne semble pas capable de comprendre et d'apprendre à décortiquer ce code si tu n'en connais pas la mécanique et le "phrasé" (méthodes, propriétés, variables, objets etc...)

    je suis d'accord pour dire que ce forum est réservé à des initiés.
    D'ailleurs, la bannière du forum n'indique-t-elle pas "Club des développeurs et IT pro" ?

    tout le monde peut devenir (à son niveau) un développeur, en VBA par exemple, il suffit de savoir écrire des lignes de codes qui répondent à un processus logique qu'on cherche à automatiser dans une procédure, une fonction.

    Un initié, c'est quelqu'un qui connaît l'outil ... sans forcément le maîtriser.

    Si l'outil n'est lui-même pas connu, il devient alors nécessaire de l'apprivoiser et plutôt que de jeter en pâture une solution, ce forum cherchera avant tout à "te mettre sur les rails" plutôt qu'à te fournir une matière qui ne te permettra pas d'avancer seul par la suite.
    Et c'est le sens de la réponse de Menhir qui en découle.


    Il faut savoir accepter d'être pris par la main vers la bonne direction, même si ce n'est pas celle qu'on attendait au départ.
    Soit tu fais confiance aux contributeurs du forum, bénévoles cherchant à aider, soit tu dois passer ton chemin, d'autres forums ont pour philosophie de te donner à manger, mais pas de t'apprendre à pêcher. Si c'est vraiment ce que tu cherches, alors ce ne sera pas ici

  6. #6
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    tu as raison jo_levrai,

    les liens données par menhir sont excellents et je les avaient potassé avant de venir ici, le fait est que j'arrive a faire certaines choses mais pas a les compiler, je m'explique:

    je comprends le principe du getopenfilename et je comprends comment copier des fichiers d'un répertoire a un autre, mais j'arrive pas a copier les fichiers sélectionnés avec getopenfilename. (j'y arrive mais pour un seul fichier quand getopenfilename est déclaré sur false)

    a coté de ça j'ai ma macro qui me liste mon répertoire et qui me crée mes liens hypertextes qui marche très bien ( pas vraiment un problème car a la fin de la macro pour déplacer les fichiers j'appel cette macro donc pas besoin de compiler les deux) et j'ai fait un batch pour deziper ces fichiers qui marche aussi. - merci quand même pour ta contribution -


    Maintenant je laisse en suspends l'histoire de la copie avec getopenfilename car j'ai parcourue beaucoup de pages et de sites et je ne trouve pas la solution, je vais donc passer a la partie ou je vais chercher mes chaines de caractères dans les .xml pour les reporter dans excel.

    je posterais le résultat quand j'arriverais au bout et a ce moment là demanderais si il y avait moyen de faire plus simple et/ou de l'optimiser et au passage si ça peut aider quelqu'un tant mieux.

Discussions similaires

  1. Aller chercher des données dans un stringgrid
    Par cre3000 dans le forum Langage
    Réponses: 2
    Dernier message: 29/02/2008, 13h27
  2. Inserer des données dans fichier Xml
    Par Logarythme dans le forum InfoPath
    Réponses: 3
    Dernier message: 28/02/2008, 08h35
  3. Récupérer des données dans un .XML
    Par Lootro dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/08/2006, 22h38
  4. Supprimer des données dans un xml
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 49
    Dernier message: 12/08/2004, 16h49
  5. chercher des données dans sa propre requete...
    Par shadowbob dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/06/2004, 17h13

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