Regrouper données de plusieurs fichiers dans un tableau

Bonjour,

Pour un calcul de salaire j'ai un dossier par personne dans lequel chaque feuille de calcul est nommée suivant le mois et l'année (ex. mars 2012, avril 2012 etc…)

Sur chacune de ces feuilles en D2 figure aussi le prénom.

Le nombre de feuille de chaque classeur est variable.

J'aimerais regrouper les données (montants en euros) des cellules Q44, H41 et Q43 des feuilles provenant de ces différents fichiers dans un tableau récapitulatif afin de les additionner.

Le tableau que je vous joins comporte des additions dans les 2 dernières colonnes. Les dossiers (ou prénoms) peuvent changer.

Pour ce tableau, dans les colonnes B,E,H,K je voudrais les données des cellules Q44 des feuilles concernées pour les prénoms concernés ( ex : colonne B6, cell Q44 de la feuille "janvier 2012" de Pierre. B7, cell Q44 de la feuille "février 2012" de Pierre, etc…)

Pour les colonnes C,F,I,L, je voudrais les données des cellules H41 des feuilles concernées pour les prénoms concernés.

Idem pour les colonnes D,G,J,M je voudrais les cellules Q43 de ces mêmes feuilles.

Est-ce qu'une macro ou une fonction pourrait automatiser cela, même quand mes dossiers (ou prénoms) changent ?

A Noter : quand je dis que mes dossiers changent, c'est un prénom qui n'a plus de nouveaux renseignements. Et parallèlement il y a création d'un nouveau dossier (nouveau prénom).

Pour la colonne A qui comporte le nom des mois, si vous devez la modifier pour répondre à mon souhait, bien sûr, ça ne pose pas de problème.

J'espère ne pas être trop "brouillon" et que vous pourrez me donner un coup de main.

Par avance merci.

Salut Nyre,

Je te propose un premier essai, mais je n'ai pas trop cherché à perfectionner la chose, puisque je ne comprends encore pas trop bien tes besoins.

Pour l'instant, si tu places les 3 fichiers ci-joints dans le même dossier, que tu ouvres celui nommé "Salaires perçus Nyre" et que tu cliques sur le bouton "Report", les données des cellules N41, Q43 et Q44 de chaque feuille de chaque dossier individuel sont reportées normalement au bon endroit (les fichiers individuels sont ouverts et refermés automatiquement). S'il y avait déjà des données en place dans ton récapitulatif, elles seraient remplacées par les nouvelles (ou par les mêmes s'il n'y a eu aucun changement dans les feuilles individuelles).

Comme je ne sais pas si tu peux avoir plus de 4 collaborateurs, j'ai considéré que c'était le maximum possible. Si ce n'est pas correct, il faudrait savoir comment tu modifierais ton récapitulatif au cas où il y aurait un 5ème, 6ème collaborateur, etc.

Afin de simplifier le problème de bug au cas où le fichier individuel d'un collaborateur n'existait pas, il faut remplacer les noms manquants par des points (dans mon exemple pour les collaborateurs 3 et 4). On verra à l'utilisation comment il faudra modifier cette partie (ou non).

A toi de dire ce qui joue déjà et ce qui devrait être modifié.

Cordialement.

100pierre.zip (8.13 Ko)
124jean.zip (6.81 Ko)

Bonjour Yvouille et merci de te pencher sur mon problème.

Je ne voulais pas uploader les fichiers des prénoms parce qu'ils sont générés par un(e) userform (qu'un de vous m'avait créé et dont je me sers tous les jours avec bonheur !). Je craignais que ça complique la compréhension, mais c'est peut-être mieux.

Pour l'instant, quand j'actionne le bouton "report", j'obtiens l'erreur "variable non définie".

Pour l'instant, si tu places les 3 fichiers ci-joints dans le même dossier

Je joins un .rar dans lequel tu pourras voir l'arborescence des dossiers tels qu'ils sont organisés en réalité. C'est un élément que je ne pourrai pas changer.

Dans les fichiers de Pierre, Paul et Jacques, j'ai indiqué (pour l'onglet avril seulement, à titre d'info) les cellules que je voulais regrouper dans la feuille "salaires perçus". Je rappelle que ce sont toujours les mêmes cellules pour chaque onglet (chaque mois).

