Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction Horodatage besoin d'aide

6 réponses
Avatar
hugo2009
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite chaque
cellule de cette colonne est incremente de 10 minutes,mais quand j'arrive a
"2359" je voudrais basculer sur "0009" Auriez vous une petite idée pour
resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
.[L6] = heure & Minute1
.[AA6] = heure & Minute1 + 10
.[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub

6 réponses

Avatar
Modeste
Bonsour® hugo2009 avec ferveur ;o))) vous nous disiez :

J'ai crée une petite fonction qui me permet de dater des evenements
dans une colonnesour le format "1005" pour dix heures et 5 minutes
,ensuite chaque cellule de cette colonne est incremente de 10
minutes,mais quand j'arrive a "2359" je voudrais basculer sur "0009"
Auriez vous une petite idée pour resoudre ce petit contr temps



Private CommandButton4_Click()
With ThisWorkbook.Sheets("feuil1")
.[L6] = Format(Now, "hhmm")
.[AA6] = Format(Now + TimeValue("0:10"), "hhmm")
.[R6] = Format(Now + TimeValue("0:20"), "hhmm")
End With
End Sub

ensuite selon les cellules à incrementer
reprendre le meme principe en utilisant la fonction offset appliquée à la valeur de la cellule de reference (au lieu de NOW)
Avatar
MichDenis
Bonjour Hugo,

Suppose que tu as dans la cellule A1 : 2359 pour 23 hres 59 minutes
et que tu veux ajouter 10 hres 10 minutes à cette valeur :

'Extrait les minutes
m = Right(Range("A1"), 2)
'Extrait les heures
h = Application.Substitute(Range("A1"), m, "")
'Fait la somme
Range("A1") = Format(TimeValue(h & ":" & m) + TimeValue("10:10"), "HMM")
range("A1") = 1009




