Rapporter des donnée d'un ficher à un autre

Merci pour tes explications, j’essayerai de me servir de l’aide EXCEL avant de poser une question.

Concernant ma question subsidiaire, il ne s’agit pas de ces fichiers mais d’autres fichiers je te joins à ce message deux fichiers source, d’où je souhaite extraire une ligne (ligne 434 de chaque fichier source) et la placer dans le fichier cible.

Je souhaiterais, copier la ligne 434 de chaque fichier source et la coller dans le fichier cible, avec la désignation qui va dans la colonne D.

le tableau dans le fichier cible est prêt a accueillir les deux lignes exemple des deux fichiers sources joins.

remarque : les fichiers sont trop lourd j'étais obligé de passer par C-joint...

fichier source 1 : http://cjoint.com/13oc/CJDoigshg49.htm

fichier source 2 : http://cjoint.com/13oc/CJDoiVuvdJ5.htm

10fichier-cible.xlsx (10.39 Ko)

Salut,

Normalement si c’est un nouveau problème, on recommence un nouveau fil, mais bon là je veux bien continuer avec toi sur ce fil.

Tu ne me donnes pas trop d’explications alors je vais devoir présumer beaucoup de choses et on verra ce qu’il faudra modifier.

J’ai considéré que tous tes fichiers étaient dans le même dossier, que tous les fichiers à visiter commençaient par «fichier_source» (et qu'il n'y a bien entendu aucun fichier à ne pas visiter qui commencerait par ces mots) et qu’ils s’ouvraient tous sur la feuille sur laquelle tu as les données à copier.

Sinon le reste devrait fonctionner tout seul

Cordialement.

Merci beaucoup,

Mais avant de discuter sur ce nouveau sujet, j'ai un petit problème que j’ai négligé dans le sujet des moteur, en fait si on supprime ou on ajoute une ligne la macro prévoit ça, mais quand on ajoute une colonne ou on supprime une colonne, la macro ne marche plus...

Et concernant la macro, je souhaite l'avoir dans le fichier cible, et aller chercher les valeurs dans le dossier source, car "le fichier cible" c'est une base que je vais créer et je vais me servir d'une base déjà existante, ou je ne peux pas intégrer ma macro...

Je souhaiterais finaliser le premier sujet et on en discutera du deuxième, même ouvrir un nouveau sujet si tu préfères.

Merci beaucoup pour ton aide

Messin

Salut,

Tu m’embêtes vraiment d’avoir attendu si longtemps avant de dire que tu désires la macro dans un autre fichier. Ca veut dire que les 3 quarts du travail effectué l’ont été pour rien et qu’il faut tout recommencer

messin57000 a écrit :

...en fait si on supprime ou on ajoute une ligne la macro prévoit ça...

Non pas du tout, c’est un pur hasard, rien n’a été prévu dans la macro à ce niveau-là il me semble ou alors je ne comprends pas du tout ce que tu veux dire.
messin57000 a écrit :

... mais quand on ajoute une colonne ou on supprime une colonne, la macro ne marche plus...

Ca me semble évident. Tu ne m’as jamais dit que tu voulais pouvoir ajouter ou supprimer des colonnes, donc c’est normal que ça coince.
messin57000 a écrit :

…., car "le fichier cible" c'est une base que je vais créer et je vais me servir d'une base déjà existante, ou je ne peux pas intégrer ma macro...

Je n’ai strictement rien compris à cette explication. Comme nouvelle base, tu désires utiliser le fichier « Dossier Cible » que je t’ai fourni le 26 octobre ou un autre fichier ? Car il est inutile de me laisser continuer à travailler dans le vide, non ?

A te relire.

Bonjour Yvouille,

Oui je m’excuse tout d’abords si je ne me suis pas rendu compte assez tôt de cette négligence dans la macro, car moi-même je ne savais pas qu’une colonne peut être ajouté ou supprimé…

Oui exactement, c’est le fichier cible que tu m’as envoyé le 26 octobre qui doit contenir le bouton qui doit rapporter les valeurs du fichier source et non pas l'inverse, et il faudrait que même si on ajoute une colonne ou on la supprime, les bonne valeurs vont dans les bonnes colonnes.

