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

[VBA] transformer les heures en nombre entier + conditions

1 réponse
Avatar
DJ9B
Bonjour à tous !
Contexte :
Sur la Feuil6 d'un classeur j'ai en A1 j'ai une heure de début au format
06:00
En A2 j'ai une heure de fin au format 20:00, de A3 à A(...) j'ai une liste
de noms dont le nombre est variable.
De B2 à G2 les jours de la semaine ( de lundi à samedi ).
De B3 à G(...) des heures au format 13:00 ou des cellules vides

Le résultat que je cherche à obtenir :
De I3 à N(...)
- transformer l'écart obtenu entre les heures qui se trouvent de B3 à G(...)
et l'heure de départ en nombre entier
Si le résultat est égal à "", l'écart entre l'heure de départ et l'heure de
fin doit être ajouté au jour suivant.
Si le résultat est compris ente 0 et 10 la cellule doit être égale à l'écart
entre l'heure de départ et l'heure de fin + l'écart obtenu entre les heures
qui se trouvent de B3 à G(...) et l'heure de départ en nombre entier.
Si le résultat est supérieur à 10 la cellule doit être égale à l'écart entre
l'heure de départ et l'heure de fin

Ce que j'ai déjà fait mais qui ne fonctionne que partiellement :

Sub testcalculheures()
Dim heurededebut As Date
Dim heuredefin As Date
Dim heure As Date
Dim ecarttype As Variant
Dim ecarttype2 As Variant
Dim ecarttype3 As Variant
Dim nbcel As Integer
Dim nbcol As Integer

heurededebut = Feuil6.Cells(1, 1).Value
heuredefin = Feuil6.Cells(2, 1).Value
ecarttype = heuredefin - heurededebut
ecarttype = ecarttype * 24
ecarttype2 = ecarttype

For nbcel = 1 To Feuil6.Range("A3", [A3].End(xlDown)).Count
For nbcol = 1 To 6
heure = Feuil6.Cells(2 + nbcel, 1 + nbcol).Value
ecarttype3 = heure - heurededebut
Select Case heure

Case "06:00:00" To "10:00:00"
' a voir écart type pas bon
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ecarttype3

Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = Feuil6.Cells(2 +
nbcel, 8 + nbcol).Value * 24 + ecarttype2

ecarttype2 = ecarttype + ecarttype3
Case "00:00:00"
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ""
ecarttype2 = ecarttype2 + ecarttype
Case Is > "10:00:00"
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ecarttype2
ecarttype2 = ecarttype
End Select

Next nbcol
Next nbcel

End Sub


Merci !


--
dj9b@free.fr
www.dj9b.fr.st
et maintenant aussi :
http://dj9b.free.fr

1 réponse

Avatar
DJ9B
Bonjour à tous !
Je pense que ma demande et mes explications n'ont pas été très claires.
D'ailleurs cela ne trompe pas : aucun réponse !
J'ai donc mis en ligne ici http://cjoint.com/?juw105vKxT
un fichier exemple avec nombre de commentaires et d'explications.
Si une âme charitable veuille bien y jeter un oeil.
Merci d'avance !

--

www.dj9b.fr.st
et maintenant aussi :
http://dj9b.free.fr
"DJ9B" <Inlè a écrit dans le message de
news:
Bonjour à tous !
Contexte :
Sur la Feuil6 d'un classeur j'ai en A1 j'ai une heure de début au format
06:00
En A2 j'ai une heure de fin au format 20:00, de A3 à A(...) j'ai une liste
de noms dont le nombre est variable.
De B2 à G2 les jours de la semaine ( de lundi à samedi ).
De B3 à G(...) des heures au format 13:00 ou des cellules vides

Le résultat que je cherche à obtenir :
De I3 à N(...)
- transformer l'écart obtenu entre les heures qui se trouvent de B3 à
G(...)

et l'heure de départ en nombre entier
Si le résultat est égal à "", l'écart entre l'heure de départ et l'heure
de

fin doit être ajouté au jour suivant.
Si le résultat est compris ente 0 et 10 la cellule doit être égale à
l'écart

entre l'heure de départ et l'heure de fin + l'écart obtenu entre les
heures

qui se trouvent de B3 à G(...) et l'heure de départ en nombre entier.
Si le résultat est supérieur à 10 la cellule doit être égale à l'écart
entre

l'heure de départ et l'heure de fin

Ce que j'ai déjà fait mais qui ne fonctionne que partiellement :

Sub testcalculheures()
Dim heurededebut As Date
Dim heuredefin As Date
Dim heure As Date
Dim ecarttype As Variant
Dim ecarttype2 As Variant
Dim ecarttype3 As Variant
Dim nbcel As Integer
Dim nbcol As Integer

heurededebut = Feuil6.Cells(1, 1).Value
heuredefin = Feuil6.Cells(2, 1).Value
ecarttype = heuredefin - heurededebut
ecarttype = ecarttype * 24
ecarttype2 = ecarttype

For nbcel = 1 To Feuil6.Range("A3", [A3].End(xlDown)).Count
For nbcol = 1 To 6
heure = Feuil6.Cells(2 + nbcel, 1 + nbcol).Value
ecarttype3 = heure - heurededebut
Select Case heure

Case "06:00:00" To "10:00:00"
' a voir écart type pas bon
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ecarttype3

Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = Feuil6.Cells(2 +
nbcel, 8 + nbcol).Value * 24 + ecarttype2

ecarttype2 = ecarttype + ecarttype3
Case "00:00:00"
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ""
ecarttype2 = ecarttype2 + ecarttype
Case Is > "10:00:00"
Feuil6.Cells(2 + nbcel, 8 + nbcol).Value = ecarttype2
ecarttype2 = ecarttype
End Select

Next nbcol
Next nbcel

End Sub


Merci !


--

www.dj9b.fr.st
et maintenant aussi :
http://dj9b.free.fr