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
Bonjour le Fil
Questions pour commencer la Journée Lol

la feuille "Tab_Pointage" contient elle les Prévisions enregistrées par l'administrateur ?
lors de L'ouverture du Userform "UfPointage" ce sont donc ces données qui sont chargées ?
a partir de quoi on remplie les TextBox "Txt_PointX" ?
ils contiennent les prévisions ? ou y'a t'il pointage de l'agent ?

Bonne Journée
Jean marie
 

NONO14

XLDnaute Impliqué
Bonjour le Fil
Questions pour commencer la Journée Lol

la feuille "Tab_Pointage" contient elle les Prévisions enregistrées par l'administrateur ?
lors de L'ouverture du Userform "UfPointage" ce sont donc ces données qui sont chargées ?
a partir de quoi on remplie les TextBox "Txt_PointX" ?
ils contiennent les prévisions ? ou y'a t'il pointage de l'agent ?

Bonne Journée
Jean marie
Bonjour jean marie
Ce sont les pointages de l'agent pour le jour.
 

ChTi160

XLDnaute Barbatruc
Re
ce que j'ai modifié dans la Procédure pour l'approvisionnement des "Txt_PointX"
VB:
Private Sub Lst_Pointage_Click()
    If Maj_En_Cours Then Exit Sub
    On Error GoTo ErrorHandler
    ' Vérifie si une ligne a été sélectionnée dans la ListBox
    With Me.Lst_Pointage
        If .ListIndex <> -1 Then
            'On récupère les valeurs de la ligne sélectionnée dans les TextBox
            Me.Txt_Point1.Text = Application.Text(.List(.ListIndex, 1), "hh:mm") 'Ici
            Me.Txt_Point2.Text = Application.Text(.List(.ListIndex, 2), "hh:mm") 'Ici
            Me.Txt_Point3.Text = Application.Text(.List(.ListIndex, 3), "hh:mm") 'Ici
            Me.Txt_Point4.Text = Application.Text(.List(.ListIndex, 4), "hh:mm") 'Ici
            Me.Txt_Point5.Text = Application.Text(.List(.ListIndex, 5), "hh:mm") 'Ici
            Me.Txt_Point6.Text = Application.Text(.List(.ListIndex, 6), "hh:mm") 'Ici    
       End If
    End With
    Exit Sub
ErrorHandler:
    MsgBox "Erreur lors de la récupération des données. Veuillez vérifier les valeurs.", vbExclamation
End Sub
Jean marie
 

NONO14

XLDnaute Impliqué
Re
ce que j'ai modifié dans la Procédure pour l'approvisionnement des "Txt_PointX"
VB:
Private Sub Lst_Pointage_Click()
    If Maj_En_Cours Then Exit Sub
    On Error GoTo ErrorHandler
    ' Vérifie si une ligne a été sélectionnée dans la ListBox
    With Me.Lst_Pointage
        If .ListIndex <> -1 Then
            'On récupère les valeurs de la ligne sélectionnée dans les TextBox
            Me.Txt_Point1.Text = Application.Text(.List(.ListIndex, 1), "hh:mm") 'Ici
            Me.Txt_Point2.Text = Application.Text(.List(.ListIndex, 2), "hh:mm") 'Ici
            Me.Txt_Point3.Text = Application.Text(.List(.ListIndex, 3), "hh:mm") 'Ici
            Me.Txt_Point4.Text = Application.Text(.List(.ListIndex, 4), "hh:mm") 'Ici
            Me.Txt_Point5.Text = Application.Text(.List(.ListIndex, 5), "hh:mm") 'Ici
            Me.Txt_Point6.Text = Application.Text(.List(.ListIndex, 6), "hh:mm") 'Ici   
       End If
    End With
    Exit Sub
ErrorHandler:
    MsgBox "Erreur lors de la récupération des données. Veuillez vérifier les valeurs.", vbExclamation
End Sub
Jean marie
Merci pour ce code. Cependant lorsque je clique sur une ligne de la ListBox, j'ai toujours ce message qui apparaît :"Erreur lors de la récupération des données. Veuillez vérifier les valeurs." et je ne sais pas pourquoi.
 

Pièces jointes

  • GestPersonnnel (3).xlsm
    539.4 KB · Affichages: 1

ChTi160

XLDnaute Barbatruc
Re
une version vec Boucle
Code:
Private Sub Lst_Pointage_Click()
Dim Col As Byte
    If Maj_En_Cours Then Exit Sub
    On Error GoTo ErrorHandler
    ' Vérifie si une ligne a été sélectionnée dans  la ListBox
    With Me.Lst_Pointage
        If .ListIndex <> -1 Then
                  ' Boucle sur les colonnes de la ListBox (par exemple, de 1 à 6)
                  For Col = 1 To 6
                            ' Récupère la valeur dans la colonne et la formate comme une heure
                           Me.Controls("Txt_Point" & Col).Text = Application.Text(Me.Lst_Pointage.List(Me.Lst_Pointage.ListIndex, Col), "hh:mm")
                  Next Col
                   Else
                            MsgBox "Aucun élément sélectionné dans la ListBox."
       End If
    End With
    Exit Sub
ErrorHandler:
    MsgBox "Erreur lors de la récupération des données. Veuillez vérifier les valeurs.", vbExclamation
End Sub
Jean marie
 

NONO14

XLDnaute Impliqué
Re
une version vec Boucle
Code:
Private Sub Lst_Pointage_Click()
Dim Col As Byte
    If Maj_En_Cours Then Exit Sub
    On Error GoTo ErrorHandler
    ' Vérifie si une ligne a été sélectionnée dans  la ListBox
    With Me.Lst_Pointage
        If .ListIndex <> -1 Then
                  ' Boucle sur les colonnes de la ListBox (par exemple, de 1 à 6)
                  For Col = 1 To 6
                            ' Récupère la valeur dans la colonne et la formate comme une heure
                           Me.Controls("Txt_Point" & Col).Text = Application.Text(Me.Lst_Pointage.List(Me.Lst_Pointage.ListIndex, Col), "hh:mm")
                  Next Col
                   Else
                            MsgBox "Aucun élément sélectionné dans la ListBox."
       End If
    End With
    Exit Sub
ErrorHandler:
    MsgBox "Erreur lors de la récupération des données. Veuillez vérifier les valeurs.", vbExclamation
End Sub
Jean marie
Non toujours le même message qui apparaît. Sauf si je clique sur les pointages du jour, ceux qui correspondent à la date du jour. De plus, je ne peux pas modifier les TextBox (Txt_Point). Je continue à chercher de mon côté.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki