Créer un planning à partir de plusieurs sources de données
Bonjour,
Je suis responsable d'un service dans un centre de formation, j'élabore chaque année un tableau excel pour la planification des classes pour chaque professeur.
Mes compétences sur Excel se limite au divers tuto sur ce site et visionnage de vidéo pour créer des tableaux simples.
Ce plan de charge je le remet au service s'occupant de la planification pour le reporter sur notre logiciel. Cela est très fastidieux pour eux car ils doivent consulter les 64 feuilles de chaque professeur pour croiser les données de chaque classe.
C'est pourquoi je souhaiterais à partir du plan de charge de tous les professeurs regrouper sur une seule feuille le calendrier de chaque classe avec un filtre. J'ai essayer divers manipulation sans résultat. J'ai essayé de créer un tableau croisé dynamique mais étant donnée qu'il y a une redondance de valeurs cela ne fonctionne pas.
J'ai essayé recherchex mais cela n'est pas suffisant pour récupérer toutes les données.
Est-ce qu'il est possible de m'aider s'il vous plaît ?
Je joins un fichier test ci-dessous.
Je vous souhaite un bon week-end
Bonjour,
Une petite question, par exemple, pour Pascale DESPONS, dans la cellule D14, il y a 2, à quoi correspond cette valeur ?
Quand vous parlez que regrouper par classe, qu'est-ce qu'une classe, car vous avez, une matière, une section et un niveau, mais je ne retrouve pas cette notion de classe.
Et vous souhaitez regrouper sur une feuille, sous quelle forme ?
Cdt
Bonjour jpbt84,
la cellule D14 et toute la ligne correspond au nombre d'heures de cours. Les M31 ont 2h de Français en semaine 36, 4h en semaine 37...
Une section = une classe
J'ai modifié le tableau initiale en découpant par niveau, section ou classe et matière pensant que le traitement des données serait plus simple.
Ce que j'aimerais mettre en place c'est d'arriver à avoir sur une seule feuille, avec un filtre, en prenant l'exemple des M31 le nombre d'heure par semaine avec le professeur et la matière.
J'ai essayé avec un TCD et PowerPivot sans résultat.
En exemple, ci-dessous ce que j'imagine.
| Section | M31 | (Filtre de la classe/section) |
| 36 | 37 | 38 | 39 | 40 | ||
| DESPONS | Français | 2 | 4 | |||
| histoire géographie | 2 | |||||
| MARAN | français | 2 | 4 | |||
| DUPONT (exemple) | technologie | 6 | 5 |
...
En espérant que mes explications soient suffisamment claires
Cordialement,
En pièce jointe un document plus complet pour exemple.
la cellule contenait avant toutes les informations, je les ai divisés en 3 sous catégories et les semaines en tableau.
bonjour Ad40,jpbt84,
un essai, macro "test"
Bonjour BsAlv,
Incroyable, je suis loin de maitriser cette programmation. C'est tout à fait ce que je recherche. Si je comprend bien, la semaine 25-34 correspond à l'année et à la semaine concernée?
A quoi sert le tableau en bleu avec Feuille, nom, matière1... C'est elle qui permet de générer le tableau récapitulatif ?
Est-ce que je peux m'en servir au quotidien ? Est-ce qu'il y a une manipulation particulière ? Si je copie une feuille est-ce que le code suit ?
Cela pourrait faire gagner beaucoup de temps.
J'essaie d'apprendre le langage VBA mais tout seul je ne comprends pas tout
Cordialement,
re,
oui, j'ai ajouté l'année, sinon avec un tri ascendant, la semaine 1 sera avant la semaine 36, maintenant 25-36 est avant 26-01 !
Dans la macro, un dictionaire collecte toutes les données et au bout on colle ces données dans le tableau structuré "Tabel1". Ses colonnes, de gauche à droit sont :
- le nom de la feuille
- le nom du prof (une partie de la cellule A1)
- première partie de la cellule de la colonne A = "classe"
- 2eme partie de la cellule de la colonne A = matière
- même colonne, mais les lignes 3 (mois), 4 (lundi), 5 (vendredi) et 6 (numéro de la semaine)
- la cellule non-vide et sans formules, avec un contenu numérique.
Après ce collage, la macro renouvelle le TCD (tableau croisé dynamique) à partir de la cellule L1 avec ce TS comme source.
Maintenant, le même fichier avec commentaire dans l'editeur VBA
Je suppose qu'il y a encore quelques anomalies dans ce TCD
Mais, on peut encore créer des autres TCDs avec ce source, par exemple à partir de CA1.
Bart,
Un grand merci pour toutes ces explications et les commentaires dans l'éditeur
J'ai enregistré le fichier avec l'extension xlsb et j'ai créé une feuille pour insérer le tableau Tabel1 et un TCD.
Mais il manque les autres feuilles du classeur dans l'éditeur VBA, je n'ai pas tous les profs. Comment je peux ajouter toutes les feuilles ? Est-ce qu'il y a une limite ?
Je vois que le dictionnaire "Tabel1" s'arrête systématiquement à la ligne 3374. Il ne prend pas toutes les feuilles du fichier Excel avec le nom de tous les professeurs. Est-ce qu'il existe une manipulation pour prendre en compte tous les professeurs ?
Dict.Add Dict.Count, Array(sH.Name, sNom, IIf(Len(sp(0)) = 0, "-", sp(0)), sp(1), c0.Offset(3 - c0.Row).MergeArea.Cells(1).Value, c0.Offset(4 - c0.Row).Value, c0.Offset(5 - c0.Row).Value, sem, c0.Value)
Est-ce que c'est cette ligne de code qui permet de compléter le dictionnaire ? Je dois dire que je ne comprend pas trop cette ligne.
En tout cas c'est super, cela fait des mois que je recherche cette solution sans y parvenir. Ça va vraiment alléger le quotidien s'il prend en compte tous ces éléments.
Un grand merci
Cordialement,
maintenant, la macro prend toutes les feuilles qui ne sont pas dans le tableau "tabel2". Comme ça, j'éspère que tous les profs seront traités.
Le plus facile, c'est de copier & coller la feuille "resume" vers votre autre fichier; mais je pense qu'il faut renommer le TS parce que Excel l'a aussi renommé.
Bonjour Bart,
Désolé pour le temps mis pour répondre, je voulais avoir le temps de tester.
J'ai copié la page dans mon fichier, la macro me remonte une erreur sur cette ligne de code
If Not IsNumeric(Application.Match(sH.Name, Range("tabel2"), 0)) Then 'nom de la feuille n'est pas dans "tabel2"
Avec ce message
J'espère ne pas abusé, désolé.
J'ai copié la feuille Resume sur mon fichier, j'ai bien le tableau tabel1, cependant, je ne comprends pas "tabel2"
Qu'entendez-vous par TS qu'il faut renommer svp ?
Est-ce qu'il existe une manipulation que je peux effecteur svp ?
Bonne soirée et encore merci pour l'aide.
Re,
Pour apporter une précision, j'ai testé dans l'autre sens. J'ai copié de nouvelles feuilles de mon fichier vers le fichier test. La macro fonctionne bien. Elle prend en compte les autres feuilles.
Par contre je ne sais pas expliquer pourquoi cela fonctionnerait dans un sens et pas dans l'autre.
Est-ce le nom d'un fichier qui corrompt l'exécution de la macro ?
Bonne soirée
re,
oei, je l'avais oublié, le tableau "tabel2" se trouve sur la feuille "Feuil2" K2:K11 et contient toutes les feuilles à ignorer. Donc si vous créez ce tableau (la feuille n'a pas d'importance, donc n'importe quelle feuille, mais un tableau nommé "tabel2".
PS ces noms en colonne M étaient de feuilles que la macro ignorait au début, mais j'avais vu, après votre remarque de hier 00:05, que la macro ne pouvait pas faire cela.
Un grand grand merci !! J'ai effectué plusieurs essais avec de nouvelles feuilles de calcules. J'ai testé plusieurs combinaisons et cela fonctionne super bien.
J'ai pu générer jusqu'à 180 000 lignes par la macro, impressionnant.
J'espère réussir à évoluer sur la VBA pour arriver à votre niveau. Je ne sais comment vous remercier.
Bonne soirée