Faire apparaitre des données de plusieurs feuilles dans un tableau à partir de deux listes

Hugo_L

XLDnaute Nouveau
Bonjour,

Je suis en train de développer un outil de gestion des heures des employés.
Actuellement mon fichier Excel de suivi contient une feuille par employé (environ 30) et dans chaque feuille 52 tableaux de semaine (une année) dans lesquels je rentre les heures.

Je souhaiterais pouvoir remplir tous ces tableaux (52 tableaux X 31 employés) à partir d'une seule feuille pouvant s'apparenter à une feuille de saisie.
J'aimerais en sélectionnant le NOM de l'employé et le MOIS (listes de choix en orange dans le fichier) que le tableau correspondant à l'employé en question et le mois en question s'affiche et que je puisse le remplir afin que les données soient transposer dans les feuilles correspondantes.

J'ai mis en pièce jointe un résumé de mon fichier existant avec la "feuille de saisie" que je souhaite réaliser.


Cordialement,
Hugo


J'utilise Excel 16.10 sur MAC
 

Fichiers joints

Etn

XLDnaute Occasionnel
Salut,

Quelque chose dans ce gout la ?
Quand tu changes le nom ou le mois cela actualise les données du tableau dans la feuille de saisie.
Ensuite tu peux modifier les données que tu souhaites.
Puis tu cliques sur le bouton importer pour reactualiser l'onglet avec le nom.
Attention : pas d'espace dans les onglets !
 

Fichiers joints

Hugo_L

XLDnaute Nouveau
Merci mille fois !!
C'est parfait !

Si je souhaite modifier le planning (lignes, colonnes..etc) faut-il ajuster le code ?
 
Dernière édition:

Etn

XLDnaute Occasionnel
Oui tu peux rajouter autant d'employés que tu veux.
Il faut juste qu'un onglet avec leur nom soit créé (et surtout pas d'espace dans l'onglet sinon cela ne fonctionne pas) puis tu rajoutes leur nom a ta liste

Par contre pour modifier le planning j'ai pas trop compris, tu veux dire modifier la structure du tableau ?

Dans la v2 du fichier (que je joins), dans le gestionnaire de nom tu trouves part0, part1, part2 etc
part0 est le tableau que je copie quand tu cliques sur le bouton importer, libre a toi de modifier le tableau via le gestionnaire de nom.

Pour les part1, part2 etc... ce sont les zones qui sont importées depuis les différents onglets, donc j'ai fait attention a ne pas modifier les formules pour n'avoir a la fin que les horaires et les signataires.

Après si tu veux rajouter de nouvelles zones a copier c'est comme tu veux (mais ca risqué de ne plus fonctionner si tu n'y connais vraiment rien en vba), tu fais clic droit sur l'onglet de la feuille de saisie et tu cliques sur "visualiser le code" et j'ai expliqué comment rajouter une nouvelle zone.
 

Fichiers joints

Hugo_L

XLDnaute Nouveau
Parfait, je pense avoir compris.
Merci encore !

Juste par curiosité, la réalisation d'un outil comme celui-ci demande beaucoup de connaissances/compétences sur VBA ?
 

Etn

XLDnaute Occasionnel
Non j'y connais pas grand chose en vba.

En gros je savais comment déclencher une macro en actualisant une cellule (intersect target) et après c'est juste du copier coller et une formule equiv.
Le plus dur c'est de trouver la manière de realiser l'outil. J'ai choisi de le faire a partir d'un mélange entre une formule equiv+indirect et faire le copier coller via vba, mais je suis certain qu'il y a des dizaines de manières différentes d'arriver au meme résultat (et avec des solutions surement plus "propres" que ce que j'ai fait)
 

gosselien

XLDnaute Barbatruc
Bonjour,
J'utilise Excel 16.10 sur MAC
Bonjour,
je ne serai pas d'une grande aide parce que pour moi, c'est lourd comme fichier; pourquoi ne pas mettre tous les membres du personnel dans un seul onglet (on filtre sur le nom ensuite ) et toutes les données en colonnes ? Un type de données par colonne.
Je me doute que ce serait long à transposer mais plus facile ensuite pour parcourir les données de chacun.
Il doit y avoir des erreurs de conceptions , il suffit de voir le nombre de tableaux inutiles dans la touche F5 :)
Ceci dit, si tu gardes cette présentation, tu peux éviter des erreurs de dates (ou d'encodage) avec tes jours/date qui sont actuellement en dur.
Bref , un peu compliqué et à revoir, mais ce n'est que mon avis, d'autres viendront donner le leur °_°

P.
 

Hugo_L

XLDnaute Nouveau
Bonjour,
je ne serai pas d'une grande aide parce que pour moi, c'est lourd comme fichier; pourquoi ne pas mettre tous les membres du personnel dans un seul onglet (on filtre sur le nom ensuite ) et toutes les données en colonnes ? Un type de données par colonne.
Je me doute que ce serait long à transposer mais plus facile ensuite pour parcourir les données de chacun.
Il doit y avoir des erreurs de conceptions , il suffit de voir le nombre de tableaux inutiles dans la touche F5 :)
Ceci dit, si tu gardes cette présentation, tu peux éviter des erreurs de dates (ou d'encodage) avec tes jours/date qui sont actuellement en dur.
Bref , un peu compliqué et à revoir, mais ce n'est que mon avis, d'autres viendront donner le leur °_°

P.
Bonjour Gosselien,

Merci pour ta contribution.

J'ai essayé avec le tri mais j'ai environ 50 employés donc ça fait environ 50 lignes par tableau mensuel x 12 mois x 50 employés donc je me retrouve avec environ 22 000 lignes et du coup le tri commence à ramer donc l'utilisation est assez contraignante.

Petite question : A quoi correspondent les tableaux qui s'affiche en F5 (tableau1710...) ?
Et quand tu parles d'erreurs d'encodage a quoi fais tu référence ? Ces erreurs vont-elles poser problème sur le long terme ?
 

gosselien

XLDnaute Barbatruc
re,
Tout d'abord ta version d'excel est probablement > à 2007 d'où les "tableaux" que tu ignorais il semble.

enF5 ce sont les zones nommées par toi ou par Excel si tu utilises les tableaux (tables plus précisément) qui s'agrandissement tout seuls mais là ils sont un peu partout et ne remplissent donc pas du tout leur rôle (voir exemple).
Au niveau des dates, si tu mets l'année dans un cellule les autres peuvent être liées à celle-ci, voir aussi l'exemple.

P.
 

Fichiers joints

Hugo_L

XLDnaute Nouveau
Oui tu peux rajouter autant d'employés que tu veux.
Il faut juste qu'un onglet avec leur nom soit créé (et surtout pas d'espace dans l'onglet sinon cela ne fonctionne pas) puis tu rajoutes leur nom a ta liste

Par contre pour modifier le planning j'ai pas trop compris, tu veux dire modifier la structure du tableau ?

Dans la v2 du fichier (que je joins), dans le gestionnaire de nom tu trouves part0, part1, part2 etc
part0 est le tableau que je copie quand tu cliques sur le bouton importer, libre a toi de modifier le tableau via le gestionnaire de nom.

Pour les part1, part2 etc... ce sont les zones qui sont importées depuis les différents onglets, donc j'ai fait attention a ne pas modifier les formules pour n'avoir a la fin que les horaires et les signataires.

Après si tu veux rajouter de nouvelles zones a copier c'est comme tu veux (mais ca risqué de ne plus fonctionner si tu n'y connais vraiment rien en vba), tu fais clic droit sur l'onglet de la feuille de saisie et tu cliques sur "visualiser le code" et j'ai expliqué comment rajouter une nouvelle zone.

