Incrémentation dune heure dans VBA
letincelle9999
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
helene -
helene -
BOnjour
Voici mon problème...
J'ai beaucoup cherché et rien trouvé ! Alors je demande un peu d'aide pour la
premiere fois. C'est probablement une niaiserie mais je ne trouve pas
J'ai monté une application de punch pour les employés de notre compagnie.
en Access SQL (.adp)
j'ai réussi avec des updates a ne mettre que les heures d'entrées et sortie
dans la bd sql.. mais maintenant je dois gérer que si la personne punch
entre 07:20:00 et 07:30:00 .. ca garde le 07: et ca change le 20:00 pour
30:00 dans l'heure ajustée , etc pour que arrondisse au quart d'heure.
Mon probleme est entre xx:50:00
et xx:59:00 que je dois incrémenter seulement le début de lHeure pour que
si la personne punch a 07:58:00 ca doit incrémenter de 1 le début de l'heure
pour que ca devienne 08:00:00
JE mets mon code apres le scan de l'employé quand il entre dans mon vba .. voici une partie de mon code
Private Sub CmdMODIFIER_Click()
Dim cn4 As ADODB.Connection
Dim rs4 As ADODB.Recordset
Dim cn5 As ADODB.Connection
Dim rs5 As ADODB.Recordset
Dim vMessage As String
Dim cn2 As ADODB.Connection
Dim rs2 As ADODB.Recordset
Set cn2 = CurrentProject.AccessConnection
Set rs2 = New ADODB.Recordset
With rs2
Set .ActiveConnection = cn2
.Source = "SELECT Max(DateDeTravail) as DateDeTravail,noEmployeCodeABarre,HeureEntrée,HeureEntreeAjuste,RetardAutorisePar,TSDebutJourneeAccordePar from tblEmployesHeuresDeTravail WHERE NoEMployeCodeABarre = " & Me.txtNoEmployeCodeABarre & "GROUP BY NoEmployeCodeABarre,HeureEntrée,HeureEntreeAjuste,TSDebutJourneeAccordePar,RetardAutorisePar"
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
If IsNull(Me.txtAccordePar) Then
vMessage = MsgBox("Vous devez indiquer qui vous a accorder d'entrer en retard !", vbExclamation, "Instruction")
Me.txtAccordePar.SetFocus
Else
If Not rs2.EOF Then
If Right(Me.txtHeureEntree, 5) >= "00:00" And Right(Me.txtHeureEntree, 5) <= "04:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "05:00" And Right(Me.txtHeureEntree, 5) <= "19:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "15:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "20:00" And Right(Me.txtHeureEntree, 5) <= "34:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "30:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "35:00" And Right(Me.txtHeureEntree, 5) <= "49:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "45:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "50:00" And Right(Me.txtHeureEntree, 5) <= "59:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
rs2.Update
ALORS TOUT FONCTIONNE SAUF CE BOUT LA :
ElseIf Right(Me.txtHeureEntree, 5) >= "50:00" And Right(Me.txtHeureEntree, 5) <= "59:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
je dois ajouter un 60 minutes le début de mon heure ...
Quelqun peux m'aider svp !! J'espère ne pas avoir été trop longue dans mon
message. J'ai essayé d'expliquer le mieux que je pouvais.
Voici mon problème...
J'ai beaucoup cherché et rien trouvé ! Alors je demande un peu d'aide pour la
premiere fois. C'est probablement une niaiserie mais je ne trouve pas
J'ai monté une application de punch pour les employés de notre compagnie.
en Access SQL (.adp)
j'ai réussi avec des updates a ne mettre que les heures d'entrées et sortie
dans la bd sql.. mais maintenant je dois gérer que si la personne punch
entre 07:20:00 et 07:30:00 .. ca garde le 07: et ca change le 20:00 pour
30:00 dans l'heure ajustée , etc pour que arrondisse au quart d'heure.
Mon probleme est entre xx:50:00
et xx:59:00 que je dois incrémenter seulement le début de lHeure pour que
si la personne punch a 07:58:00 ca doit incrémenter de 1 le début de l'heure
pour que ca devienne 08:00:00
JE mets mon code apres le scan de l'employé quand il entre dans mon vba .. voici une partie de mon code
Private Sub CmdMODIFIER_Click()
Dim cn4 As ADODB.Connection
Dim rs4 As ADODB.Recordset
Dim cn5 As ADODB.Connection
Dim rs5 As ADODB.Recordset
Dim vMessage As String
Dim cn2 As ADODB.Connection
Dim rs2 As ADODB.Recordset
Set cn2 = CurrentProject.AccessConnection
Set rs2 = New ADODB.Recordset
With rs2
Set .ActiveConnection = cn2
.Source = "SELECT Max(DateDeTravail) as DateDeTravail,noEmployeCodeABarre,HeureEntrée,HeureEntreeAjuste,RetardAutorisePar,TSDebutJourneeAccordePar from tblEmployesHeuresDeTravail WHERE NoEMployeCodeABarre = " & Me.txtNoEmployeCodeABarre & "GROUP BY NoEmployeCodeABarre,HeureEntrée,HeureEntreeAjuste,TSDebutJourneeAccordePar,RetardAutorisePar"
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
If IsNull(Me.txtAccordePar) Then
vMessage = MsgBox("Vous devez indiquer qui vous a accorder d'entrer en retard !", vbExclamation, "Instruction")
Me.txtAccordePar.SetFocus
Else
If Not rs2.EOF Then
If Right(Me.txtHeureEntree, 5) >= "00:00" And Right(Me.txtHeureEntree, 5) <= "04:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "05:00" And Right(Me.txtHeureEntree, 5) <= "19:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "15:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "20:00" And Right(Me.txtHeureEntree, 5) <= "34:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "30:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "35:00" And Right(Me.txtHeureEntree, 5) <= "49:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "45:00"
rs2.Update
ElseIf Right(Me.txtHeureEntree, 5) >= "50:00" And Right(Me.txtHeureEntree, 5) <= "59:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
rs2.Update
ALORS TOUT FONCTIONNE SAUF CE BOUT LA :
ElseIf Right(Me.txtHeureEntree, 5) >= "50:00" And Right(Me.txtHeureEntree, 5) <= "59:00" Then
rs2("RetardAutorisePar") = Me.txtAccordePar
rs2("HeureEntreeAjuste") = Left(Me.txtHeureEntree, 3) & "00:00"
je dois ajouter un 60 minutes le début de mon heure ...
Quelqun peux m'aider svp !! J'espère ne pas avoir été trop longue dans mon
message. J'ai essayé d'expliquer le mieux que je pouvais.
A voir également:
- Incrémentation dune heure dans VBA
- Changement d'heure - Guide
- Heure de connexion whatsapp qui ne changé pas - Accueil - WhatsApp
- Cdg heure d'arrivée a destination shein - Forum Consommation & Internet
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum Programmation
1 réponse
Bonjour,
j'ai essayer de réécrire ta macro :
Sub essai()
Dim HeurePunch As String
Dim TempsPunch As Integer
Dim MinutePunch As Integer
HeurePunch = Range("A6").Value
MinutePunch = Minute(HeurePunch)
TempsPunch = Hour(HeurePunch)
Select Case MinutePunch
Case Is <= 15
MinutePunch = 15
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is <= 30
MinutePunch = 30
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is <= 45
MinutePunch = 45
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is > 45
MinutePunch = 0
HeurePunch = (TempsPunch + 1) & ":" & MinutePunch
End Select
Range("B6").Value = HeurePunch
End Sub
voilà, en allant cherche l'heure d'entrée en A6 et en mettant l'heure arrondie en B6. Ta valeur en A6 a juste besoin d'avoir un format d'heure (voir dans format=>cellule dans la feuille de calcul)
ça fonctionne.
à bientôt
j'ai essayer de réécrire ta macro :
Sub essai()
Dim HeurePunch As String
Dim TempsPunch As Integer
Dim MinutePunch As Integer
HeurePunch = Range("A6").Value
MinutePunch = Minute(HeurePunch)
TempsPunch = Hour(HeurePunch)
Select Case MinutePunch
Case Is <= 15
MinutePunch = 15
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is <= 30
MinutePunch = 30
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is <= 45
MinutePunch = 45
HeurePunch = TempsPunch & ":" & MinutePunch
Case Is > 45
MinutePunch = 0
HeurePunch = (TempsPunch + 1) & ":" & MinutePunch
End Select
Range("B6").Value = HeurePunch
End Sub
voilà, en allant cherche l'heure d'entrée en A6 et en mettant l'heure arrondie en B6. Ta valeur en A6 a juste besoin d'avoir un format d'heure (voir dans format=>cellule dans la feuille de calcul)
ça fonctionne.
à bientôt