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

Modeste

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

Bonjour CHAKAL37,

Si tu relis ta prose, rédigée à presque 2h du matin, en te levant ce matin (voire plus :rolleyes:) ... tu t'y retrouves? C'est un peu comme si tu avais réfléchi tout haut et noté au fur et à mesure. Tu déposes ensuite tous les fichiers et celui qui te lit a le choix entre: passer "un certain temps" à décortiquer tes explications et les mettre en lien avec les fichiers exemples ou alors, faire comme si de rien n'était, refermer les fichiers et ... continuer son chemin ;)

Ce que je te suggère, c'est de sérier les problèmes: choisis un aspect qui te semble essentiel et/ou prioritaire, précise le (ou les) fichiers concernés et essayons de traiter une difficulté à la fois.
Par exemple, lorsque tu dis: "J'ai deux tableaux distincts, un Etude et un Travaux" ... le tableau Etude c'est celui qui figure dans la feuille "ETUDES PRIVE" du classeur "PLANNING BE.xlsx" :confused:
Quand tu écris: "je souhaiterais rapatrier ces données selon un certain ordre " ... c'est nous qui devrions comparer les données d'origine et le résultat, pour déterminer l'ordre dans lequel tu souhaites les rapatrier?

Bref, comme souvent, en pareil cas, tu connais par coeur tes fichiers, mais il n'en va pas de même pour ceux qui les découvrent pour la première fois.
Prends donc le temps d'expliquer le contexte général, la manipulation qui te pose problème ... le tout avec un exemple concret et représentatif et travaillons pas-à-pas.
 
Dernière édition:

CHAKAL37

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

Salut Modeste,

Effectivement je pensais avoir été clair en donnant un maximum de détail, mais trop de détail tue la précision !
Je vais donc commencer par vous expliquer quelle est mon fichier source et quel est mon fichier de destination, puis vous détailler mon premier soucis !
Mon fichier source est "SUIVI TRAVAUX.xls". Dans celui ci, j'ai différentes feuilles : RENF AB 10, EFFACT 10, etc
Dans chacune de ces feuilles, les données qui m’intéresse sont les suivantes : COMMUNE, N°SIE, Lieu dit ou rue, programme, MARCHE, date OS, début ( cette valeur correspondra à "début TVX" dans le tableau de destination ), fin ( cette valeur correspondra à "fin TVX" dans le tableau de destination ), Montant des travaux TTC. La seule exception dans les feuilles de ce fichier est la feuille AFFAIRE 2011-12, ou seule la valeur "OTP" m’intéresse ( elle est a mettre en relation avec la valeur N°SIE ).
Voila pour mon fichier source.
Pour ce qui est de mon fichier de destination, il s'agit du fichier "synthese.xlsx". Dans ce fichier, j'ai 5 feuilles : Etudes, Travaux, RECAP, Synthèse et Statistique. Pour l'instant l'objectif est de se concentrer sur la feuille Travaux".
Ma question et mon problème aujourd'hui est de récupérer les infos que je vous ai énoncé dans les différentes feuilles du fichier "SUIVI TRAVAUX.xls" et de les recopier dans la feuille "Travaux" de mon fichier "synthèse.xslx" selon l'ordre qui est défini dans cette feuille. Pour que vous compreniez mieux, j'ai fait une simulation sur une commune ou les informations que vous avez dans le fichier sont celles que je doit récupérer.
Pour résumer et faire court : Comment récupérer des infos de différentes feuilles d'un fichier pour les recopier dans une feuille d'un autre fichier ?

J'espère avoir fait simple dans mes explications, sinon dites moi ce que vous ne comprenez pas.

Merci d'avance pour vos contributions.

Bonne fin de journée.
 

Pièces jointes

  • synthese.xlsx
    21.1 KB · Affichages: 81
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 58
  • synthese.xlsx
    21.1 KB · Affichages: 90
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 58
  • synthese.xlsx
    21.1 KB · Affichages: 85
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 58

Modeste

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

Re-bonjour,

Merci pour cet effort ;)
En te lisant, je me suis dit que tu souhaitais regrouper les infos par commune dans ton fichier "synthèse.xlsx". J'ai donc commencé par rédiger un bout de code qui reprendrait la liste des communes sans doublons ... et me voilà déjà bien ennuyé: dans le fichier joint, les résultats que j'ai obtenus.
Je t'ai mis un exemple en couleur et, comme tu le verras, certains noms identiques sont repris 2 fois (une fois sans espace superflue ... et une fois avec!?) Pour certaines communes, elles sont parfois écrites avec un tiret pour séparer les noms composés et parfois avec une espace. dans d'autres cas encore, des abréviations ont été utilisées.

Bref, peux-tu te pencher sur la question et me dire si:
  1. j'ai bien fait d'essayer de dresser une liste sans doublons?
  2. si oui, ... ce qu'on fait avec ces noms qui se ressemblent?
 

Pièces jointes

  • ListeCommunes.xlsx
    11 KB · Affichages: 100

CHAKAL37

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

Merci pour la rapidité de ta réponse !
En fait je ne souhaite pas regrouper les informations par communes, mais par "N°SIE" puis par "programme". Je m'explique, le N°SIE est un numéro unique la plupart du temps, les seuls fois ou j'aurais des doublons dans les "N°SIE", ils seront différenciés par le "programme", c'est le seul ordre qui importe. Ensuite c'est de la "simple" recopie de valeurs, sans s'occuper de l'orthographe ou de tiret. J'ai d'ailleurs, dans mon fichier "synthèse.xlsx", définit l'ordre des données à récupérer à savoir pour la feuille "Travaux" : N° SIE, Programme, N° de Marché SIE, COMMUNES, Intitulé (qui correspond à "Lieu dit ou rue"), OTP, DATE OS, Date début Travaux, Date fin Travaux, Montant travaux TTC.
J'ai modifié l'ordre des colonnes par rapport au fichier initiale, car c'est bien le duo "N° SIE" et "Programme" qui permettra de faire le tri puis le regroupement avec la feuille "Etudes" dans la feuille "RECAP" plus tard ... enfin nous verrons ça plus tard !
Voila, j'espère avoir été clair ...
Merci en tt cas de ta contribution.
Pour résumer : Récupération des données des différentes feuilles du fichier "SUIVI TRAVAUX.xls" dans la feuille "Travaux" du fichier "synthèse.xlsx" avec dans l'ordre N°SIE, Programme, N° de Marché SIE, COMMUNES, Intitulé (qui correspond à "Lieu dit ou rue"), OTP, DATE OS, Date début Travaux, Date fin Travaux, Montant travaux TTC
 

Pièces jointes

  • synthese.xlsx
    21.1 KB · Affichages: 72
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 66
  • synthese.xlsx
    21.1 KB · Affichages: 66
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 59
  • synthese.xlsx
    21.1 KB · Affichages: 63
  • SUIVI TRAVAUX.zip
    116.3 KB · Affichages: 53

Modeste

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

Bonsoir,

Je dois être un peu dans les nuages: je ne suis pas encore certain d'avoir tout compris ... mais essayons toujours avec la pièce jointe.
Je ne dépose ici que ton fichier "synthèse" la macro est dans un module standard. Attention, le fichier SUIVI TRAVAUX doit être ouvert avant l'exécution de la macro! (mais c'est le classeur synthèse qui doit être actif)

Pas trouvé l'équivalent du champ OTP ... j'ai donc utilisé la colonne "suivi par" (qui est vide dans ton exemple!?)

Voyons déjà jusque là si c'est ok, et puis on passera à la suite (s'il y en a une :rolleyes:)
 

Pièces jointes

  • synthese (essai).xlsm
    30.2 KB · Affichages: 114
  • synthese (essai).xlsm
    30.2 KB · Affichages: 109
  • synthese (essai).xlsm
    30.2 KB · Affichages: 106

CHAKAL37

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

