collecter des données sur plusieurs feuille d'un autre classeur puis les recopier ?

CHAKAL37

XLDnaute Junior
Bonsoir a Tous,

Je reviens vers vous pour mon projet de tableau de synthèse.
Petit résumé de ce que je veux faire : J'ai deux tableaux distincts, un Etude et un Travaux. Pour diverses raisons, je dois créer un classeur de synthèse, toutefois la difficulté réside que l'ordre de rentrée des données n'est pas la même, et difficulté supplémentaires sur le tableau travaux, les données sont sur plusieurs feuilles !
Ma première questions est la suivante : Est il possible de rapatrier les données de plusieurs feuille excel, dans un autre classeur ( j'ai vu des solutions par macro, mais dans le même classeur ... ) ?
Ensuite, et si c'est possible, je souhaiterais rapatrier ces données selon un certain ordre ( cf feuille "Travaux" du classeur "synthese" ). L'autre particularité de ce classeur "Suivi Travaux" est que les données sont eparpillés sur tous les onglets ( par exemple la colonne OTP ne se trouve que sur la dernière feuille ( Le seul point commun de toutes ces affaires est le N° SIE qui est LA donnée commune ( mais pas que, j'en reparle un peu plus loin ))
Une fois que les données Etudes seront rapatriés dans la feuille "Etudes" de mon classeur "Synthèse", et que les données Travaux dans la feuille "Travaux" du même classeur, il faut que je fasse un tableau RECAP ( feuille "RECAP" ), objectif premier de ce tableau, en commençant par les données Etudes puis par les données Travaux.
La j'ai deux "obligations" : Les données Etudes et travaux n'étant pas forcément entrés dans le même ordre, je dois faire correspondre le tout. Mon soucis est que sur certains dossiers, j'ai bien un N° SIE mais j'ai plusieurs Programme qui s'y rattache. Or dans la formule que Rachid m'a fourni dans un post précédent, je retrouve bien les données Etudes avec les données Travaux ... sauf dans ce cas précis, ou c'est la première valeur rencontrée qui est repliqué sur les différents Programme. Il me faudrait donc trouver une formule, qui rapatrie les données dans l'ordre des N° SIE puis dans l'ordre des Programme.

Voila sur quoi je bute actuellement. Je vous fournit les différents tableaux, avec pour le classeur "synthèse" ce que je doit avoir au final.

Merci d'avance pour votre contribution.

Bonne soirée et a bientôt.
 

Pièces jointes

  • synthese .xlsx
    21.1 KB · Affichages: 328
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 70
  • PLANNING BE.xlsx
    98 KB · Affichages: 105
  • synthese .xlsx
    21.1 KB · Affichages: 333
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 69
  • PLANNING BE.xlsx
    98 KB · Affichages: 110
  • synthese .xlsx
    21.1 KB · Affichages: 331
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 67
  • PLANNING BE.xlsx
    98 KB · Affichages: 101

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

ET en plus j'ai même pas répondu a Modeste .....tsssss
Pour répondre a ta question .... oui il le fallait, parce que on me l'a demandé que suite a cette première ébauche, d'autres fonctions vont venir se greffer plus tard, il me fallait donc non seulement différencié, mais également les regrouper pour plus tard. Ce n'est pas le choix le plus logique en apparence mais aujourd'hui, c'est nécessaire. Peut-etre qu'une prochaine version ou évolution viendra modifier cette donne...
 

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Bonjour,

Merci pour les précisions apportées dans ton message #16

Pour ta question concernant le code, Application.Match est l'utilisation, via Vba, de la fonction EQUIV().
Quand on écrit
Code:
otp = Application.Match(sh.Range("A" & lig), src.Sheets("Travaux").Range("A2:A600"), 0)
on demande à Excel de chercher -précisément- la valeur figurant en colonne A de la ligne en cours, dans la plage A2:A600 de la feuille Travaux et on affecte à la variable otp, le n° de la ligne où sera trouvée la valeur (erreur de type #N/A, quand la valeur n'est pas trouvée ... d'où le "If Not(Iserror(otp))" à la ligne suivante).

Enfin pour la recherche combinée des N° SIE et Programme, avant de chercher une solution, il faudrait d'abord se pencher sur la question suivante: comment se fait-il que la grande majorité des "codes programmes" en feuille "Travaux" contiennent une espace, entre l'année et les caractères qui suivent, alors qu'il n'y en a presque jamais dans la feuille RECAP (et ce, pour un même code, semble-t-il) :confused:
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Slt Modeste,

c'est vrai que ce détail là m'avait échappé ! Mais la réponse est à trouvé dans la feuille "Etudes" ou on retrouve la même configuration de syntaxe pour la valeur "Programme" ... ce qui est normal puisque ce sont ces valeurs depuis la feuille "Etude" que nous recopions dans "RECAP" !!
Du coup je suppose que cette légère différence va poser problème !
L'espace n'étant pas capitale pour la compréhension, ne pouvons nous pas lisser ce défaut en créant un code qui supprime tout espace dans la valeur ?. D'autre part dans certain cas, je n'aurais que le N° SIE permettant l'identification. Enfin dans la plupart des cas je n'aurais pas de soucis, puisque seul le N° SIE suffit a l'identification.
Qu'en penses tu ?
 

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Re-bonjour,

Je n'ai pas encore beaucoup réfléchi à une solution, mais le plus simple (vu de ma position à moi :p) serait sans aucun doute de supprimer définitivement et irrévocablement toutes les espaces de tous les codes programmes, dans toutes les feuilles (ou éventuellement d'insérer systématiquement une espace en 5e position) ... le tout étant de voir si c'est envisageable dans ton fichier!?
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

effectivement ça me parait la meilleure solution. Rajouter un espace serait une "plus", mais de mon point de vue absolument pas obligatoire pour la compréhension de la valeur. Donc quitte a faire simple, plutot que beau, solution a retenir : pas d'espaces !
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Tiens j'ai une autre question !! :D Sachant que tous les fichiers seront dans le même répertoire, y aurait il moyen d'automatiser les macros sans ouverture des fichiers Tiers ( "SUIVI TRAVAUX" et "PLANNING BE" ), l’exécution des macros s'effectuant à l'ouverture du fichier 'Synthèse". Possible or not possible ?
 

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Bonsoir,

En annexe, une mise à jour de la version précédente, prenant en compte l'ouverture automatique des deux fichiers (reste à espérer que les noms ne changeront pas ... sinon il faudra modifier avant de lancer la macro)

Les espaces sont supprimés dans les "codes programmes" des feuilles "Travaux" et "Etudes" ... il vaut mieux que tu vérifies le résultat avant d'aller plus loin (ne brûlons pas les étapes :rolleyes:)
 

Pièces jointes

  • synthese (essai V3).xlsm
    78.4 KB · Affichages: 70

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Rebonsoir,

Et bien après contrôle, tout semble fonctionner !! La prochaine étape est donc de rapatrier les infos "Travaux" à la suite des infos "Etudes" dans la feuille RECAP ... d'ou ma question sur les conditions multiples puisque nous allons en avoir besoin maintenant, la sélection par les N°SIE et le Programme ....
En tout cas ça commence à avoir une bonne tete ce tableau !! Et tout cela je te le dois Modeste !! Alors pour la énième fois : MERCI !!!
 

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Bonjour,

Si ça fonctionne jusque là, c'est déjà bien!

Pour la suite, il faudrait expliquer calmement et dans le détail ce qu'il conviendrait de faire: on reprend dans la feuille "RECAP" tous les enregistrements de la feuille "Etudes"? Dans un ordre particulier ou simplement dans le même ordre que dans la feuille "Etudes"? Le tout en conservant le même ordre de colonnes que celui de ta feuille "RECAP"!? ... Mais ensuite: que fait-on avec les données de la feuille travaux? A quoi correspondent les dernières colonnes de la feuille "RECAF"? Que faut-il faire précisément avec les n° SIE et codes Programme?
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Alors calmement mais rapidement parce qu'on me demande de rendre un fichier pour demain ... erffff
Donc, la feuille "RECAP", il faut reprendre tous les enregistrements de la feuille "Etudes" et dans le même ordre svp ( ça c'est pas compliqué, je l'ai fait ! ). A la suite de cela, et toujours dans la feuille "RECAP", il faut remettre les données (OTP, OS LE, Début Travaux, Fin travaux, Montant HT des Travaux) de "Travaux". Le soucis c'est que les données de "Etudes" et "Travaux" ne sont pas dans le même ordre. Donc les conditions pour recopier les données "Travaux" à la bonne ligne sont de retrouver les valeurs "N°SIE" et "Programme" que nous avons dans les 3 feuilles ( Etudes, Travaux et RECAP ).
Au moment ou je te parle, c'est le dernier point qui reste en suspends dans mon fichier ! Tout le reste est bouclée. D'ailleurs je te met la dernière version du fichier.
 

Pièces jointes

  • synthese (essai V3).zip
    234.1 KB · Affichages: 60

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Re-bonjour,

Je n'aurai peut-être plus de temps avant ce soir, mais que fait-on dans le cas suivant (par exemple):
dans la feuille "Etudes", je trouve le N° SIE 049-2011, associé au code Programme 2011E. Je retrouve le même N° SIE dans la feuille "Travaux", mais cette fois avec le code programme 2012E. Dans ce cas, j'ignore purement et simplement la feuille Travaux? Il ne faut récupérer que les données de la feuille travaux si les deux champs sont identiques?

Petite info pour les gens pressés: si une formule te convient, trouver une solution me prendra moins de temps que par macro. Par contre, il s'agirait sans doute d'une formule matricielle (plus gourmande en ressources et temps de calcul, s'il y a beaucoup de données!) Dis-moi où va ta priorité!
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

En fait le choix de faire appel au code Programme n'est valable que si nous avons plusieurs fois le même N° SIE.
En priorité, parce que dans la plupart des cas cela suffira, il faut se fier au N° SIE (si le N° SIE est identique ET unique entre les feuilles "Etudes" et "Travaux"). Par contre dans les cas ou nous aurions plusieurs fois le N° SIE, alors la valeur test suivante sera le Programme. Dans le cas ou le Programme n'est pas identique entre les feuilles "Etudes" et "Travaux", la valeur test suivante sera la "Commune". C'est exactement ce que je dois avoir "en français" ... reste plus qu'a avoir le bon code macro ....
Je suis désolé de mettre la pression comme ca, j'essaye de me débrouiller en m'inspirant des codes précédents, mais je bute sur cette put@!" de condition !!!
En tout cas merci de consacrer du temps comme ça pour moi, c'est vraiment un réconfort dans cet inconfort !
 

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Je vais te la faire en "Français" ... :)
Si le N° SIE dans "Travaux" est le même ET unique que dans "RECAP", alors on recopie la plage de F à J de la ligne correspondante "Travaux" dans "RECAP"
Mais si N°SIE supérieur à 1 alors voir si Programme dans "Travaux" est le même ET unique que dans "RECAP", alors on recopie la plage de F à J de la ligne correspondante "Travaux" dans "RECAP"
Mais si Programme est différent alors voir si COMMUNE dans "TRAVAUX" est le même que dans "RECAP", alors on recopie la plage de F à J de la ligne correspondante "Travaux" dans "RECAP".

Voila le code en français ... Enfin tel que je le voit avec mes yeux de débutant en code !

Dernier détail : Si la formule te convient mieux et va plus vite a créer, je suis preneur, mais la finalité sera quand même le code macro, car c'est ce qui fera gagner de la réactivité au fichier !
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Bonsoir,

En français ou autrement, quelque chose m'échappe sans doute dans la démarche elle-même :confused: Alors, comme tu connais bien ton fichier, que la démarche te semble (je l'espère ;)) plus claire qu'à moi, je vais te laisser le soin de vérifier si les résultats sont cohérents (moi je commence à ne plus m'y retrouver!)

Pour alléger le fichier, j'ai supprimé les formules de ta feuille "synthèse" depuis la ligne 310 à la fin.
J'ai laissé ta feuille "RECAP", renommée "RECAP (orig)" ... au cas où tu en aurais besoin!?

Je pense que ce sera tout pour aujourd'hui :rolleyes:
 

Pièces jointes

  • synthese (essai V5).xlsm
    152.9 KB · Affichages: 44

CHAKAL37

XLDnaute Junior
Re : collecter des données sur plusieurs feuille d'un autre classeur puis les recopie

Bonsoir a tous,

Pour répondre a ce sujet et le clore définitivement, je te réponds une dernière fois Modeste !
Pour te rassurer sur la bonne démarche, je vais te dire que lorsque les renseignements corresponde a ce qu'il devrait être, la macro fonctionne parfaitement. Malheureusement, dans plus de 95% des cas, elle ne fonctionne pas. Ce tableau a permis de mettre en évidence que nous n'avions pas de système efficace et organisé pour collecter puis traiter les informations.
Après un traitement final " à la main ", le fichier a été présenté a ceux qui me l'ont demandé, et leur satisfaction a été totale. OK le traitement automatique n'est pas intégrale, mais le but de ce classeur était de synthétiser les données dans un fichier, de réorganiser par affaire et enfin de définir un statut pour connaitre l'état d'avancement du catalogue affaire. Les données ayant bougés entre le moment ou j'ai collectés les informations et le jour de livraison du classeur, j'ai fait quelques aménagements manuels pour mieux coller à la réalité sans flinguer le tableau en exécutant la macro.
Voila en tout cas, le résultat provisoirement final a ce classeur, encore une fois je remercie vivement tous les contributeurs et particulier Rachid et Modeste pour leur contribution plus qu'active sur les différents posts.
Je risque très certainement de revenir vous voir prochainement, car d'autre développement vont venir se greffer en complément ou à la suite de ce tableau.
Encore une fois merci pour vos disponibilités et vos compétences qui m'ont permis de sortir un tel classeur.

A bientôt et bonne fin de soirée.
 

Pièces jointes

  • synthese MANUEL.zip
    223.2 KB · Affichages: 55

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko