Microsoft 365 Rechercher la dernière cellule saisie dans un TS et ajouter l'heure système

NONO14

XLDnaute Impliqué
Bonjour à toutes et à tous,
Me revoilà avec une nouvelle discussion. Voici mon problème.
Dans un formulaire UfPointage il y a un bouton qui doit servir à enregistrer l'heure système dans une feuille "Planning" dans un TS ("t_BDD").
Pour ce faire, on doit rechercher le code agent (Txt_Code) dans le TS, colonne "Code agent" qui est la 1ère colonne du TS, mais également rechercher si il y a déjà eu un pointage à la date du TextBox (TxB_DateJour). Si c'est le cas, alors on recherche le dernier pointage, le premier étant dans la colonne 6 (Pointage 1) et les autres à la suite jusqu'à la colonne 11 (Pointage 6).
De plus, lorsque l'on saisie le Code agent dans la Txt_Code, la ListBox (Lst_Pointage) doit se remplir des pointages déjà réalisés dans la semaine pour cet agent, si il y en a.
La ListBox doit contenir le N° semaine (Colonne 4 du TS, "Semaine") et la date de pointage. Les TextBox (Txt_Point 1 à 6) reçoivent les heures de pointages qui pourront être modifiées si besoin. Pour le moment, la ListBox et les Txt_Point sont Enabled=True. Ils seront rendu modifiable en cliquant sur le bouton modifier, mais ça on verra plus tard.
J'ai commencé un bout de code pour le remplissage du TS mais je ne sais pas comment faire pour la recherche du dernier pointage.
Merci par avance pour votre aide
VB:
Private Sub Cmb_Entrée_Click()
Dim Ctrl As Control
Dim TrouvLig As Boolean
Dim TrouvDerLig As Boolean

    If Me.Txt_Code.Value = "" Then 'Si la TextBox est vide, un message d'alerte dans le Label information
        Me.Lbx_Information.Caption = "Vous devez renseigner votre code"
        Exit Sub
    End If
   
    DeProtege ("Planning") 'On déprotège la feuille de calcul "Planning"
   
    With Sheets("Planning").ListObjects("t_BDD") 'On utilise la feuille et son TS pour les recherches et les saisies
   
    TrouvLig = False
       
        For i = 1 To ListRows.Count 'Pour chaque ligne du TS on recherche le code agent et la date
                If .ListColumns("Code agent").DataBodyRange(i) = Me.Txt_Code And .ListColumns("Dat").DataBodyRange(i) = Me.TxB_DateJour Then
            Ligne = i
    TrouvLig = True
       
        Exit For
                End If
        Next i
       
            If Not TrouvLig Then 'Si on a pas trouvé la ligne, on créé une nouvelle ligne
                Ligne = .ListRows.ass.Index
            End If
           
'On écrit les infos dans le TS
    .DataBodyRange(Ligne, 1) = Me.Txt_Code
    .DataBodyRange(Ligne, 2) = Me.Txt_Noms
    .DataBodyRange(Ligne, 3) = Me.Txt_Prénom

'Là je ne sait plus comment faire pour rechercher le dernier pointage à partir de la colonne 11 jusqu'à la 6
       
End Sub
 

Pièces jointes

  • GestPersonnnel (3).xlsm
    477.7 KB · Affichages: 12
Solution
bonjour

on est d'accord que pour répondre à la question posée dans le titre, il suffit de faire

VB:
with sheets("NomFeuille").listobjects("NomTS")
    .Listcolumns("NomColonne").databodyrange(.listrows.count)=now
end with

avec NomFeuille=nom de la feuille sur laquelle est le TS
NomTS = nom du TS
NomColonne = nom de la colonne du TS dans laquelle mettre la date du jour

TooFatBoy

XLDnaute Barbatruc
Bonjour TooFatBoy
L'oubli ne fait pas la règle. Nous avons longuement palabré à ce sujet en réunion et il en ait résulté qu'un seul "oubli" serait toléré. Mais je n'ai pas la force de vous expliquer maintenant comment nous allons gérer ça.
En gros, un seul "oubli" dans le mois, sinon sanction pécunière.
Tu confonds ce qu'il se passe dans la vie (oubli de pointage) avec ce qu'il faut programmer (pointage au début à la fin de travail).
Et ça veut donc dire que depuis le début on cogite sur un truc qui n'a aucune raison d'être, à essayer de calculer comment calculer les horaires réels de travail en cas d'oubli de pointage. ;)