"hugo2009" a écrit dans le message de groupe de
discussion :
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite chaque
cellule de cette colonne est incremente de 10 minutes,mais quand j'arrive a
"2359" je voudrais basculer sur "0009" Auriez vous une petite idée pour
resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
.[L6] = heure & Minute1
.[AA6] = heure & Minute1 + 10
.[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub
Avatar
hugo2009
merci pour votre aide precieuse (cela fonctionnne à merveille pour les
premieres cellules des collones) mais en modifiant mon code voir ci-dessous
cela ne fonctionne pas pour la suite des cellules ,ce que je voudrais
pouvoir faire mais je ne sais pas ci cela reste posible: c'est une fois
arrivé à
2354
2404 => 0004 (devienne avec la macro)
2414=> 0014 (devienne avec la macro)

A+
Hugo



For Each c In Feuille(1).Range("b7:b" & DeniereLigne)
If c.Value <> x Then
c.Offset(, colonne) = Format(c.Offset(-1, colonne) + TimeValue("00:10"),
"hhmm")
Else
c.Offset(, colonne) = Format(c.Offset(-1, colonne), "hhmm")
End If
x = c.Value
Next
Next


"MichDenis" a écrit :

Bonjour Hugo,

Suppose que tu as dans la cellule A1 : 2359 pour 23 hres 59 minutes
et que tu veux ajouter 10 hres 10 minutes à cette valeur :

'Extrait les minutes
m = Right(Range("A1"), 2)
'Extrait les heures
h = Application.Substitute(Range("A1"), m, "")
'Fait la somme
Range("A1") = Format(TimeValue(h & ":" & m) + TimeValue("10:10"), "HMM")
range("A1") = 1009




"hugo2009" a écrit dans le message de groupe de
discussion :
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite chaque
cellule de cette colonne est incremente de 10 minutes,mais quand j'arrive a
"2359" je voudrais basculer sur "0009" Auriez vous une petite idée pour
resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
..[L6] = heure & Minute1
..[AA6] = heure & Minute1 + 10
..[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub




Avatar
Daniel.C
Regarde un exemple à l'adresse :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijF6sTVm0.xls
En ligne 2, les colonnes A, B, C sont remplies, la formule de la
colonne E donne un résultat.
En ligne 3, la colonne C n'est pas remplie, la formule de la colonne E
donne un résultat vide.
Daniel

merci pour votre aide precieuse (cela fonctionnne à merveille pour les
premieres cellules des collones) mais en modifiant mon code voir ci-dessous
cela ne fonctionne pas pour la suite des cellules ,ce que je voudrais
pouvoir faire mais je ne sais pas ci cela reste posible: c'est une fois
arrivé à
2354
2404 => 0004 (devienne avec la macro)
2414=> 0014 (devienne avec la macro)

A+
Hugo



For Each c In Feuille(1).Range("b7:b" & DeniereLigne)
If c.Value <> x Then
c.Offset(, colonne) = Format(c.Offset(-1, colonne) + TimeValue("00:10"),
"hhmm")
Else
c.Offset(, colonne) = Format(c.Offset(-1, colonne), "hhmm")
End If
x = c.Value
Next
Next


"MichDenis" a écrit :

Bonjour Hugo,

Suppose que tu as dans la cellule A1 : 2359 pour 23 hres 59 minutes
et que tu veux ajouter 10 hres 10 minutes à cette valeur :

'Extrait les minutes
m = Right(Range("A1"), 2)
'Extrait les heures
h = Application.Substitute(Range("A1"), m, "")
'Fait la somme
Range("A1") = Format(TimeValue(h & ":" & m) + TimeValue("10:10"), "HMM")
range("A1") = 1009




"hugo2009" a écrit dans le message de
groupe de discussion :
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite
chaque cellule de cette colonne est incremente de 10 minutes,mais quand
j'arrive a "2359" je voudrais basculer sur "0009" Auriez vous une petite
idée pour resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
..[L6] = heure & Minute1
..[AA6] = heure & Minute1 + 10
..[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub






Avatar
Daniel.C
Oups. Erreur d'aiguillage.
Daniel

Regarde un exemple à l'adresse :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijF6sTVm0.xls
En ligne 2, les colonnes A, B, C sont remplies, la formule de la colonne E
donne un résultat.
En ligne 3, la colonne C n'est pas remplie, la formule de la colonne E donne
un résultat vide.
Daniel

merci pour votre aide precieuse (cela fonctionnne à merveille pour les
premieres cellules des collones) mais en modifiant mon code voir ci-dessous
cela ne fonctionne pas pour la suite des cellules ,ce que je voudrais
pouvoir faire mais je ne sais pas ci cela reste posible: c'est une fois
arrivé à
2354
2404 => 0004 (devienne avec la macro)
2414=> 0014 (devienne avec la macro)

A+
Hugo



For Each c In Feuille(1).Range("b7:b" & DeniereLigne)
If c.Value <> x Then
c.Offset(, colonne) = Format(c.Offset(-1, colonne) + TimeValue("00:10"),
"hhmm")
Else
c.Offset(, colonne) = Format(c.Offset(-1, colonne), "hhmm")
End If
x = c.Value
Next
Next


"MichDenis" a écrit :

Bonjour Hugo,

Suppose que tu as dans la cellule A1 : 2359 pour 23 hres 59 minutes
et que tu veux ajouter 10 hres 10 minutes à cette valeur :

'Extrait les minutes
m = Right(Range("A1"), 2)
'Extrait les heures
h = Application.Substitute(Range("A1"), m, "")
'Fait la somme
Range("A1") = Format(TimeValue(h & ":" & m) + TimeValue("10:10"), "HMM")
range("A1") = 1009




"hugo2009" a écrit dans le message de
groupe de discussion :
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite
chaque cellule de cette colonne est incremente de 10 minutes,mais quand
j'arrive a "2359" je voudrais basculer sur "0009" Auriez vous une petite
idée pour resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition
au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
..[L6] = heure & Minute1
..[AA6] = heure & Minute1 + 10
..[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub







Avatar
MichDenis
A )
Pour afficher les "0" non significatifs dans une cellule, tu dois
passer le format de la cellule au format texte.

'------------------------------------
Sub test()
Dim M As String, H As Variant, X As String
Range("A1") = 2304

X = Range("A1")
If X < 2400 Then
'Extrait les minutes
M = Right(X, 2)
'Extrait les heures
H = Application.Substitute(X, M, "")
X = Format(TimeValue(H & ":" & M) _
+ TimeValue("10:10"), "HMM")
Else
X = X - 2400
'Extrait les minutes
M = Right(X, 2)
'Extrait les heures
H = Application.Substitute(X, M, "")
'La variable H ne peut contenir "" pour être
'compatible avec TimeValue()
If H = "" Then H = 0
X = Format(TimeValue(H & ":" & M) _
+ TimeValue("0:0"), "HMM")
End If
With Range("A1")
.NumberFormat = "@"
.Value = Application.Rept(0, 4 - Len(X)) & X
End With

End Sub
'------------------------------------



"hugo2009" a écrit dans le message de groupe de
discussion :
merci pour votre aide precieuse (cela fonctionnne à merveille pour les
premieres cellules des collones) mais en modifiant mon code voir ci-dessous
cela ne fonctionne pas pour la suite des cellules ,ce que je voudrais
pouvoir faire mais je ne sais pas ci cela reste posible: c'est une fois
arrivé à
2354
2404 => 0004 (devienne avec la macro)
2414=> 0014 (devienne avec la macro)

A+
Hugo



For Each c In Feuille(1).Range("b7:b" & DeniereLigne)
If c.Value <> x Then
c.Offset(, colonne) = Format(c.Offset(-1, colonne) + TimeValue("00:10"),
"hhmm")
Else
c.Offset(, colonne) = Format(c.Offset(-1, colonne), "hhmm")
End If
x = c.Value
Next
Next


"MichDenis" a écrit :

Bonjour Hugo,

Suppose que tu as dans la cellule A1 : 2359 pour 23 hres 59 minutes
et que tu veux ajouter 10 hres 10 minutes à cette valeur :

'Extrait les minutes
m = Right(Range("A1"), 2)
'Extrait les heures
h = Application.Substitute(Range("A1"), m, "")
'Fait la somme
Range("A1") = Format(TimeValue(h & ":" & m) + TimeValue("10:10"), "HMM")
range("A1") = 1009




"hugo2009" a écrit dans le message de groupe de
discussion :
Bonjour ,
J'ai crée une petite fonction qui me permet de dater des evenements dans
une colonnesour le format "1005" pour dix heures et 5 minutes ,ensuite chaque
cellule de cette colonne est incremente de 10 minutes,mais quand j'arrive a
"2359" je voudrais basculer sur "0009" Auriez vous une petite idée pour
resoudre ce petit contr temps
D'avance merci
Cordialement
hugo
Ci joint mon code

Private Sub CommandButton4_Click()
'HOroDateur
'formatage et remplissage des Heure de validation,Chargement,expedition au
format =>"1000"
heure = Hour(Time)
Minute1 = Minute(Time)
Select Case Minute1
Case Is < 10
Minute1 = "0" & Minute1
End Select
With ThisWorkbook.Sheets("Visites_RC")
..[L6] = heure & Minute1
..[AA6] = heure & Minute1 + 10
..[R6] = heure & Minute1 + 20
End With


Set aa = ThisWorkbook.Sheets("Visites_RC").Range("aa6")
If Val(Right(aa, 2)) >= 59 Then aa = aa + 50
Sheets("Visites_RC").Range("aa6") = aa

Set bb = ThisWorkbook.Sheets("Visites_RC").Range("r6")
If Val(Right(bb, 2)) >= 59 Then bb = bb + 50
Sheets("Visites_RC").Range("r6") = bb


Dim test
test = Array(10, 16, 25) 'Nbre decale de Colonne entre la Colonne Ref
For i = 1 To 3
colonne = test(i)
Set Visite = ThisWorkbook.Sheets("Visites_RC")
x = Visite.Range("b6")
DeniereLigne = Visite.Range("b6").End(xlDown).Row
For Each c In Visite.Range("b7:b" & DeniereLigne)
If c.Value <> x Then
If Val(Right(CStr(c.Offset(-1, colonne)), 2)) >= 50 Then
c.Offset(, colonne) = c.Offset(-1, colonne) + 50
Else: c.Offset(, colonne) = c.Offset(-1, colonne) + 10
End If
Else
c.Offset(, colonne) = c.Offset(-1, colonne)
End If
x = c.Value
Next
Next
Sheets("Visites_RC").Select
End Sub