Alors pour etre dans les nuages ... ben je voudrais bien y être comme toi !!! loool
a y regarder de plus pres ça colle parfaitement !! Enfin ça ressemble a ce que je veux en tout cas !!
Pour ce qui est de la valeur OTP (Colonne A ), elle ne se trouve QUE dans la feuille "AFFAIRE 2011-12" ( tout a la fin des onglets ) dans le fichier "SUIVI_TRAVAUX.XLS". C'est aussi là, la difficulté, puisqu'il faudra faire correspondre ce numéro "OTP" avec le "N°SIE" ( Voir colonne D ) ! Par contre, si aucun "OTP" ne correspond au "N°SIE", il faut laisser le champs vierge.
Pour la suite, il faudra également rapatrier les données Etudes, c'est à dire les données se trouvant dans la feuille "ETUDES PRIVE" du fichier "PLANNING BE.xlsx" les recopier dans la feuille "Etudes" du fichier "synthese.xlsx". Pour ce qui est de la recopie, l'objectif est de faire simple ... recopier dans le même ordre que dans le fichier "PLANNING BE.xlsx".
Une fois cela fait .... on verra plus tard !!! Déjà, tu m'enlève une sacré épine du pied !!!
 
Dernière édition:

Modeste

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

Bonjour,

Pour trouver l'OTP (et laisser le champ vide, si pas trouvé), tu peux remplacer cette ligne:
Code:
.Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = sh.Range("E" & lig)
... par
Code:
otp = Application.Match(sh.Range("C" & lig), src.Sheets("AFFAIRE 2011-12").Range("D38:D317"), 0)
If Not (IsError(otp)) Then .Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = src.Sheets("AFFAIRE 2011-12").Range("A" & 37 + otp)

Pour la feuille Etudes, dois-tu respecter la mise en forme de la feuille "source" (police en rouge et gras ou en bleu, couleur de remplissage, etc.)? Si oui, il faudra se pencher sur la question :p; Si pas, tu peux sans doute t'inspirer du code pour la feuille travaux et l'adapter sans trop de difficultés?
 

CHAKAL37

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

Slt modeste,

je vais faire ces tests de suite. Pour la partie "Etudes", je ne dois pas respecter la mise en forme, donc je vais adapter le code que tu as mis en place. Je vais tester ça et vous tiens au jus pour la suite !
Encore une fois un grand merci pour ta contribution !
 

CHAKAL37

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

Bon comme je pouvais pas attendre, j'ai testé de suite !! L'histoire de la valeur "OTP" ne fonctionne pas, par contre pour la partie étude no soucy !!! ça fonctionne !! une bonne chose de presque réglé !

Maintenant le but du jeu est de mettre en relation en fonction du N°SIE et du Programme, les feuilles "Etudes" et "Travaux" dans la feuille RECAP !!
Je vais voir ça plus tard !

Je vous remet le fichier "synthèse.xlsx" pour voir l'évolution !
 

Pièces jointes

  • synthese (essai).xlsm
    92.2 KB · Affichages: 79
  • synthese (essai).xlsm
    92.2 KB · Affichages: 77
  • synthese (essai).xlsm
    92.2 KB · Affichages: 73

Modeste

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

Re-bonjour,

C'est bien que tu ne saches pas attendre ... du coup on sait rapidement ce qu'il en est :rolleyes:

Ravi de voir que certaines choses fonctionnent! Par contre, est-ce que tu peux expliquer
L'histoire de la valeur "OTP" ne fonctionne pas
... dans le fichier synthèse que tu as déposé, il y a 154 valeurs dans cette colonne (d'accord, pas dans les premières lignes, mais bon ...) Alors, veux-tu dire que les valeurs ne sont pas les bonnes, qu'il en manque, qu'il y en a en trop :confused:
 

CHAKAL37

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

euh désolé, j'ai parlé trop vite !! ça fonctionne nickel, même avec la valeur OTP !! coool :D.
Maintenant le but du jeu est, en commençant par les affaires "Etudes", de recopier les valeurs de la feuille "Etudes" avec les valeurs "Travaux" dans la feuille "RECAP". Un exemple est souvent plus parlant, donc je t'en met un !
Je dois rassembler sur la même ligne les informations de "Etudes" puis "Travaux" pour le dossier N° SIE 473-2011 correspondant au programme 2011AB sur la même ligne.
La valeur servant de base au tri est en premier le N° SIE, puis en complément quant tu as plusieurs fois le même numéro de SIE, le programme sert de "détrompeur".
Voila la suite du programme ! Quand j'aurais résolu ça, c'est 80% de mon fichier qui est bouclé. Le restant est surement plus simple ( je vais avoir surement besoin d'un coup de main pour la partie graphe, mais on verra ça plus tard ! )
Merci en tout cas pour ce bon coup de main !!
 

CHAKAL37

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

Bonjour a tous,

Revoila le casse pied !!:D Je continue la mise en forme de mon tableau et la j'ai besoin de vos lumières pour le code !!
Après avoir fait les onglets "Etudes" et "Travaux", je m'attaque à l'onglet RECAP ! L'objectif de cet onglet et de rassembler les informations collectées ( dans les onglets "Etudes" et "Travaux" ) sur un seul et unique tableau. L'idée est de reprendre la macro utilisée jusqu’à présent et de l'adapter. J'ai réussit pour la partie "Etudes", mais pas pour la partie "Travaux". Je pense qu'il faut reprendre ce code dans l'esprit
Code :
otp = Application.Match(sh.Range("C" & lig), src.Sheets("AFFAIRE 2011-12").Range("D38:D317"), 0)
If Not (IsError(otp)) Then .Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = src.Sheets("AFFAIRE 2011-12").Range("A" & 37 + otp)
Mais j'ai dut bugger a un moment.
Je vous rappelle que l'objectif est de rassembler les infos Etudes et Travaux en fonction du N° SIE puis du programme si nous avons plusieurs fois le même N° SIE. Je vous joint mon fichier sur lequel j'ai travaillé.
Merci par avance !
 

Pièces jointes

  • synthese (essai) (4).xlsm
    120.9 KB · Affichages: 113

Modeste

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

Bonjour CHAKAL37,

Revoila le casse pied !! :D
Eh bien alors, à casse-pieds, casse-pieds et demi: me revoilà aussi :eek:

Avant d'aller plus loin, la question à deux balles: tu es certain qu'il était nécessaire de tout rapatrier dans les feuilles Etudes et Travaux pour ensuite recompiler le tout dans une troisième!?

D'autre part, quand tu récupères un code qui (semble) fonctionner dans certains cas, il faut toujours l'adapter, lorsque la situation change: dans le cas présent, si tu veux extraire les données de la feuille "Etudes", pas besoin de boucler sur toutes les feuilles du classeur, pour vérifier si les 6 premiers caractères du nom de la feuille forment bien le mot "Etudes"

Enfin pour la partie de code qui semble poser problème, il faut -ici aussi adapter à la situation- et non faire un simple copier-coller :eek:

Au lieu de:
Code:
otp = Application.Match(sh.Range("C" & lig), src.Sheets("AFFAIRE 2011-12").Range("D38:D317"), 0)
 If Not (IsError(otp)) Then .Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = src.Sheets("AFFAIRE 2011-12").Range("A" & 37 + otp)

Essaie:
Code:
otp = Application.Match(sh.Range("A" & lig), src.Sheets("Travaux").Range("A2:A600"), 0)
If Not (IsError(otp)) Then .Range("A" & Rows.Count).End(xlUp).Offset(0, 15) = src.Sheets("Travaux").Range("F" & 1 + otp)

... et si les résultats sont plus conformes avec cette seconde proposition, joue au jeu des sept erreurs avec les deux bouts de code ;)
 

CHAKAL37

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

Bon je vais pas vous lacher comme ça avant de dormir.
Je connais vraiment que dalle en code, donc j'apprends sur le tas ( le meilleur apprentissage cela dit a mon avis, mais aussi le plus galère !! Heureusement la communauté est là pour veillez au grain !! )
Le dernier code fonctionne bien, j'ai bien fait mon jeu des 7 erreurs, mais je vais poser une question : En fonction de ce que j'interprete du code, il signifie en gros que si N°SIE correspond à l'OTP, alors il faut recopier la valeur OTP a cette ligne. Ce que je souhaite savoir c'est s'il est possible d'avoir non pas une mais ... deux conditions, en l’occurrence si les valeurs N°SIE et Programme correspondent, alors je copie la valeur à cette ligne !
C'est possible ça ou pas ??
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 147
dernier inscrit
tubaman