Je pense que le principe du bouton "Report" pourrais bien me convenir dans la feuille "salaires perçus".

On verra à l'utilisation comment il faudra modifier cette partie (ou non).

Ok on verra plus tard. On voit si on peut déjà avancer sur le reste.

Il est possible que les feuilles de calcul des prénoms te donnent plein d'erreurs. Ce n'est pas important, car il se peut qu'il te manque des fonctions personnelles.

J'espère que tu pourras cerner un peu plus mon affaire.

Cordialemtent

83essai-nyre.rar (166.62 Ko)

Salut Nyre,

Désolé pour le temps de réponse.

Bizarrement le code que je t'ai fourni précédemment fonctionne chez moi à la maison - sur Excel 2007 - sans définir la variable Ligne_mois As Integer alors que selon des essais fait sur Excel 2003, ça bloque effectivement comme chez toi. Mais bon passons aux problèmes actuels.

Comme tous tes fichiers ne sont pas au même endroit, il faut définir le nom du chemin. Chez moi, j'ai placé ton dossier prév sal ind au bout du chemin suivant C:\Users\Lacy\Documents\Nyre comptes\, ce qui donne dans mon code la ligne suivante :

Chemin = "C:\Users\Lacy\Documents\Nyre comptes\prév sal ind\"

Tu vas devoir modifier chez toi la partie C:\Users\Lacy\Documents\Nyre comptes\ selon ton emplacement à toi, sans manquer aucun signe Si tu ne sais pas le faire, il faudra m'indiquer le chemin exact de ton dossier prév sal ind .

Ensuite ton fichier Marie ne comporte pas de chiffres (ceci provient peut-être du fait qu'il comporte des liaisons à d'autres fichiers qui manquent chez moi) dans les cellules concernées, mais des signes #xxx ; je l'ai donc tout simplement ignorée en effaçant son nom sur le tableau récapitulatif.

Comme tu indiquais qu'on pouvait modifier les noms des fichiers individuels, tu vas devoir les renommés chez toi sous la forme Salaires xxx Pierre ou Salaires xxx Jacques et ainsi de suite. La partie "Salaires xxx " doit être modifiée dans le code si tu désires changer cette partie. Par contre ce passage doit être pour tous les fichiers individuels absolument identique.

Les onglets des mois sont écrits entièrement en minuscules. Reproduit bien ceci à tous tes fichiers, autrement les mois avec une majuscule seraient ignorés. Si ça crée un problème d'écrire tous les mois en minuscule, il faudrait modifier le code.

Afin de savoir quels onglets des fichiers individuels doivent être traités, j'ai placé une date référence dans la cellule O1 du fichier "Salaires reçus Nyre". Ainsi, les feuilles 2013 sont ignorées pour le décompte 2012.

Le déroulement complet du code dure quand même 5 à 6 secondes chez moi.

Je te laisse faire des essais et me dire quoi.

Bonjour Yvouille,

Tu me fais un très gros travail et je t'en remercie

Je suis en train de faire les modifications que tu m'indique pour me permettre de travailler dans mes dossiers. J'ai changé le chemin et les noms (salaires xxx).

Lorsque je clique sur le bouton "Report" j'ai une erreur d'execution : l'indice n'appartient pas à la sélection.

Ca vient certainement du 1er code que tu avais créé d'après la première feuille que j'avais fournie et qui s'appelait "Base" parce que la ligne de code With Workbooks ("Salaires perçus Nyre").Sheets ("Base") est surlignée en jaune.

Je ne sais pas par quoi remplacer "Base" et je n'ai pas envie de jouer aux apprentis sorciers.

Peux-tu me dire comment modifier cette ligne pour que ça fonctionne ?

A bientôt

Salut,

Le fichier exemple que tu m'as fourni s'appelle "Salaires perçus Nyre" et la feuille dans laquelle doit être fait le report "Base". Afin d'y faire référence, il faut donc utiliser le code :

With Workbooks ("Salaires perçus Nyre").Sheets ("Base") 

Si tu as changé le nom du fichier ou le nom de la feuille, c'est normal que le code bloque. Contrôle déjà cela. En cas de nouvelles appellations, tu dois modifier ces noms dans le code. Par exemple :

With Workbooks ("Nouveau nom fichier").Sheets ("Nouveau nom feuille") 

A noter qu'au moment où ça bloque, le premier fichier individuel a été ouvert par le code, mais non refermé puisque le code a été interrompu. Afin de pouvoir procéder à de nouveaux essais - éventuellement après avoir apporté des modifications à ton code, inscrit dans le fichier "Salaires perçus Nyre" - tu dois refermer manuellement ce fichier individuel.

Par contre si ton fichier s'appelle vraiment "Salaires perçus Nyre" et la feuille vraiment "Base", alors il faudra chercher le problème ailleurs.

Cordialement

EDIT de 8:15 : En ce qui concerne l'écriture des mois en minuscules ou majuscule, je te propose une modification qui éviterait des problèmes au cas où un mois serait écrit avec une majuscule. Remplace donc le passage

Mois_concerné = Left(ActiveSheet.Name, 4) 

par

Mois_concerné = LCase(Left(ActiveSheet.Name, 4))

Bonjour Yvouille,

Par sécurité j'ai modifié le code pour l'écriture des mois en minuscule.

Pour procéder aux essais je n'ai pas encore changé le nom de mon fichier, il s'appelle toujours "Salaires perçus Nyre" et la feuille de calcul est toujours "Base".

A noter qu'au moment où ça bloque, le premier fichier individuel a été ouvert par le code, mais non refermé (......) tu dois refermer manuellement ce fichier individuel.

Chez moi, tout ce passe exactement comme tu l'explique.

Mais je ne peux toujours pas faire fonctionner la macro : Lorsque je clique sur le bouton "Report" j'ai toujours l'erreur d'execution 9 : l'indice n'appartient pas à la sélection.

Et la ligne de code With Workbooks ("Salaires perçus Nyre").Sheets ("Base") est surlignée en jaune.

Aurais-tu une autre piste de recherche ?

C'est sûr tu vas me permettre d'y arriver !

Cordialement

Je ne sais trop que te répondre ; chez moi ça passe aussi sur Excel 2003, donc difficile de savoir pourquoi ça bloque chez toi

Contrôle quand même encore une fois le nom de ton fichier et le nom de ta feuille : un espace, un point, un lettre, une majuscule de trop ou de pas assez et ça ne passe pas.

Autrement j’espère que quelqu’un d’autre puisse te venir en aide. Selon ta prochaine réponse, je verrai si je demande à l’un de mes «joker» de venir faire un tour sur ton fil.

Bonjour

Juste une idée comme ça

Remplaces

With Workbooks ("Salaires perçus Nyre").Sheets ("Base")

par

With ThisWorkbook.Sheets("Base")

Comme cela on verra si l'erreur venait du nom du fichier

Bonjour Banzaï et merci de nous rejoindre,

Je suis désolée de vous donner autant de fil à retordre d'autant que chez Yvouille, sa solution fonctionne.

J'ai remplacé la ligne de code par ta proposition et c'est pareil : 1 clic sur "report" donne erreur 9 et me surligne en jaune la nouvelle ligne de code que j'ai entrée.

J'ai tout de même vérifié toute l'orthographe, les signes et les espaces entre ce qui est dans le code et les fichiers. J'ai aussi essayé de renommer ma feuille de "Base" en "2012" et modifié de la même façon "Base" en "2012" dans le code, mais je reviens toujours au même message d'erreur.

Encore une idée ?

Cordialement.

Bonjour

Joins ton fichier (anonymisé) qui bug

Salut Banzai et merci pour ton idée,

Au moment où le code bloque, c'est l'un des fichiers individuels qui est activé. Avec ta proposition, est-ce que le code ThisWorkbook concerne le fichier activé ou le fichier dans lequel se trouve le code ?

A te relire.

Bonjour

Bien sur sauf erreur ou omission

ActiveWorkbook est le fichier ouvert en dernier (en général (99%)) j'ai déjà vu que ce n'était pas le cas, mais dans quelle condition je ne sais plus

ThisWorkbook est toujours le fichier qui contient cette instruction

Merci Banzai pour cette précision. En fait j'aurais pu essayer moi-même

Amicalement.

Oups ! Je présente toutes mes excuses à mes sauveurs !

