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
Tu dis pour me répondre :
Les possibilités sont 1 + 2, ou 3 et 4 ou 5 et 6
Ça je m'en doutais lol
Ma question était pour une journée
Peut on avoir 1 et 2 puis 3 et 4
Comme 3 et 4 puis 4 et 5
Ou juste 1 et 2 , 3 et 4 , 5 et 6
Me suis je mieux fait comprendre ? Lol
Les horaires sont ils fixes , car dans tes exemples on trouve par exemple 6:21 etc
Quelles serait les heures de début pris en charge car tu dis :
Logiquement un clic à l'arrivée vaut un clic au départ.
Et donc l'heure de départ qui en découle ?
Bonne journée
Jean marie
 

NONO14

XLDnaute Impliqué
Premier horaire 6h30, dernier horaire 23h30. Dans cette fourchette, il peut y avoir 2, 4 ou 6 pointages. On peut donc avoir 1, 2 ou 3, 4, ou 5, 6 ou 1, 2, 3, 4 ou 3, 4, 5, 6 ou 1, 2, 5, 6 ou 1, 2, 3, 4, 5, 6 toutes les combinaisons sont possibles. Les pointages impairs sont des arrivées et les pairs des départs, logiquement si tous les pointages sont réalisés correctement. Si cela simplifie les choses, je peux mettre 2 boutons, un qui prendrait les arrivées, donc les impairs et l'autre les départs, les pairs.
 

NONO14

XLDnaute Impliqué
Re
Quand tu dis :

c'est l'amplitude
début de Journée : 6:30
et Fin de Journée : 23:30
c'est çà ?


Bon aujourdhui repas de famille !
pas trop le temps Lol
Prends soin de toi !
Jean marie
La première arrivée est à 6h30, mais l'agent ne travaille pas jusqu'à 23h30. Les horaires sont tellement variables qu'il est difficile d'écrire toutes les possibilités.
Moi aussi je suis en repas de famille... Bon appétit
Prends soin de toi également
 

TooFatBoy

XLDnaute Barbatruc
Non il n'y a pas de coquille, si la cellule code agent est vide la cellule semaine reste vide
La coquille dont je parle est le numéro de semaine que tu fais afficher.

Dans ta formule tu mets NumSem qui, si je ne me trompe, est le numéro de semaine d'aujourd'hui, alors qu'il me paraîtrait plus logique de mettre le numéro de semaine de la date inscrite sur la même ligne, c'est-à-dire du jour du pointage.
 
Dernière édition:

NONO14

XLDnaute Impliqué
C'est pour rechercher les pointages de la semaine. Mais peut-être n'est-ce pas une bonne idée !
 

TooFatBoy

XLDnaute Barbatruc
C'est pour rechercher les pointages de la semaine. Mais peut-être n'est-ce pas une bonne idée !
Tu n'as pas compris : avec ta formule, pour moi, tu auras le numéro de semaine d'aujourd'hui partout, ce qui ne sert à rien.
Note le numéro de semaine qui s'affiche aujourd'hui (dimanche) et regarde demain (lundi) si c'est toujours le même.


Je n'avais pas terminé le code et j'ai fait une approche, mais apparemment c'est loupé
Non, ce n'est pas "loupé", c'est seulement "en cours de développement".


C'était une erreur de frappe il faut lire Add
Nous l'avions bien compris.
 
Dernière édition:

NONO14

XLDnaute Impliqué
Normalement le n° de semaine est calculé dans la feuille "Données" selon la date du jour. Je regarderai demain.
Bon appétit et bon dimanche
 

ChTi160

XLDnaute Barbatruc
Re
TooFatBoy dit :
effectivement dans toute"t_BDD" tu vas avoir pour semaine dans la Colonne "Semaine" la Semaine de la Date en cours !
Bien vue ! Lol
le problème c'est que dans la Colonne "Date" ce n'est pas des dates mais du texte
Donc la Formaule "=NO.SEMAINE.ISO()" ne fonctionne pas !
Je pense que ces deux Colonnes Semaine et Date peuvent être remplie via la procédure qui remplis la Base de Donnés .
Bonne fin de Journée
Jean marie
 
Dernière édition:

NONO14

XLDnaute Impliqué
Oui j'avais relevé ce problème de format.
 

Discussions similaires

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