Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

Eldorai

XLDnaute Nouveau
Bonjour,

J'ai créé un petit fichier d'emploi du temps pour la gestion des postes de surveillance d'un lycée/collège.

Or cette gestion se fait par jour, en affichant les postes de chaque surveillants.

Donc Feuille 1=Lundi, Feuille 2=Mardi etc.

Je souhaiterais pouvoir établir le planning de chaque surveillants, pour qu'ils aient leurs poste sur la semaine.

J'ai donc créé une nouvelle feuille "EDT par AED", et j'y ai créé un nouvel emploi du temps avec une case en validation des données où l'on rentre le non du Surveillant.

Et à partir de là il faudrait chercher dans les feuilles de journée si il y a des postes à faire pour ce surveillant, et les copier.

J'ai bien essayé avec une RECHERCHE H, mais cela m'a l'air très fastidieux, et pas adapté, car quand je copie/colle la formule, il n'incrémente pas les données de recherche comme je le souhaite, et je dois tout reprendre à la main.
 

Pièces jointes

  • EDT VIESCO_AED.xlsx
    21 KB · Affichages: 36
  • EDT VIESCO_AED.xlsx
    21 KB · Affichages: 40

vgendron

XLDnaute Barbatruc
Re : Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

et ma dernière contribution avant Lundi ;-)
pour ta formule en B41
Code:
=SI(SOMMEPROD(NON(ESTTEXTE(B$3:B$33))*1)<>0;INDEX($A$3:$A$33;MAX(SI(ESTTEXTE(B$4:B$34);LIGNE(B$4:B34)))-2)-INDEX($A$3:$A$33;MIN(SI(ESTTEXTE(B$3:B$33);LIGNE(B$3:B$33)))-2);0)

c'est une formule matricielle.. donc. il faut valider avec Ctrl + Maj + Entrée
puis tu tires vers la droite

passe le format des cellules en format Heure

Code:
MAX(SI(ESTTEXTE(B$4:B$34);LIGNE(B$4:B34)))-2)
MIN(SI(ESTTEXTE(B$3:B$33);LIGNE(B$3:B$33)))-2)

donnent les positions du premier et dernier créneau ou il y a quelque chose
avec index, on récupère les deux horaires
index(Max) - index (Min) te donne l'écart attendu

si on reste comme ca, pour les jours il n'y a aucun poste saisi, le total d'heure est à 11h15

j'ai donc ajouté un test qui vérifie si il y a un poste saisi: avec le sommeprod
si sommeprod retourne 0, alors c'est que la colonne est vide. donc on met l'écart à 0, sinon, on fait le calcul..

dans la pj, j'ai laissé à droite des calculs intermédiaires: tu verras ainsi qui fait quoi

voila ;-) bon week end
 

Pièces jointes

  • EDT VIESCO_AED Rev3.xlsm
    58.3 KB · Affichages: 24
  • EDT VIESCO_AED Rev3.xlsm
    58.3 KB · Affichages: 26

Eldorai

XLDnaute Nouveau
Re : Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

Pas de souci, et te presses pas non plus pour moi. T'as déjà fait beaucoup.

J'ai mis à jour le fichier avec mes dernières améliorations.


Bon week end, merci énormément.
 

Pièces jointes

  • EDT VIESCO_AED.xlsm
    57 KB · Affichages: 24
  • EDT VIESCO_AED.xlsm
    57 KB · Affichages: 31
Dernière modification par un modérateur:

Eldorai

XLDnaute Nouveau
Re : Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

Haaaa je suis content de moi, j'ai réussi à faire l'affichage du taux horaire/jours en fonction du nom du surveillants!!!
Index (ref;equiv(),Equiv()), je commence à comprendre le fonctionnement de ces fonctions.

Et j'ai uniformisé les Mise en formes conditionnelles aussi.

La version finale est proche.

Par contre, je me suis aperçu d'un petit soucis ,due à mon raisonnement sur comment faire le calcul des heures, que j'ai corrigé lâchement. (oui je suis lâche!)

Le calcul des heures, se basant sur Heuremax/HeureMin, ne prends pas en compte d'éventuels trous dans l'emploi du temps. Par exemple une pause de 2H, de 13h à 15h.

Je met en PJ le fichier à jour, avec un exemple de trou le Lundi pour Florian.

