XL 2019 Planning horaires chantier/ouvrier

Romain_rpn

XLDnaute Nouveau
Bonjour à tous !

Je vous contacte aujourd'hui, car je ne sais pas par où commencer.

Je recherche à faire un planning des chantiers en fonction de mes ouvriers. Cela me permettra de savoir là où je vais au niveau de mes disponibilités pour prendre de nouveau chantier aux prés des clients afin de leurs données une date.

Le but est "simple" ;)

Dans ma feuille BDD, j'ai mon tableau avec mes informations sur les chantiers et à qui je les attribue.
En fonction de la date de commencement du chantier et du nombre d'heures de fabrication, ce qui doit afficher sur le planning le nom de l'ouvrage, sur le bon salarié.

Merci par avance pour votre aide/conseils,

Romain
 

Pièces jointes

  • Planning projet.xlsm
    16.6 KB · Affichages: 47
Solution
re romain_prn
content d'avoir pu vous aider
Dans le tableau, il me semble intéressant de programmer une sauvegarde avec une purge automatique des données historique (dans la macro, sauvegarde et suppression à 30 jours dépassés, mais en faisant attention à toujours garder au mininimum une ligne avec les formules. (dans la macro la ligne 2 est ignorée) (finalement, ce n'est pas utile de masquer les colonnes du tableau inutilisées, mais attention à protéger la feuille pour ne pas détruire les formules.

Pour le tableau, les colonnes à la suite de votre classeur permettent d'organiser le décompte des heures.
Le 1er et le dernier jour, c'est particulier. (plus la pause repas de midi).
Je me suis largement inspiré d'une proposition de...

GALOUGALOU

XLDnaute Accro
Bonjour romain_rpn bonjour le forum
Je ne vous propose pas la solution, mais une solution. (je ne maitrise pas parfaitement excel et des membres de xld auront peut-être une solution plus simple).
J'ai librement interprété votre problématique, à vous de voir si la solution vous convient
Dans le classeur un onglet férié pour le décompte des jours chômés.
Dans les onglets Planning horaire et bdd des colonnes sont masquées. Elles contiennent des formules, qui préparent le classeur à l'affichage du planning.
Attention à la saisie des horaires et des dates. Excel comprend le format horaire si vous saisissez 03:00 et le format date 12/07/2021.
J'ai séparé la saisie des dates et des horaires, une formule concatène les informations. J'ai rajouté une colonne pour la saisie d'un sigle d'intervention, affiché dans le planning de l'agent concerné.
Un bouton vous permets d'afficher les colonnes masquées (contenant les formules)

Pour l'exemple la formule matricielle finale
VB:
{=SIERREUR(INDEX(Bdd!$A$2:$O$1000;EQUIV(1;(C$9=Bdd!$G$2:$G$1000)*(Bdd!$P$2:$P$1000<=C$6+$A12)*(Bdd!$Q$2:$Q$1000>=C$6+$A12);0);8);"")}
bonne découverte
cordialement
galougalou
 

Pièces jointes

  • Copie de Copie de Planning 4.xlsm
    43.4 KB · Affichages: 15
Dernière édition:

GALOUGALOU

XLDnaute Accro
re romain_rpn
Je viens de me rendre compte d'un problème d'affichage sur le planning dû à la formule matricielle.
A la fin de la formule ce n'est pas >= c6 mais uniquement >c6.
VB:
=SIERREUR(INDEX(Bdd!$A$2:$P$503;EQUIV(1;(C$9=Bdd!$G$2:$G$503)*(Bdd!$O$2:$O$499<=C$6+$A12)*(Bdd!$P$2:$P$499>C$6+$A12);0);8);"")
cdt
galougalou
 

Pièces jointes

  • Copie de Copie de Planning 7 colonne 8 renvoyée.xlsm
    43.5 KB · Affichages: 8

Romain_rpn

XLDnaute Nouveau
Bonjour GALOUGALOU,


Je teins à vous remercier pour ce tableau !

Dans un de mes anciens poste sur se forum, on ma dit que travailler avec des tableaux étais beaucoup plus simple pour la gestion de donnée. (Rajout de colonne, ligne)

Alors j'ai repris votre formule et j'ai essayer de d'y rajouter les plages du tableau BDD.
VB:
=SIERREUR(INDEX(BDD[#Tout];EQUIV(1;(G$9=BDD[Attribution])*(BDD[jour horaire début]<=G$6+$A12)*(BDD[jour horaire fin]>=G$6+$A12);0);3);"")

Sauf que ça ne fonctionne pas, c'est normal ?
J'ai fais une erreur dans la formule ?
Peut-on l'utiliser uniquement avec RechercheV/H/X ?

Info:
J'ai changer votre système d'heure et tout baisser d'une demi-heure. Car de 8:00 à 8:30 c'est 8:30, le boulot doit être fini à la fin de de la demi-heure/heure, mais pas au début. (Je sais pas si j'ai étais claire 😅)

Car tout finissait avec 0:30 minutes en trop, mais maintenant c'est l'inverse. Je sais pas comment trop faire, enlever cette demi-heure.
La seul chose que j'ai trouvé à faire c'est de rajouté 00:30 à l'heure de début. Pour que ça puisse commencé à une heure pile.
Dans la feuille BDD, tableau bdd "Jour horaire début",
VB:
=SOMME($D3+($E3+"00:30"))

Je vous remercie encore pour le temps que vous avez pris pour créer se tableau et d'avoir répondu à ma question,

Romain
 

Pièces jointes

  • Planning 6.xlsm
    54.6 KB · Affichages: 11

Romain_rpn

XLDnaute Nouveau
Re GALOUGALOU,

Encore une fois MERCI !

Je viens tous juste d'adapter votre formule au tableau, et tout fonctionne pour les heures j'ai pas besoin de rentré ma formule ridicule 😅.

J'ai juste encore des questions par rapport au plage du tableau.

J'ai aussi rajouté le fais de pouvoir naviguer entre les années.

Merci pour vos réponse qui m'on bien aider,

Romain
 

Pièces jointes

  • Planning 6.xlsm
    43.9 KB · Affichages: 18

GALOUGALOU

XLDnaute Accro
re romain_prn
content d'avoir pu vous aider
Dans le tableau, il me semble intéressant de programmer une sauvegarde avec une purge automatique des données historique (dans la macro, sauvegarde et suppression à 30 jours dépassés, mais en faisant attention à toujours garder au mininimum une ligne avec les formules. (dans la macro la ligne 2 est ignorée) (finalement, ce n'est pas utile de masquer les colonnes du tableau inutilisées, mais attention à protéger la feuille pour ne pas détruire les formules.

Pour le tableau, les colonnes à la suite de votre classeur permettent d'organiser le décompte des heures.
Le 1er et le dernier jour, c'est particulier. (plus la pause repas de midi).
Je me suis largement inspiré d'une proposition de roblochon dans un fil précédent. Merci à lui pour les formules.
Vous trouverez dans le lien ci-dessous, des explications qui pourront vous aider.
pour les macros
VB:
Sub Sauvegarde()
Dim F1 As String
Dim F2 As String
F1 = Sheets("Bdd").Name
F2 = Sheets("Sauvegarde").Name
' Sheets(F2).Select
On Error Resume Next

 li = Sheets(F1).Cells(36000, 2).End(xlUp).Row

ligne = Sheets(F2).Cells(36000, 2).End(xlUp).Row + 1
For i = 3 To li

If Sheets(F1).Cells(i, 14).Value < Date - 30 Then


  Sheets(F2).Cells(ligne, 9) = Sheets(F1).Cells(i, 16)
   Sheets(F2).Cells(ligne, 1) = Sheets(F1).Cells(i, 1)
      Sheets(F2).Cells(ligne, 2) = Sheets(F1).Cells(i, 2)
     Sheets(F2).Cells(ligne, 3) = Sheets(F1).Cells(i, 3)
       Sheets(F2).Cells(ligne, 4) = Sheets(F1).Cells(i, 4)
      Sheets(F2).Cells(ligne, 5) = Sheets(F1).Cells(i, 5)
     Sheets(F2).Cells(ligne, 6) = Sheets(F1).Cells(i, 6)
      Sheets(F2).Cells(ligne, 7) = Sheets(F1).Cells(i, 7)
       Sheets(F2).Cells(ligne, 8) = Sheets(F1).Cells(i, 8)
 
ligne = ligne + 1
End If
Next i
Sheets(F1).Select
Call suppLig
MsgBox "sauvegarde effectuée, tableau mis à jour"
End Sub

Sub suppLig()
Dim F1 As String
F1 = Sheets("Bdd").Name
Sheets(F1).Unprotect
    Dim lig As Long
    For lig = Sheets(F1).Cells(36000, 2).End(xlUp).Row To 3 Step -1
       If Sheets(F1).Cells(lig, 14).Value < Date - 30 Then Rows(lig).EntireRow.Delete
    Next lig
    Sheets(F1).Protect
End Sub
cdt
galougalou
 

Pièces jointes

  • Planning 8.xlsm
    47.9 KB · Affichages: 45

Romain_rpn

XLDnaute Nouveau
Bonjour GALOUGALOU,

Je vous remercie pour cette précieuse aide que vous m'avez apporter ! 😁

Merci pour cette macro, mais mon chef d'entreprise veux garder tout l'historique des chantiers qui on étais réalisés. Je la met de coté on c'es jamais s'il change d'avis. 😉

Bonne journée et continuation à vous,

Romain.
 

Discussions similaires