J’ai une idée, c’est au lieu de chercher la colonne G ou H, on cherche la colonne ou est marqué item ou supplier … comme ça on est sûr que même si une colonne est supprimée ou ajoutée, cela n’empêchera pas la macro de fonctionner comme on le souhaiterait.

Je m’excuse encore une fois si je n’étais pas très clair dans mes explications.

Merci pour ton aide

Messin

Salut,

Dans le fichier cible ci-joint, le code mis en place contrôle si un fichier appelé exactement «Moteur Source », au format .xlsx , est ouvert, sinon il l’ouvre selon le chemin indiqué directement dans le code.

Si le fichier source pouvait varier d’une fois à l’autre (par exemple une fois tu devrais ouvrir le « Fichier Source 1 », parfois le « Fichier Source 2 », etc.) ou que tu devais ouvrir à chaque fois un autre fichier source, il y aurait la possibilité de rechercher le bon fichier dans ton arborescence par l’intermédiaire du code, plutôt que d’aller changer à chaque fois le nom du fichier source dans le code.

Dans ce fichier source, un certains nombres de mots sont recherchés (attention à l’orthographe et à la casse, elles doivent être exactes) et si ces mots sont trouvés, les colonnes correspondantes sont reportées dans le fichier cible.

Il faut absolument qu'il y ait quand même la colonne "Item" dans le fichier source, autrement toutes les lignes du fichier cible sont effacées (le code contrôle s'il y a une information ou non dans la colonne "N°article" du fichier cible pour chacune des lignes et effacent celles qui n'en n'ont pas). S'il est possible que le fichier source ne comporte pas de colonne "Item", il faudra voir comment modifier le code.

Lorsque la colonne « P2-0% » est trouvée, j’ai considéré qu’il y avait toujours ces 24 mêmes colonnes à la suite, jusqu’à la colonne «I-125%», et elles sont reportées en bloc. Si le nombre de ces colonnes pouvait varier – ce que je ne comprendrais absolument pas – il faudra corriger le code.

Lorsque les transferts nécessaires d’un fichier à l’autre sont terminés, le fichier source est nouvellement automatiquement refermé.

Pour l'instant, il n'y a pas non plus de garde-fou au cas où le fichier source n'est pas trouvé à l'adresse indiquée. Serait-ce nécessaire ?

Je crois comprendre que tu as placé des fichiers bidon sur le Forum et que tu tentes de transférer les codes reçus dans tes fichiers réels. Ce n’est pas toujours la bonne solution, car il y a plein de petites embuches que l’on ne peut pas voir et pour lesquelles on pourrait te proposer l’une ou l’autre solution. De plus, ça multiplie le nombre d’échanges sur le fil.

A te relire.

Bonjour Yvouille,

C'est juste parfait, c'est exactement ça que je voulais, et concernant les fichiers de base moi-même j'ai pas accès donc je travaille sur des fichiers de travail et je pense après il n'y aura que des petites adaptations...

Je te remercie énormément pour ton aide

Concernant le sujet qu'on avait entamé dans le post du 29 octobre, tu souhaites qu'on le continue dans le même fil car c'est un peu le même topique, c'est toujours par rapport au problème de rapporter des données d'un fichier à un autre, ou plutôt que j'ouvre un nouveau fil de discussion?

Merci beaucoup

Messin

Re,

Je t'ai déjà dit que l'on pouvait continuer sur ce fil et comme je t'ai déjà fourni une première solution le 29 octobre, ce serait bien que tu me fasses savoir ce que tu en penses.

Cordialement.

Salut,

Alors j'ai essayé de faire marcher la macro mais je n’arrive pas, y'as-t-il des choses à adapter dans la macro? Car moi j'ai trouvé qu'il y'avait rien à adapter, et j'ai bien mis les fichiers dans le même dossier...

Merci

Messin

Re-bonjour,

Tel que sur l’image ci-dessous, j’ai placé dans le même dossier "Messin" : deux fichiers commençant par les mots «fichier_source» ainsi que le fichier fourni sur le Forum et un fichier quelconque nommé « xxxxxx ».

capture 31 10

