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

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 31 octobre 2013, 16:24

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
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 8360
Appréciations reçues : 9
Inscrit le : 6 avril 2007
Version d'Excel : 2010

Message par Yvouille » 31 octobre 2013, 16:50

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.
Yvouille


:btres:
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 5 novembre 2013, 08:58

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
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 8360
Appréciations reçues : 9
Inscrit le : 6 avril 2007
Version d'Excel : 2010

Message par Yvouille » 5 novembre 2013, 21:48

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.
Yvouille


:btres:
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 6 novembre 2013, 09:03

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
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 6 novembre 2013, 11:06

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
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 7 novembre 2013, 16:00

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
Fichiers joints
Base finale VE.xlsm
(32.09 Kio) Téléchargé 22 fois
equations 3.xlsm
(54.46 Kio) Téléchargé 15 fois
equations 1.xlsm
(62.54 Kio) Téléchargé 11 fois
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 8360
Appréciations reçues : 9
Inscrit le : 6 avril 2007
Version d'Excel : 2010

Message par Yvouille » 7 novembre 2013, 18:43

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.PNG
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.PNG
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 ?
Yvouille


:btres:
messin57000
Membre habitué
Membre habitué
Messages : 56
Inscrit le : 7 octobre 2013
Version d'Excel : 2007

Message par messin57000 » 8 novembre 2013, 09:04

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
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 8360
Appréciations reçues : 9
Inscrit le : 6 avril 2007
Version d'Excel : 2010

Message par Yvouille » 8 novembre 2013, 16:39

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 :D

Peut-être bien à une prochaine fois.
Yvouille


:btres:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Rapporter liste sous conditions
    par Pter22 » 26 mai 2016, 17:46 » dans Excel - VBA
    4 Réponses
    73 Vues
    Dernier message par tulipe_4
    26 mai 2016, 19:26
  • Une formule pour rapporter l'information
    par Angelko » 10 mars 2018, 17:43 » dans Excel - VBA
    4 Réponses
    86 Vues
    Dernier message par Angelko
    10 mars 2018, 18:30
  • pb lecture ficher
    par franckdg » 14 juin 2015, 21:23 » dans Excel - VBA
    1 Réponses
    255 Vues
    Dernier message par Philbegh
    15 avril 2018, 15:44
  • Imprimer un ficher A4 en A3
    par Aummani » 3 septembre 2018, 13:26 » dans Excel - VBA
    1 Réponses
    27 Vues
    Dernier message par evolm
    3 septembre 2018, 14:08
  • récupérer nom du ficher
    par lolo69490 » 6 juin 2014, 13:53 » dans Excel - VBA
    7 Réponses
    286 Vues
    Dernier message par lolo69490
    18 juin 2014, 11:22
  • Comment alléger un ficher efficacement?
    par charleess » 14 juin 2014, 18:06 » dans Excel - VBA
    1 Réponses
    280 Vues
    Dernier message par eriiic
    14 juin 2014, 20:23