Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

ChTi160

XLDnaute Barbatruc
Re
dans le fichier ,je vois que tu as mis 8:00 à 14:00 le matin .
y'a donc pas de Logique Lol
j'avais compris ça ! Lol
Oui. Je n'ai pas mis de nom juste pour l'exemple
moi je croyais que tu programmais par exemple le Matin des agents de 6:30 à 12:00 puis
d'autres de 6:30 à 10:00 idem pour les autres période de 12:00 à 19:00 et 19:00 à 24:00
sachant qu'un agent peut avoir plusieurs périodes dans la Journée
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
oui il faut mieux Lol
arrivée 1, départ 1
aucun rapport donc avec des périodes du matin pour l'après-midi et le Soir !
on vient quand on veut et On pointe Lol
pas évident de gérer ça !
si je comprends (Planning) bien y'a pas de programmation des Horaires ? c'est ça ,
tu mets des Noms et ils viennent quand ils veulent ?
explique moi ?
Jean marie
 
Dernière édition:

NONO14

XLDnaute Impliqué
Non, ils viennent selon leurs plannings horaires et pointer selon ces plannings. L'administrateur remplit les plannings pour le mois et pour chacun des agents. Ils viennent donc selon leurs plannings.
 

ChTi160

XLDnaute Barbatruc
Bonjour NONO
j'espère que tu vas bien ?

Comme indiqué certaines choses me troublent .
Tu as les Indications Matin , Après-Midi et Soir .
la période 14:00 19:00 le Mardi qui est placée en début AM et Fin AM
et le Samedi on a la période 8:00 à 15:00 qui est placée en début Matin et Fin Matin.
pourquoi pas 15:00 en Fin AM
les Jours en Gris sont les Jours Non travaillés ?
je vais regarder Lol
Bonne Journée
Prends soin de Toi
Jean marie
 

NONO14

XLDnaute Impliqué
C'est pour ces raisons que je te disais que les indications Matin, Après-midi, soir, pourraient être remplacées par Début plage 1, Fin plage 1 - Début plage 2, Fin plage 2 - Début plage 3, Fin plage 3, sur le même principe que le tableau dans la feuille "Tab_Pointage".
Effectivement les jours en gris sont des jours de repos, ainsi que les périodes vides entre les plages.
J'y travaille également de mon côté. J'ai supprimé la page 3 du formulaire "GestTemps" qui n'avait pas un grand intérêt, les éditions de plannings se feront directement à partir de la feuille "Feuille_Planning".
Les plannings seront rédigés mensuellement, donc les plages horaires seront fluctuantes.
Je reste à ta disposition si besoin
 

ChTi160

XLDnaute Barbatruc
Re
Début plage 1, Fin plage 1 - Début plage 2, Fin plage 2 - Début plage 3, Fin plage 3,
sera plus logique(la ou il n'y a pas de Logique Lol)
donc la période du Samedi 8:00 à 15:00 serait en Arrivée 1 et Départ 2
jean marie
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…