Si j’ouvre le fichier nommé « fichier_cible_V1 » et que je lance la macro par l’intermédiaire du bouton « Report », les données sont bien reportées.

capture 31 10 bis

Peux-tu contrôler les étapes indiquées ci-dessus et me redire ce qui se passe exactement lorsque tu lances la macro.

NB : S'il y avait 26 fichiers commençant par les mots «fichier_source», ils seraient reportés les 26. Maintenant ceci n'était qu'un exemple. Si tes fichiers à visiter comportent tous le mot-clé "Tralala" ou qu'ils n'ont aucune partie commune, il faudra voir comment modifier la macro.

Merci de bien lire les textes que je me donne la peine de t'écrire.

Yvouille a écrit :

Tu ne me donnes pas trop d’explications alors je vais devoir présumer beaucoup de choses et on verra ce qu’il faudra modifier.

Amicalement.

Re bonjour,

C’est exactement ce que j'ai fait mais au quand je clique sur le bouton reporter, aucune valeurs n'est rapportée...pourtant j'ai fait exactement la même chose, je ne vois pas où est le souci...

Cordialement

Re,

Ca ne me paraît pas possible. Peux-tu me faire parvenir une copie d’écran sur laquelle on voit ton arborescence, mais il faut absolument que les noms des fichiers soient lisibles.

De plus, connais-tu le mode pas-à-pas ? Si oui, il faudrait que tu passes le code en revue au pas-à-pas et que tu me dises en tout premier lieu si les fichiers visités s’ouvrent bien comme il faut ?

Mais encore, est-ce que tes fichiers visités comportent vraiment des données sur la feuille qui est à l'écran lors de leur ouverture sur la plage E434:AZ434 ?

A te relire.

Re Bonjour,

Si j’avais une copie d'écran, à te fournir ça serai juste la copie du fichier cible, car quand je clique sur report, il ne se passe absolument rien...

Non malheureusement je ne connais pas le mode pas à pas, mais je pense que les fichiers ils s'ouvrent pas du tout.

Pour l'instant je fais le teste que sur les deux fichiers source 1 et 2 en question.

Merci

Messin

Salut,

messin57000 a écrit :

Si j’avais une copie d'écran, à te fournir ça serai juste la copie du fichier cible, car quand je clique sur report, il ne se passe absolument rien...

Es-tu en train de me dire là que tu n'as pas placé les fichiers source dans le même dossier que le fichier cible avant de lancer la macro ? Ce serait alors normal qu'il ne se passe rien

Sur mon image du 31 octobre, je te montre bien qu’il doit y avoir dans un dossier (chez moi le dossier « Messin »), tous les fichiers cible et source.

Concernant le mode pas-à-pas, tu vas dans l’Explorateur VBA et tu places le curseur quelque part dans ta macro. Tu tapes alors F8 plusieurs fois de suite et le code est passé au ralenti, ligne par ligne. Alors, même s’il est indiqué en début de code qu’il ne faut pas actualiser l’écran (par exemple ne pas montrer les fichiers qui s’ouvrent et qui se referment), chaque étape est visible l’écran ; raison pour laquelle je te demandais de voir – lorsque tu passes la ligne Workbooks.Open Filename:=Chemin & "Moteur Source.xlsx", si le fichier source s'ouvrait ou non à l’écran.

En préparant cette grande explication, je me rends cependant compte d’une chose : un peu partout dans mon code j’ai indiqué « A ADAPTER » car bien entendu que cette macro a été créée pour la configuration de MON arborescence et pour des fichiers portant les noms indiqués dans le code. Contrôle donc encore cela.

Bonnes salutations.

Bonjour Yvouille,

J'ai bien placé les fichier source dans le même dossier que le fichier cible dès le début...

J'ai essayé d'appliquer le mode pas à pas, et le code VBA passe de la phrase GoTo Etiquette à la fin, c'est à dire la phrase

Etiquette : Fichier_traité = Dir

Il saute toute la partie intermédiaire :

DerLig = ThisWorkbook.Sheets("Feuil1").Range("E" & Rows.Count).End(xlUp).Row + 1

Workbooks.Open Chemin & Fichier_traité