J'ai répondu trop vite :

J'ai aussi essayé de renommer ma feuille de "Base" en "2012"

et je ne l'avais pas re-modifiée pour entrer la ligne de code proposée par Banzaï.

Donc ça marche, mais je n'ai toujours pas compris le problème posé dans le nom de fichier

D'après vous, est-ce que je peux laisser la ligne de code en l'état, ou vaut-il mieux quand même indiquer un nom de fichier ?

Il restait un point en suspens : le cas où j'aurais plus de 4 noms à faire entrer dans le tableau récapitulatif.

Après tous les problèmes que je viens de poser, est-ce que j'ose en parler ?...

Avant de faire appel au forum, je pensais reproduire ce tableau juste en dessous du 1er et ajouter des cellules pour effectuer les totaux, mais tel que le code se présente, j'ai l'impression qu'il faut trouver autre chose.

Si j'ai plus de 4 noms concernés, est ce que je peux rajouter des colonnes à la droite du 4ème nom ? et si oui, que dois-je modifier dans la macro ?

A bientôt

Cordialement

Bonjour

Je réponds à la place d'Yvouille (j'espère qu'il ne m'en tiendra pas rigueur)

Nyre a écrit :

mais je n'ai toujours pas compris le problème posé dans le nom de fichier

Banzai64 a écrit :

Joins ton fichier (anonymisé) qui bug

Je suis curieux aussi

Nyre a écrit :

D'après vous, est-ce que je peux laisser la ligne de code en l'état, ou vaut-il mieux quand même indiquer un nom de fichier ?

Il vaut mieux laisser la ligne telle quelle, pas besoin de reprendre le code si le nom du fichier change

Nyre a écrit :

Si j'ai plus de 4 noms concernés, est ce que je peux rajouter des colonnes à la droite du 4ème nom ? et si oui, que dois-je modifier dans la macro ?

dans la macro d'Yvouille juste à changer la limite supérieure de la boucle

For i = 2 To 11 Step 3 ' De la colonne B à la colonne K

11 représente la colonne du dernier nom

Nyre a écrit :

je pensais reproduire ce tableau juste en dessous du 1er et ajouter des cellules pour effectuer les totaux, mais tel que le code se présente, j'ai l'impression qu'il faut trouver autre chose.

Trouver autre chose pas la peine la macro en elle même suffit mais c'est reprendre les emplacements de la copie des infos (je pense qu'en changeant la valeur du décalage suffit)

Ligne_mois = Ligne_mois + 5

5 représente le numéro de ligne - 1 du mois de janvier de ton tableau

Bonjour tous,

Pour info...

    With Workbooks ("Salaires perçus Nyre.xls").Sheets ("Base") 

Il faut mettre l’extension et en principe ça devrait fonctionner.

A+

Baaahhh oui lermite, merci , ça marche.

On aurait sûrement dû y penser !

Banzaï, j'étudie, et je reviens.

A bientôt

Cordialement

C'est un peu bizarre que chez moi ça fonctinne sans extention !!?? Mais bon ...tant mieux que ton problème est résolu

Cordialement.

Bonjour Yvouille,

La bizarrerie est peut-être un peu du même ordre que le bug que j'avais au tout début ?....

On avance, et on est passé au nombre de collaborateurs supérieurs à 4.

Toutes les bonnes âmes de ce forum, vous me rendez un fier service.

J'avais dit :

Avant de faire appel au forum, je pensais reproduire ce tableau juste en dessous du 1er

Banzaï, tu me dis que c'est possible, mais je ne comprends pas bien :

je pense qu'en changeant la valeur du décalage suffit)

Code: Tout sélectionner

Ligne_mois = Ligne_mois + 5

5 représente le numéro de ligne - 1 du mois de janvier de ton tableau

Je ne comprends pas qu'en modifiant la valeur du décalage, je peux vraiment avoir les données des 4 noms du tableau sur lequel on vient de travailler et en plus les données des nouveaux noms dans un second tabeau qui serait situé en dessous du 1er.

Je joins un exemple pour position des tableaux de "salaires Nyre" .

A vous lire.

35essai-nyre.rar (229.01 Ko)
Rechercher des sujets similaires à "regrouper donnees fichiers tableau"