Projet de tableau complexe avec macro
Bonjour,
J'ai mis en place un tableau type calendrier pour gérer au jour le jour les affectations de mon équipes. Ce tableau fait appel a des formules et beaucoup de mises en formes conditionnelles. Le problème est que je dois mettre ce tableau entre les mains de mes collaborateurs et que je passe mon temps à refaire les formules et les mises en forme...
Du coup j'ai pensé "peut-on faire tout ça avec des macro ?" je pense que la réponse est oui mais je suis novice sur la question....
Si vous pouvez m'aider sur quelques uns de mes besoins, ça serait super ...
- Besoin 1 : en fonction de la date, faire apparaitre dans la cellule du dessus le nom du mois si c'est le 1er jour et faire apparaitre dans la cellule en dessous le nom de la semaine si c'est un lundi
en formule ça donne ça :
=SI(JOUR(B2)=1;TEXTE(B2;"mmmm");"")
=SI(TEXTE(B2;"jjjj")="Lundi";NO.SEMAINE(B2);"")
- Besoin 2 : faire une mise en forme auto (et non modifiable par les autres) en fonction de la date :
- une bordure latérale avant si c'est le 1er du mois
- griser la colonne pour les samedi et dimanche
- griser les jours féries qui sont dans l'onglet codelists (si possible)
- et idéalement supprimer toutes les valeurs (hors dates, mois, semaine) qui seraient présentes dans les colonnes "week-end et jours fériés"
- Besoin 3 : faire une mise en forme conditionnelle (toujours non modifiable par les autres) en fonction d'un renseignement et idéalement à partir d'une liste de cellules déjà mise en forme (onglet codelists)
- Besoin 4 : reporter les absences de manière auto : je colle un export de notre systeme de congés dans un onglet (import_abs) puis un autre onglet (absences) recapitule les absence par jour et par personne. J'aimerai retrouver l'info dans mon onglet principal (2024) :
- si dans l'onglet absences il y a "ABS" (pour une personne et une date données), alors la valeur "ABS" viendrai écraser le renseignement fait
- si dans l'onglet absences il y a "/abs" (pour une personne et une date données), alors la valeur "/abs" viendrai s'ajouter au renseignement fait (ex : F4/abs)
Je joint la "base" du tableau que j'ai nettoyé de toutes les mises en formes que j'avais faites car c'était un vrai bazar...
Bien consciente qu'il y a beaucoup de demande, merci de me dire si elles sont réalisables ou pas
Bonjour
NO.SEMAINE donne la semaine américaine et non la nôtre : il faut utiliser NO.SEMAINE.ISO
Aujourd'hui le plus simple est d'utiliser un tableau structuré avec les colonnes : Personne, Date, Affectation et de générer le Calendrier par PowerQuery
Si les en-têtes ne bougent pas (ce qui semble le cas ici avec des dates du 1er /01 au 31/12 ou 28/12) la MFC peut être faite normalement.
Sinon il faut la régénérer par VBA à l'actualisation.
Tu as un exemple approchant ici https://forum.excel-pratique.com/excel/calendrier-dynamique-192589#p1197407
Merci pour les pistes, je vais regarder ça
78chis,
Ne connaissant pas du tout PowerQuery et étant novice en VBA, je dois avouer ne pas réussir à repartir de ton exemple pour faire quelque chose de mon tableau... Et le problème est aussi que j'ai peu de temps a y consacrer...
Tampi, je vais faire du excel basique pour le moment et essayer de verrouiller au max la feuille pour ne pas perdre mes formules et mise en forme.
Merci quand même
Bonjour
Je te demandais juste de mettre tes données sous forme de tableau structuré si l'exemple du lien te paraissait intéressant et je t'aurais aidé pour le reste mais si tu n'as le temps...
Pardon, je n'avais pas compris... et je n'ai pas forcément tout le vocabulaire donc il faut m'excuser
Je souhaite garder la présentation de l'onglet principal tel quel (les personnes en colonne et les dates en entête) car il me faut fiabiliser le tableau mais surtout pas en changer la présentation (ça risquerai de perturber mes collaborateurs...). Le renseignement des affectations est fait directement dans l'onglet principal (2024) pour avoir une vue globale.
RE
Si on saisit dans l'onglet 2024 il n'y a pas de formule (à part tes en-têtes)
Normalement une MFC par couleur suffit donc pour le corps du tableau
Pour les en-têtes 2 MFC suffisent
En revanche mélanger saisie et VBA avec l'un susceptible d'écraser l'autre (en cas de nouveau changement qui a raion ?) me parait partir dans l'usine à gaz
Si saisir dans un petit tableau structuré 4 infos (via listes déroulantes sauf la date) Date, Collaborateur, Fx, éventuellement 1 ou 1/2
tableau qui serait automatiquement croisé avec l'extraction des absences pour générer le calendrier n'est pas envisageable, alors je laisse les VBistes te construire cette usine à gaz dont il ta faudra définir précisément ce qui se passe quand une absence disparait ou apparait par rapport à la version précédente...