ActiveSheet.Range("B434").Copy Destination:=ThisWorkbook.Sheets("Feuil1").Range("D" & DerLig)

ActiveSheet.Range("E434:AZ434").Copy Destination:=ThisWorkbook.Sheets("Feuil1").Range("E" & DerLig)

Workbooks(Fichier_traité).Close False

Remarque : Dans mon code VBA à aucun moment c'est marquer à adapter, je sais pas s'il y'a quelque chose à ada^pter dans le code...

Merci

Messin

Re Bonjour,

En réfléchissant je trouve ça un peu lourd la manière avec laquelle j'ai procédé car des fichiers sources j'en ai une centaine, et en plus je ne suis pas sûr que tous les fichiers source soient dans le même dossier, je ne sais pas ce que t'en pense?...

Je pense créer 3 ou 4 bases intermédiaire qui vont contenir que les lignes 434 étalées sur plusieurs lignes et faire une base finale qui va ramener que les lignes toutes prête.

C'est une idée pour l'instant une fois les fichiers créées je te les mets à disposition sur ce fil de discussion, ça évitera de te faire travailler pour rien et modifier la manière de procéder après ton boulot.

Je posterai une réponse complète avec les fichiers quand ils seront prêt (je pense dans la semaine).

Merci pour ton aide et au prochain post

Messin

Re bonjour Yvouille,

Comme convenu, j'ai préparé un peu le terrain et j'ai réfléchi à une autre manière de procéder pour le rapport des données.

Ci joint 3 fichiers nommés tous "equations", mais qu'ils ne sont pas dans le même dossier, mon but c'est créer une base finale qui va copier les données de chaque fichier "equations" dans son emplacement dans le réseau et les coller dans la base grâce à un bouton sans écraser les données copiées auparavant.

Donc les fichiers sources se nomment tous pareil « equations » mais ils n’ont pas le même emplacement dans le réseau, l’idéal c’est prévoir un emplacement pour chacun des fichiers.

Le fichier base finale, et prêt à recevoir les données les lignes prête ne correspondent pas forcement aux nombres qu’elle doit recevoir, il faudrait rapporter tous les données qui existent dans les fichiers sources et qu’elles soient mise à jour si jamais on ajoute une ligne dans les fichiers source « equations ».

Je vais les nommées equations1, equations2 et equations3 pour que tu puisses les distinguer mais dans mon réseau ils seront nommées tous pareil « equations », donc l’idéal la aussi c’est de placer chacun des fichiers dans un dossier et les nommer tous « equations » se baser sur ça pour créer la macro.

Le bouton qui exécute la macro doit être dans la base finale.

J’espère j’étais assez clair, je suis disponible pour toutes les questions.

fichier equations 2 (trop lourd) http://cjoint.com/13nv/CKhp7TObUIl.htm

Merci Beaucoup pour ton aide

11equations-1.xlsm (62.54 Ko)
15equations-3.xlsm (54.46 Ko)
25base-finale-ve.xlsm (32.09 Ko)

Salut,

Je suis désolé, mais je ne peux pas être continuellement sur le Forum et ce serait bien de me laisser le temps de répondre avant d'envoyer un nouveau message.

messin57000 a écrit :

En réfléchissant je trouve ça un peu lourd la manière avec laquelle j'ai procédé car des fichiers sources j'en ai une centaine, et en plus je ne suis pas sûr que tous les fichiers source soient dans le même dossier, je ne sais pas ce que t'en pense?...

Je t’avais dit que tu aies 2 ou 26 fichiers, ça fonctionne la même chose. Si tu as 100 fichiers, ça ne devrait pas non plus être un problème. Mon code fonctionne parfaitement bien, il faut juste essayer de comprendre – si tu en as l’envie - pourquoi ça ne passe pas chez toi. Si tu ne peux pas déplacer tes fichiers dans le même dossier, on peut modifier le code en conséquence, ça risque juste de prendre plus de temps et ça risque d'être compliqué de trouver un mot-clef qui fasse que l'on ne visite que les bons fichiers. Mais là également, il y a d'autres méthodes si nécessaire.