Ce n'est pas grave en soit car c'est toujours intéressant de se dérouiller les neurones, mais c'est du temps perdu pour le développement de ton appli.
 

NONO14

XLDnaute Impliqué
re
j'ai fait une autre vidéo pour le Cas du Début de Journée première Prise de Service .j'ai supprimé la Ligne du 09/12/2024 dans ma bases de Données.
Jean amrie
Bonjour Jean Marie
J'ai jeté un œil à ton travail et je dois admettre que c'est excellent même si l'on est loin du projet initial.
Cependant, la gestion en sera peut-être plus facile. Pour le moment je suis en standby le temps de me remettre en forme et j'espère pouvoir reprendre en janvier, je croise les doigts.
Merci beaucoup pour ton investissement
Je te souhaite de très bonnes fêtes de fin d'année
René
 

NONO14

XLDnaute Impliqué
Tu confonds ce qu'il se passe dans la vie (oubli de pointage) avec ce qu'il faut programmer (pointage au début à la fin de travail).
Et ça veut donc dire que depuis le début on cogite sur un truc qui n'a aucune raison d'être, à essayer de calculer comment calculer les horaires réels de travail en cas d'oubli de pointage. ;)

Ce n'est pas grave en soit car c'est toujours intéressant de se dérouiller les neurones, mais c'est du temps perdu pour le développement de ton appli.
Bonjour TooFatBoy,
Je vois que tu ne lâches pas le morceau mais tu as raison. Alors aux dernières nouvelles, pour un non pointage, on devrait utiliser les horaires du planning et retirer 1/4 d'heure. Par exemple : si sur le planning de l'agent il est prévu une arrivée à 8h00 et qu'il n'a pas pointé (sauf absence) on devra indiquer 8h15 dans le tableau de pointage. Je ne sais pas encore comment je vais faire, mais ça devrait fonctionner comme ça.
Comme je l'ai écrit à Jean Marie, pour le moment je suis en standby, j'espère reprendre en janvier.
Merci encore pour tes précieuses réflexions.
Je te souhaite de très bonnes fêtes de fin d'année
René
 

TooFatBoy

XLDnaute Barbatruc
Je vois que tu ne lâches pas le morceau mais tu as raison.
Oui, désolé. :( J'avais bossé dessus au départ, donc je jette un œil de temps en temps pour voir où tu en es.


Alors aux dernières nouvelles, pour un non pointage, on devrait utiliser les horaires du planning et retirer 1/4 d'heure. Par exemple : si sur le planning de l'agent il est prévu une arrivée à 8h00 et qu'il n'a pas pointé (sauf absence) on devra indiquer 8h15 dans le tableau de pointage. Je ne sais pas encore comment je vais faire, mais ça devrait fonctionner comme ça.
Ce que je veux dire, c'est que contrairement à ce qu'on a cherché à faire pendant plusieurs semaines, dans ton programme il ne faut pas chercher à calculer le temps de travail quand il y a un nombre impair de pointages dans la journée.
Il faut simplement mettre une alerte afin que ce soit corrigé manuellement par l'admin (ajout du pointage manquant) et c'est là que tu décompteras (ou non) un quart d'heure d'amende au contrevenant. ;)


Comme je l'ai écrit à Jean Marie, pour le moment je suis en standby, j'espère reprendre en janvier.
Merci encore pour tes précieuses réflexions.
Je te souhaite de très bonnes fêtes de fin d'année
René
Remets-toi d'aplomb et reviens-nous bientôt. ;)
Passe de bonnes fêtes de fin d'année.
 

NONO14

XLDnaute Impliqué
Oui, désolé. :( J'avais bossé dessus au départ, donc je jette un œil de temps en temps pour voir où tu en es.



Ce que je veux dire, c'est que contrairement à ce qu'on a cherché à faire pendant plusieurs semaines, dans ton programme il ne faut pas chercher à calculer le temps de travail quand il y a un nombre impair de pointages dans la journée.
Il faut simplement mettre une alerte afin que ce soit corrigé manuellement par l'admin (ajout du pointage manquant) et c'est là que tu décompteras (ou non) un quart d'heure d'amende au contrevenant. ;)



Remets-toi d'aplomb et reviens-nous bientôt. ;)
Passe de bonnes fêtes de fin d'année.
Merci pour vos encouragements à vous deux. L'idée de l'alerte est très bonne.
Prenez soin de vous et à très bientôt.
René
 

Discussions similaires

Statistiques des forums

Discussions
315 059
Messages
2 115 816
Membres
112 552
dernier inscrit
nenette223