fichier gestion horaire... question macro

fabian123

XLDnaute Occasionnel
Bonjour à toutes et tous!

je suis occupé à (tenter) de faire un petit fichier qui me permettrait de faire les horaires.

j'ai déjà fait une partie de la mise en page (reste les congés et les prestations supplémentaires, mais c'est pour plus tard) J'ai aussi fait des bouttons qui me permettent d'imprimer ou de renvoyer à une page du fichier.

Reste le plus gros à faire et là, je maitrise pas assez vba pour le faire seul...

j'essaye donc d'expliquer la situation:

sur la feuille accueil il y a un petit tableau dans lequel je peux introduire le nom des agents (agent 1, agent 2 et agent 3)

il y a également un tableau affichant la routine de travail. Celle-ci est établie sur 6 semaines. Au bout de ces 6 semaines, on recommence donc à la semaine 1.

Il y a aussi un tableau affichant les jours de semaines, les endroits et le nombre d'heures prestées.

il y a enfin 12 feuilles représentants chacune un mois de l'année.

Objectif:

lorsque je clique sur le boutton "générer l'horaire" il introduise automatiquement les jours a prester par agent et le nombre d'heures prestées... ç'est pas facile à expliquer, j'ai donc commencé à encoder manuellement le mois de janvier.

Le premier jour de janvier corresponderait donc à la première semaine (dans le cas de 2012, on commence par un dimanche, c'est donc le dernier jour de la semaine 1 et puis on enchaine avec la semaine 2, puis 3....)

voilà, si vous avez un point de départ pour m'aider dans le code... parceque je sais pas comment m'y prendre!

Merci d'avance!
 

Pièces jointes

  • Classeur1.xls
    170.5 KB · Affichages: 97
  • Classeur1.xls
    170.5 KB · Affichages: 98
  • Classeur1.xls
    170.5 KB · Affichages: 104

Papou-net

XLDnaute Barbatruc
Re : fichier gestion horaire... question macro

Bonjour Fabian123,

J'ai commencé à créer la macro pour reporter dans les feuilles de mois, mais je me heurte à un problème :

Je ne vois pas comment gérer les jeudi AM et PM. De plus, dans ton exemple de janvier, tu as reporté les valeurs dans les colonnes de Pierre et Jacques, au lieu de Paul et Jacques si j'ai bien compris?

Voici donc le code de la macro "Transfert" qui sera appelée par un click sur le bouton "Générer l'horaire":

Code:
Sub Transfert()
Dim Mois As Byte, dteJour As Byte, txtJour As String, NbJours As Byte, Annee As Integer
Dim ColSem As Byte
Dim lgVille As Object, Ville As String, Agent As String
tbJours = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")
Annee = Sheets("ACCUEIL").Range("D3")
ColSem = 2
On Error Resume Next
For Mois = 1 To 12
  With Sheets(MonthName(Mois))
    NbJours = CDate("1/" & Mois + 1 & "/" & Annee) - CDate("1/" & Mois & "/" & Annee)
    For j = 1 To NbJours
      dteJour = Weekday(CDate(j & "/" & Mois & "/" & Annee), 2)
      txtJour = tbJours(dteJour - 1)
      Set lgVille = Sheets("ACCUEIL").Range("A30:A37").Find(txtJour, LookIn:=xlValues, lookat:=xlWhole)
      If Not lgVille Is Nothing Then Ville = Sheets("ACCUEIL").Cells(lgVille.Row, 2)
      ... Code à insérer ici par la suite ...
    Next
    ColSem = ColSem + 1
    If ColSem = 8 Then ColSem = 2
  End With
Next
End Sub

Pour l'instant, les boucles fonctionnent parfaitement pour les jours autres que les jeudi, et le report des données n'est pas encore écrit, il ne le sera qu'après avoir trouvé la solution pour AM et PM.

Dans cette attente.

Cordialement.
 

Pièces jointes

  • Fabian123.xls
    172 KB · Affichages: 112
  • Fabian123.xls
    172 KB · Affichages: 114
  • Fabian123.xls
    172 KB · Affichages: 115

fabian123

XLDnaute Occasionnel
Re : fichier gestion horaire... question macro

Bonjour Papou-net!

Un grand merci pour t'être penché sur mon problème!

Je vais essayer le code que tu as fait... mais j'avoue que je ne maitrise pas suffisamment pour comprendre tout ce que tu as fait...

Concernant le problème du jeudi, je ne sais pas trop comment le contourner... ce jour là j'ai un agent qui bosse le matin et un autre l'après-midi, maintenant, c'est un peu comme pour le vendredi et le dimanche ou ils sont deux sur le terrain... sauf quedans le cas du jeudi ils bossent pas le même nombre d'heures... ouais, pas évident!

dans le pire des cas, je continuerai comme maintenant, je les encoderai manuellement...!
 

TempusFugit

XLDnaute Impliqué
Re : fichier gestion horaire... question macro

Bonjour

@papounet
Pourquoi ne pas utiliser Weekdayname ?

Code:
Dim x As Date
x = Date
MsgBox WeekdayName(Weekday(x))
Ce code ci-dessus renvoie jeudi

Cela évite de devoir passer par tbJours dans ta macro
txtJour = WeekdayName(Weekday(dteJour - 1))
 

fabian123

XLDnaute Occasionnel
Re : fichier gestion horaire... question macro

Bonjour à toutes et tous!

désolé pour le retard dans les réponses, mais je bosse en meme temps et j'ai pas toujours le temps de réflechir à mon problème de fichier horaire!

J'ai essayé de comprendre le code de Papou-net, mais je n'y arrive pas...

concernant son probleme pour le jeudi AM et PM, ne peut-on pas le comparer à un vendredi ou un dimanche, ou dans ces cas là il y a deux agents qui travaillent?

Si quelqu'un pouvait me donner des bases d'explications pour le code de Papou-net, peut-être arriverais-je à comprendre un peu mieux le probleme qu'il renconctre...

Merci de votre aide!
 

fabian123

XLDnaute Occasionnel
Re : fichier gestion horaire... question macro

bonjour!

j'ai décidé de laisser de côté mon probleme d'automatisation d'haoraire, pour me concentrer sur d'autres aspects de ma petite appli.

Je me permet donc de poser mes questions sur ce même post afin de ne pas m'eparpiller (comme j'ai fait jusqu'à présent!)

voilà donc mon questionnement du jour!

j'ai trois feuilles excel représentant chacune la feuille de congés annuel d'un agent.

j'ai donc nommé ces feuilles "manuellement' en cliquant sur l'oglet :"Congés Pierre", "Congés Paul" et "Congés Jacques"

ma première questions est: en sachant que j'ai sur ce meme fichier une feuille "Accueil" dans lequel l'utilisateur encode le nom des agents.
Peut-on, via macro nommer la feuille congé en fonction du nom encodé par l'utilisateur.

on aurait (par exemple) comme macro pour la première feuille de congé:

Dim i as string
i = sheets ("Accueil").Range(c7)

Sheets.name = Sheets("Congé " & i)

je suis sur le bon chemin?
 

fabian123

XLDnaute Occasionnel
Re : fichier gestion horaire... question macro

bonjour,

je me permet de remonter le post... je n'ai pas encore trouvé de solution à mon problème de nom de feuille...

vous pouvez me guider? (ou est ce que ce n'est tout simplement pas possible?)
 

fabian123

XLDnaute Occasionnel
Re : fichier gestion horaire... question macro

Bonjour Pierrot93,

Merci pour ton aide!

je débute en vba, donc je comprend pas toujours tout, désolé!

Le code que tu m'as donné, je dois bien le mettre dans l'évenement "Worksheet Selection change" de la feuille "congés"?

parceque si je le laisse dans cet evenement, il ne se passe rien et si je met "activate" ou "change" à la place de selection change, il plante lorsque je clique sur la feuille congé...
 

Discussions similaires

Réponses
5
Affichages
282

Statistiques des forums

Discussions
312 230
Messages
2 086 427
Membres
103 206
dernier inscrit
diambote