Par contre je ne me lancerais pas dans la résolution de ta nouvelle idée. Soit on continue avec le code déjà fourni, soit je laisse tomber et je te prierais d’ouvrir un nouveau fil à ce sujet.

Tout d’abord je dois te dire que j’ai confondu tes deux groupes de fichiers et qu’il n’y a finalement rien A ADPTER dans ce code-ci.

messin57000 a écrit :

J'ai essayé d'appliquer le mode pas à pas, et le code VBA passe de la phrase GoTo Etiquette à la fin, c'est à dire la phrase

Etiquette : Fichier_traité = Dir

Il saute toute la partie intermédiaire :

Il est tout à fait normal que cette partie intermédiaire soit sautée si le fichier « traité » ne commence pas par "fichier_source".

En fait mon code passe en revue tous les fichiers Excel placés dans le même dossier que le fichier de base « Fichier cible_V1 », y compris celui-ci. Si tu pratiques le pas-à-pas et que regardes quel est le nom de la variable « Fichier_traité », tu peux voir quels fichiers ont été trouvés dans le dossier concerné.

Dans l’image ci-dessous, le premier fichier passé en revue – par rapport à mon arborescence - est le "fichier cible_V1.xlsm" lui-même. Tout d’abord tu vois que c’est le fichier ouvert à l’écran par le nom inscrit tout en haut dans l'explorateur VBA. Dans la fenêtre « Variables locales », tu vois que la variable « Fichier_traité » porte également son nom. Comme le nom de ce fichier ne commence pas par "fichier_source", le code passe par GoTo Etiquette et le passage suivant est sauté volontairement.

capture 07 11 1

Lors du deuxième passage de cette boucle, le deuxième fichier passé en revue est le "fichier_source_1.xlsx". La variable « Fichier_traité » porte donc son nom. Comme le nom de ce fichier commence par "fichier_source", le code ne passe plus par GoTo Etiquette et continue avec la ligne DerLig = ThisWorkbook.Sheets("Feuil1").Range("E" & Rows.Count).End(xlUp).Row + 1, etc.

Après être passé par la ligne Workbooks.Open Chemin & Fichier_traité, ce fichier est maintenant ouvert à l’écran. Dans l’image ci-dessous, tu vois donc son nom en titre EN ARRIERE PLAN, dans Excel, et la variable « Fichier_traité » porte également son nom. Les reports désirés de ta part peuvent donc avoir lieu par les deux lignes suivantes.

capture 07 11 2

Le fichier nouvellement ouvert est refermé par la ligne Workbooks(Fichier_traité).Close False et on passe au fichier suivant (jusqu’à épuiser tes 100 fichiers).

Je t’avais demandé de me montrer une photo de ton arborescence afin de voir – comme tu peux le voir sur l’image que je t’ai fournie moi le 31 octobre – si les fichiers portaient bien les noms qu’ils devaient et de contrôler qu’ils soient tous bien placés côte-à-côte.

L'ouverture et la fermeture des fichiers visités n'est bien entendu pas visible à l'écran si tu lances le code autrement que par le mode pas-à-pas.

Je n’ai pas lu tous tes textes, juste les deux repris ci-dessus.

Tu essaies encore ?

Re bonjour Yvouille,

C’est bon je vois ou était mon erreur, en fait les fichiers sources étaient bien dans le même dossier mais pas le même que le fichier cible… Ça marche parfaitement maintenant, merci beaucoup.

L’astuce pour la variable locale je ne connaissais pas c’est très utile !

Pour la suite, j’ai préparé 3 bases que je dois rapporter les données dans une base finale et tracer des graphes et ça sera la fin… c’est mon dernier post au-dessus, donc j’ouvre un nouveau fil de discussion et je te remercie énormément pour ta générosité et ton sens de l’aide et de partage.

Merci encore une fois et au plaisir dans le nouveau fil si t’es disponible

Messin

messin57000 a écrit :

en fait les fichiers sources étaient bien dans le même dossier mais pas le même que le fichier cible…

Ah, si seulement tu m'avais fourni la copie d'écran demandée, on aurait gagné +/- 8 messages

Peut-être bien à une prochaine fois.

Rechercher des sujets similaires à "rapporter donnee ficher"