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

NONO14

XLDnaute Impliqué
J'ai un peu regardé ta version 4.

- Quand les six pointages sont remplis, les boutons "Valider", "Modifier", "Annuler" disparaissent sans raison apparemment valable.

- Pourquoi avoir inversé les colonnes "Date" et "Semaine" entre les TS t_Saisie de la feuille Tab_Pointage, et le TS t_Import de la feuille Import_Pointage ?

- Les "dates" du TS t_Saisie sont toujours des textes et non des dates, et donc celles de t_Import aussi.

- Le clic sur une ligne de la ListBox provoque maintenant une erreur, ce qui n'était pas le cas précédemment.
Normal vu que tu as Rw.Range(1, 2).Select qui ne sert à rien et qui ne peut fonctionner vu que ce n'est pas la bonne feuille qui est active.

- Le Application.EnableEvents = False ne sert à rien ici.

- Après la validation d'une modification d'un pointage tu remplis, comme je le disais précédemment, la ListBox Lst_Pointage avec toutes les lignes du TS t_Saisie, alors que les données de l'employé sont toujours visibles, laissant croire que tous les pointages de la ListBox sont les siens.
Bonjour TooFatBoy, bonjour le fil,
Une nouvelle semaine qui démarre. Je vais essayer de rectifier le tir pour tous les points que tu as soulevé.
Je n'ai pas travaillé sur l'application de tout le week-end, besoin de repos. Je reviens vers toi et le forum si nécessaire.
 

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
NONO
tu dis :
Oui il ne faut remplir les textbox que si la d'are est celle du jour où de la veille
Comment fait l'administrateur si le jour et le lundi ,comment accède t'il au dimanche de la semaine précédente ?
Je n'ai pas encore tout compris.
Et je vais avoir d'autres question.
Je n'ai pas encore compris la logique exemple
Est ce qu'il y a préparation des semaines de chaque agent a l'avance , sous quelle forme et où est-ce placé dans le fichier ?
Exemple : y'a t'il une liste des agents par date avec les différentes prises et fin de services prévues ?
Merci
Excuse pour toutes ces questions ! Lol
Bonne journée
Prends soin de toi !
Jean marie
 
Dernière édition:

NONO14

XLDnaute Impliqué
Bonjour le Fil
NONO
tu dis :

Comment fait l'administrateur si le jour et le lundi ,comment accède t'il au dimanche de la semaine précédente ?
Je n'ai pas encore tout compris.
Et je vais avoir d'autres question.
Je n'ai pas encore compris la logique exemple
Est ce qu'il y a préparation des semaines de chaque agent a l'avance , sous quelle forme et où est-ce placé dans le fichier ?
Exemple : y'a t'il une liste des agents par date avec les différentes prises et fin de services prévues ?
Merci
Excuse pour toutes!
ces questions !
Bonne journée
Prends soin de toi
Jean marie
Bonjour jean marie,
J'espère que tu vas bien.
Je vais essayer de répondre à ta question dans l'ordre :
1 - Je pensais mettre en place un code qui enlèverai 1 jour à la date du jour (est-ce faisable ?)
2 - Tous les plannings sont préparés à l'avance (feuilles "Planning" et "Feuille planning - pas encore codées")
Quelle logique ne comprends-tu pas ?
Je vais tenter d'être précis. L'administrateur devra enregistrer les agents recrutés et préparer les plannings sur 4 semaines. Pour ce faire il utilisera le formulaire "GestTemps" à l'onglet "Planning". L'agent devra suivre ses plannings, qui peuvent être différents pour chaque semaine. Le matin à sa prise de service, il pointe (UfPointage) et quand il part, il pointe, cela peut être sur 3 plages maximum, ce qui veut dire que sa journée peut se dérouler sur 1, 2 ou 3 plages horaires. Tous les soirs (ou toutes les fins de semaines, cela reste à déterminer), si l'administrateur fait correctement son boulot, les pointages sont sauvegardés. En cours de semaine, il aura la possibilités de modifier un ou plusieurs pointage, mais uniquement pour ceux du jour ou de la veille.
La feuille "Import_Pointage" sert à récolter tous les pointages du mois. Elle est approvisionnée via le module "Sauv_Pointage".
La feuille "CalculHS" sert à calculer les heures supplémentaires des agents par semaine (en cours de codage).
La recherche se fera selon le code de l'agent (Combo dans la feuille) et la N° de semaine (cellule F1).
Pour réaliser son travail, l'administrateur a donc à sa disposition des menus (UfGestMenus"). Les menus sont protégés par un mot de passe, car les agents n'y auront pas accès.
N'hésites pas à me poser des questions...
 

ChTi160

XLDnaute Barbatruc
Re
Merci de ce retour !
tu dis :
L'administrateur devra enregistrer les agents recrutés et préparer les plannings sur 4 semaines. Pour ce faire il utilisera le formulaire "GestTemps" à l'onglet "Planning".
je n'ai pas vu dans le UFGestTemps de Feuille "Planning" ! ai je le bon fichier ! (peut être la raison de mon incompréhension Lol)
Jean marie
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 117
Membres
112 665
dernier inscrit
JPHD