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 :

Récupération de données


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Récupération de données
    Bonjour le forum,

    Débutant en vba et autodidacte, je suis face à un problème que je n'arrive pas à résoudre :

    J'ai un fichier (F1) que j'extrait d'un logiciel mais qui est incomplet.
    J'ai un fichier (F2) avec les données à compléter pour les lignes concernées (certaines n'ont pas besoin de maj).
    J'ai un fichier (F3) avec des données supplémentaires à ajouter au F1 pour les lignes concerner aussi

    J'ai deux cellules différentes, sur une même ligne, qui sont les références et numéro de séries qui me servent de clef : identique pour les 3 fichiers.

    Ma question est donc comment faire pour récupérer les données du F2, les imputer dans le F1 puis imputer aussi les données du F3 dans le F1 svp ?

    Sachant que le mois d'après j'ai F1' avec les données manquante, et j'aimerai ajouter les données du F1 dans le F1', (ainsi que les données du F2' et F3' dans le F1') sachant que si la clef est introuvable alors next ligne.

    Je ne sais pas si c'est assez clair ou si vous avec besoin de plus d'explications / de photos... Merci d'avance pour votre aide

  2. #2
    Responsable
    Office & Excel

    Salut.

    Power Query est ton ami pour ce genre de travail... J'ai publié un billet de blog à ce sujet sous forme de vidéo.


    Il y a d'autres façons de procéder pour intégrer les tableaux à la solution Power Query. Cette vidéo illustre UNE façon de faire parmi d'autres, plus ou moins simples que celle-ci selon où l'on place la simplicité
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre à l'essai
    Salut Pierre,

    Juste WOW ! Je ne connaissais pas du tout et je sens que je vais essayer d'exploiter cette fonction que je ne connaissais pas du tout !

    Je galère pour l'instant à faire ce que je veux mais bon on y croit ! merci !

  4. #4
    Responsable
    Office & Excel

    C'est pour cela que j'en ai fait une video. Je ne sais pas pourquoi Youtube me l'a salopée de cette façon, ceci dit.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre à l'essai
    Bonjour Pierre,
    Bonjour le forum,

    Je reviens car je n'arrive pas à demander à power query de résoudre mon problème...
    Je met une image pour essayer de préciser ma demande.



    Si vous avez des tutos à me fournir ou autre pour m'aider je suis preneur, j'avoue galérer plus que je ne pensais (et je pensais aussi me débrouiller sur xcel mais en fait j'ai encore un long chemin à parcourir !!)

    Merci pour votre aide !

  6. #6
    Responsable
    Office & Excel

    Désolé, je ne comprends pas les règles de transition entre tes écrans, notamment le x en L5. Du coup, difficile de t'aider
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre à l'essai
    Je comprends.
    J'ai mis des données plus explicites :

  8. #8
    Responsable
    Office & Excel

    Désolé, je ne comprends toujours pas.

    Dans ton quatrième fichier (le 2'), il y a trois colonnes en plus que dans les trois premiers fichiers. D'où viennent-elles?

    Que souhaites-tu fusionner? Il serait intéressant d'avoir la situation AVANT et la situation SOUHAITEE...

    C'est peut-être moi qui suis ramolli du cerveau aujourd'hui...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre à l'essai
    Je dois surement mal exprimer mon besoin désolé

    Voilà la situation : F1 est un fichier rempli de données extraite d'un logiciel.

    Sauf que dans ces données j'ai quelques manip à faire : les numéros de séries d'une même références se renseignent pas comme je souhaite (je vais dire qu'elles sont "mal-propre" pour une simplicité de langage) (j'ai à la base 1 ligne pour tous les numéros de série mais j'aimerai avoir 1 ligne par numéro de série comme sur mon F1 (étape réussie) mais je duplique les données du 1er numéro de série donc les données des autres numéro de séries sont fausses).
    J'ai aussi un 2ème fichier qui rassemble les "bonnes" données avec les bons S/N et Références. J'aimerai extraire de ce fichier certaines colonnes pour les ref + numéro de série qui ont un problème dans le F1 sachant que toutes les données n'ont pas besoin de subir ce traitement car certaines sont correcte, et remplacer les données du fichier 1 par les données du fichier 2 quand nécessaire.

    Ensuite, le fichier est communiqué à un collaborateur qui ajoute des commentaires et données supplémentaires soit directement sur le fichier envoyé soit à partir d'un nouveau fichier. Dans le cas où c'est un nouveau fichier j'ai besoin de récupérer certaines colonnes du fichier qu'il m'envoie et de les ajouter à mon fichier de base.

    Puis la semaine d'après je dois récupérer les nouvelles données du logiciel et ajouter les changement effectués la semaine n-1 sachant que si un dossier est complété entièrement la ligne disparaît et donc pas besoin d'importer les data de la semaine précédente.

    Sachant que le mieux serait que ce soit le plus automatisé possible car manip à faire chaque semaine...

    Voila mon problème en dur. En essayant de traduire le plus simplement j'ai donc 3 fichiers (F1 = données extraite du logiciel "mal-propre" ; F2 = données "propre" ; F3 = ajout de données par le collaborateur) et j'ai besoin de les faire communiquer entre eux comme précédemment expliqué : certaines colonnes seulement et soit qui vient remplacer d'autres cellules soit qui vient s'ajouter à la suite du fichier F1 en fonction de la clef qui est Ref + numéro de série...

    Pas une mince affaire

    Merci pour ton temps et ton aide en tout cas, dis moi si je peux apporter plus de détails

  10. #10
    Responsable
    Office & Excel

    Je pense que la vidéo que j'ai produite devrait te mettre sur la voie de la solution avec Power Query.

    Si, dans F1, tu as des données "propres" pour certains articles et des données "malpropres" pour d'autres, et que dans F2, tu as des données propres pour tous tes articles, ne te compliques pas la vie à essayer de savoir quelles sont les propres et les autres dans F1. Remplace-les toutes par celles de F2. Dans certains cas (les propres), tu remplaceras une donnée par elle-même et dans d'autres cas (les malpropres), tu les remplaceras par les bonnes. Ce sera plus efficace que d'essayer de discriminer les bonnes et les mauvaises dans F1.

    Pour ce qui est du fait qu'un collaborateur ajoute des données dans un fichier, ce serait évidemment plus simple de systématiser l'approche en lui demandant d'ajouter toujours les données dans F1 ou toujours dans F3, mais pas dans l'un ou dans l'autre au petit bonheur la chance... Mais là aussi, je suppose qu'il y a une "règle". Soit on a complété la ligne dans F1, soit dans F3, mais j'imagine pas dans les deux à la fois pour la même ligne.

    Quand bien même ce serait le cas, on pourrait dans Power Query formuler pour déterminer que c'est F1 ou F3 qui "gagne" ou pour rejeter la ligne si elle a été modifiée des deux côtés.

    Quant à ne rependre que les lignes de la semaine précédente, ou sur base de n'importe quelle autre règle, Power Query est équipé là aussi pour formuler une colonne qui renverrait VRAI ou FAUX par exemple, avec un filtre avant le retour dans Excel sur l'une ou l'autre des valeurs logiques.

    La base, c'est de bien établir les règles de gestion, la situation de départ et celle à laquelle tu veux arriver en bout de course. Je suis peut-être bouché à l'émeri, mais si ta situation ne correspond pas à ce que je décris ci-dessus, c'est que je n'ai pas encore compris ta situation et tes règles de gestion.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre à l'essai
    Globalement c'est ça sauf que dans les données de F2 certaines données me sont inutile et même j'ai besoin qu'elle n'apparaissent pas dans F1 d'où l'importance d'avoir ce rapport en double clef entre F2 et F1 de plus les si les données sont modifiés par F2 le fichier F3 (du collaborateur) peut aussi traiter des lignes qui ont déjà été modifié par F2. Je pense effectivement qu'en maitrisant mieux Power Query ça se ferait assez simplement mais faut-il encore maîtriser Power Query que je découvre tout juste

    Ta vidéo m'aide effectivement sur le lien à faire entre les Fichiers qui me permet déjà de rassembler les données à changer sur les lignes avec des données malpropres mais je suis bloqué au niveau du changement de données : comment faire pour qu'une fois les données rassemblées en fusionnant les requêtes que ce soit les données de F2 qui viennent remplacer les données de F1 ?

    Pour le lien entre F3 et F1 je pense avoir réussi ce que je voulais faire grâce à ta vidéo.

    Pour le chargement des données de la semaine passée, je pense qu'en réussissant a charger les données de F2 dans F1 j'arriverai en procédant de la même manière à charger les données de la semaine passée dans le nouveaux fichier, mais comment ne pas tenir compte des données qui sont close d'une semaine à l'autre (et donc qui ne sont plus dans le nouveau F1) ?

###raw>template_hook.ano_emploi###