Salut,

Je reviens vers toi car je suis en train d'adapter l'outil notamment la forme des feuilles individuelles.
J'aimerai modifier les feuilles PIERRE, PAUL...etc.(voir feuille "JEAN") or la modification des tableaux décale les données dans le tableau de saisie. J'ai chercher dans le code mais j'ai du mal à comprendre.
Quel est l'élément à modifier qui définit les zones dans les feuilles individuelles ?
 

Fichiers joints

Etn

XLDnaute Occasionnel
Salut,

Alors l'idée de l'outil est de trouver les données par rapport à une cellule de reference.
Dans ton tableau Feuille de saisie, la formule en U15 est copiée dans les zones "part 1" à "part 6".
Cette formule va prendre chercher le dans l'onglet C2 (donc JEAN), et dans cet onglet va chercher le mois B7 (donc JANVIER) en colonne JEAN!C:C .
Ensuite la mois JANVIER devient une cellule de reference et grace a la formule DECALER() je recupere les horaires, responsable etc.

Le probleme avec ton nouveau tableau c'est que tous les mois sont (janvier, fevrier,...) sont egalement en colonne JEAN!C:C donc la valeur en Feuille de saisie!U16 est faussée (tu as 6 quand tu devrais avoir 35).
upload_2018-3-12_9-50-21.png

Du coup j'ai juste decalé ton tableau vert d'une colonne pour que les mois de ton tableau vert ne soit pas sur la meme colonne que les mois des autres tableaux.

Je sais pas si j'ai été tres clair :)
 

Fichiers joints

Hugo_L

XLDnaute Nouveau
Salut Etn,

Merci encore pour ton aide ! C'est plutôt clair et ça fonctionne (presque) parfaitement ;)

Le seul petit détail qui bloque c'est le mois de décembre :
Tous les mois de l'année comporte 5 semaines sauf que le mois de décembre va en compter 6 cette année car le 31/12/2018 est un lundi.
Donc j'ai suivi tes instructions dans le code et j'ai rajouté une "part7" pour la 6ème semaine. Cependant, j'ai "#N/A" qui s'affiche partout en décembre. Je pensé modifier la zone "Tableau171092220" qui apparait dans la formule DECALER mais elle semble verrouillé.

As-tu une idée pour ce dernier petit détail ?
 

Fichiers joints

Etn

XLDnaute Occasionnel
Salut,

Alors les N/A c'est parce que ton "décembre" dans la feuille de saisie avait un accent sur le E alors que c'est ecrit sans accent dans les autres feuilles, du coup j'ai enlevé l'accent dans la feuille de saisie :)
Ensuite pour les mois a 6 semaines, cela ne marchait pas car la part0 ne copiait que la zone jusqu'à la ligne 42 de la feuille de saisie: Donc j'ai rajouté une nouvelle "part00" (qui copie colle jusqu'a la ligne 49 cette fois pour avoir les 6 semaines), j'ai rajouté une formule en u17 pour voir si c'est un mois a 5 ou 6 semaines, puis j'ai rajouté une condition si dans le module1 (macro "importer") qui dit : si U17= "5 semaines" alors cela copiera la "part0", sinon elle copiera la "part00"
 

Fichiers joints


Haut Bas