Microsoft 365 Fichier Pointage horaire employés

C-LAKATA

XLDnaute Nouveau
Bonjour à vous,
Et bien si je me retrouve ici, c'est que mes faibles connaissances sur Excel ont fini par me rattraper.
Bien. J'ai construit un calendrier qui affiche suivant le choix de l'année et du mois, les jours en prenant en compte les jours féries et les années bissextiles ainsi qu'une horloge dynamique à l'ouverture. (congratulation...)
Maintenant, je souhaiterai, et c'est là que je bloque, en cliquant sur le bouton "heure d'arrivée ou début pause etc.... que l'heure qui est affichée vient s'enregistrer dans l'emplacement "colonne du bouton activé & ligne égale au jour affiché"
Si vous avez des tuyaux pour ce type d’exercice, je suis preneur. Fichier en PJ
Merci et au plaisir de vous lire.
PS: si vous rédiger le programme en VBA, merci de le commenter que je puisse comprendre et m'enrichir dans ce domaine.
 

Pièces jointes

  • Forum essai pointage.xlsm
    157.7 KB · Affichages: 22
Solution
Bonjour C-Lakata, Lolote,
En PJ bien plus simple que ma première macro du post #2.
Une seule macro pour tous les boutons :
VB:
Sub Inscrit()
    ' Tous les boutons appelent cette macro
    ' Les boutons sont appelés Bouton5 à Bouton8
    ' NoColonne récupère le N° de colonne où mettre l'heure avec le dernier caractère à droite.
    Dim NoColonne%, Ind%
    NoColonne = Val(Right(Application.Caller, 1))
    On Error GoTo Fin
    Ind = Application.Match([E5], [C:C], 0) ' Recherche jour dans colonne date
    Cells(Ind, NoColonne) = Time            ' Inscrit heure dans la bonne colonne
Fin:
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour C-Lakata, et bienvenu sur XLD,
En PJ un essai avec :
VB:
Sub Arrivée()
    Inscrit 5   ' 5eme colonne E
End Sub
Sub DébutPause()
    Inscrit 6
End Sub
Sub FinPause()
    Inscrit 7
End Sub
Sub Départ()
    Inscrit 8
End Sub
Sub Inscrit(NoColonne%)
    Dim Ind%
    On Error GoTo Fin4
    Ind = Application.Match([E5], [C:C], 0) ' Recherche jour dans colonne date
    Cells(Ind, NoColonne) = Time            ' Inscrit heure dans la bonne colonne
Fin4:
End Sub
NB:
1- J'ai modifié B2 par un Index Equiv car sur mon vieux XL2007 je n'ai pas RechercheX.
2- Vos colonne I et J sont en erreur lorsqu'une seule heure est entrée, il faudrait peut être plutôt mettre :
INI:
En I14 : =SIERREUR(SI(E14<>"";SI(F14<>"";F14-E14;0);0);"")
En J14 : =SIERREUR(SI(I14<>"";SI(A14<>"";I14+A14;0);0);"")
( dans la PJ fait uniquement sur IJ14.
 

Pièces jointes

  • Forum essai pointage.xlsm
    76.1 KB · Affichages: 10

Lolote83

XLDnaute Barbatruc
Bonjour C-LAKATA,
Voici ton fichier en retour avec 4 macros associées aux 4 boutons (voir module 2)
Si j'ai bien compris la demande
Edit: Bonjour Sylvanu
De plus, comment faire lors du changement de mois et/ou d'année ??
Actuellement, les données inscrites pour aujourd'hui (26/05/2021) resteront affichées si on passe par exemple au mois de juin ou juillet ou autre. Que faire alors ????
Gestion de l'erreur de date si pas dans le mois en cours.
@+ Lolote83
 

Pièces jointes

  • Copie de C-LAKATA - Forum essai pointage.xlsm
    160.1 KB · Affichages: 13
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour C-Lakata, Lolote,
En PJ bien plus simple que ma première macro du post #2.
Une seule macro pour tous les boutons :
VB:
Sub Inscrit()
    ' Tous les boutons appelent cette macro
    ' Les boutons sont appelés Bouton5 à Bouton8
    ' NoColonne récupère le N° de colonne où mettre l'heure avec le dernier caractère à droite.
    Dim NoColonne%, Ind%
    NoColonne = Val(Right(Application.Caller, 1))
    On Error GoTo Fin
    Ind = Application.Match([E5], [C:C], 0) ' Recherche jour dans colonne date
    Cells(Ind, NoColonne) = Time            ' Inscrit heure dans la bonne colonne
Fin:
End Sub
 

Pièces jointes

  • Forum essai pointage V2.xlsm
    76.1 KB · Affichages: 45

C-LAKATA

XLDnaute Nouveau
Bonjour C-Lakata, Lolote,
En PJ bien plus simple que ma première macro du post #2.
Une seule macro pour tous les boutons :
VB:
Sub Inscrit()
    ' Tous les boutons appelent cette macro
    ' Les boutons sont appelés Bouton5 à Bouton8
    ' NoColonne récupère le N° de colonne où mettre l'heure avec le dernier caractère à droite.
    Dim NoColonne%, Ind%
    NoColonne = Val(Right(Application.Caller, 1))
    On Error GoTo Fin
    Ind = Application.Match([E5], [C:C], 0) ' Recherche jour dans colonne date
    Cells(Ind, NoColonne) = Time            ' Inscrit heure dans la bonne colonne
Fin:
End Sub
Bonjour Sylvanu, Bonjour Lolote83,
Tout d'abord, un grand merci pour le travail ainsi que les explications. C'est exactement ce que je cherchais à faire. Super.
Pour répondre à vos interrogations:
- les ##### qui s'affichent lorsqu'il manque un pointage est voulu. C'est pour attirer l'attention de la personne sur un problème dans ses enregistrements. Dans ce cas il m'en fait part et je corrige....
- La question de Lolote est pertinente sur le fait que les pointages restent quand on bascule au mois suivant.
=> c'est le sujet que je dois maintenant travailler. Enregistrement d'une copie dans une BdD propre à ma gestion du personnel via une petite moulinette qui, à une heure donnée du dernier jour du mois, se lance et fait un Reset de la page avant d'afficher le mois suivant.
- Enfin, par la suite je chercherai au travers d'une liste déroulante du personnel (déjà bâti via une petite macro), lorsque celui-ci affiche son nom, sa page de pointage s'affiche.
Il y a encore du boulot comme vous le constatez. Mais j'aime bien me faire des nœuds au cerveau !LoL!
 

Discussions similaires