Donc j'ai rajouté une case dans mes calculs totaux, plus bas, où je demande d'indiquer le nombre d'heures de trous. (que c'est lâche............ j'ai honte).

Y a t'il moyen de faire le calcul en prenant en compte les trous? je suppose que c'est un mode de calcul beaucoup plus complexe. Je n'arrive pas à me représenter le système...

J'ai remarqué aussi que le calcul ne se faisait pas avec les bonne valeurs.

Par exemple avec l'emploie du temps de Florian sur le fichier en PJ.
Le lundi, il commence à 7:45, et finis à 18:00. Hors le calcul se faisait comme si il finissait au créneau supérieur càd 17:15.
(J'insiste sur le fait que Finir à 18h veux dire que la case 18h est vide.) J'ai donc modifié le décalage de ligne dans le calcul de la valeur Heuremax, de -2 à -1.

PS: La macro a quelques souci de placement de créneau horaire. Par exemple, entre 10h00 et 10h10 je veux ajouter 10h07, je clic donc sur 10h10 et j'écrit 10:07. J'obtient le message "le créneau n'est pas à la bonne place".

EDIT: J'ai retravaillé la page EDT de façon à ce que l'emploi du temps ne soit pas modifiable quand la feuille sera verrouillée.
Ca ressemble un peu plus à un formulaire.
J'ai mis des fonctions de contrôle des résultats sur les calculs d'heures pour ne pas avoir de valeurs impossibles (les heures négatives ca existes pas hein?)
Il y a une feuille de mode d'emploi aussi.
Et la date de mise à jour du fichier se met à jour toute seule (vive la fonction MAINTENANT).
 

Pièces jointes

  • EDT VIESCO_AED.xlsm
    63.4 KB · Affichages: 45
  • EDT VIESCO_AED.xlsm
    63.4 KB · Affichages: 46
Dernière modification par un modérateur:

vgendron

XLDnaute Barbatruc
Re : Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

Hello !!

Y a t'il moyen de faire le calcul en prenant en compte les trous? je suppose que c'est un mode de calcul beaucoup plus complexe. Je n'arrive pas à me représenter le système...

Proposition: tu rajouttes un poste "PAUSE" que les gens saisissent
puis tu modifies la formule en B43 de la feuille EDT
Code:
=SI(SOMMEPROD(NON(ESTTEXTE(B$3:B$34))*1)<>0;INDEX($A$3:$A$34;MAX(SI(ESTTEXTE(B$4:B$35);LIGNE(B$4:B35)))-1)-INDEX($A$3:$A$34;MIN(SI(ESTTEXTE(B$3:B$34);LIGNE(B$3:B$34)))-2);0)-SIERREUR((INDEX($A$3:$A$34;MAX(SI(B$4:B$35="PAUSE";LIGNE(B$4:B35)))-1)-INDEX($A$3:$A$34;MIN(SI(B$3:B$34="PAUSE";LIGNE(B$3:B$34)))-2));0)

c'est "juste" un rajout de ce membre ci:
Code:
SIERREUR((INDEX($A$3:$A$34;MAX(SI(B$4:B$35="PAUSE";LIGNE(B$4:B35)))-1)-INDEX($A$3:$A$34;MIN(SI(B$3:B$34="PAUSE";LIGNE(B$3:B$34)))-2));0)
qui calcule le temps de pause


pour la suite. je continue de lire ton message ;-)
 

vgendron

XLDnaute Barbatruc
Re : Copier des colonnes d'un planning par jour, pour faire un planning par semaine.

(J'insiste sur le fait que Finir à 18h veux dire que la case 18h est vide.) J'ai donc modifié le décalage de ligne dans le calcul de la valeur Heuremax, de -2 à -1.
1) supprimer les listes de validation pour cette ligne, de telle sorte que l'utilisateur ne puisse pas affecter de poste
2) jouer avec le verrouillage des cellules?
à savoir. par défaut. toutes les cellules d'un classeur sont "Verouillées".. mais la feuille sans protection.. ???


déverouiller les cellules par défaut, verouiller celles de la ligne 18h, proteger le classeur.. et surtout. voir si les macro "ajout" et suppression de lignes fonctionnent toujours. auquel cas. il faudra modifier le code..
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 143
Membres
103 129
dernier inscrit
Atruc81500