Incrémentation dune heure dans VBA

Fermé
letincelle9999 Messages postés 1 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 19 juin 2007 - 19 juin 2007 à 19:55
 helene - 20 juin 2007 à 13:56
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.

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
0