Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

diviser des heures en VBA

dev_co

XLDnaute Occasionnel
Bonjour
J'aimerai savoir s'il est possible en VBA de diviser des heures je n'ai pas trouvé mes exemples sur des sites
j'explique :
J'ai un temps T=40:00 qui sera issu d'une cellule ; ensuite je voudrai diviser par 16:00
Et là je ne sais pas mettre T/16:00 ou écrire D=16:00 , "16:00" ..ou etc ?
pour les DIM ce sont des Double ou variante ou ???
j'avais l'idée par Modulo 16 ... mais je ne sais pas du tout
Merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, vous pouvez diviser une durée par 16.
il faut seulement savoir deux chose:
1) — Seul le format de la cellule est responsable de ce qu'elle y apparait hh:mm
2) — Elle est en l'unité de temps d'Excel qui est le jour.
Peut être vous faut il en fait la multiplier par 1.5 si ce que vous vouler trouver c'est le nombre de paquets de 16 heures qu'elle contient.

Le type de donnée Double convient.
 
Dernière édition:

dev_co

XLDnaute Occasionnel
Donc il faut qu'à chaque fois je calcule en décimale la correspondance de Temps ? 16:00= 1.5
esi c'est 13:00 aie !! car ce temps risque de changer
on ne peux pas faire X= T/16:00 ?
 

Dranreb

XLDnaute Barbatruc
Non, faites X = T * 1.5
16:00 c'est 16 / 24
Si vous voulez diviser par un nombre d'heures variable NbH, multipliez la aussi par 24
X = T * 24 / NbH
Si votre nombre d'heures est entier vous pouvez aussi utiliser X = T / TimeSerial(NbH, 0, 0)
Si vous l'avez en String de forme hh:mm vous pouvez le convertir en durée en jours par TimeValue
 
Dernière édition:

dev_co

XLDnaute Occasionnel
Je joins un fichier de départ , principalement pour le cas ou je veux mettre en Dur ! le temps
et l'utiliser dans la division exemple avec les 2 cas
 

Pièces jointes

  • divH.xlsm
    13.9 KB · Affichages: 26

dev_co

XLDnaute Occasionnel
Bon , mais si c'est 13:00h ou autre ?
ex : j'ai 40:00h et X fait 07:00 par jour ; Y fait 09:00
Comment récupérer le résultat ?
X > 5j et 05:00
Y > 4j et 04:00
Je sais récupérer 5j ou 4 ... en faisant int( division) mais ensuite le reste en Heure (05:00)
je pense que si je fais afficher 0.66666 dans une cellule en hh:mm il me mettra le bon format ?
 

Dranreb

XLDnaute Barbatruc
Comme ça on obtient 10:00 :
VB:
Private Sub calc()
Dim DuréeDon As Double, DuréeJourn As Double, Jours As Double
DuréeDon = Cells(4, 1).Value
DuréeJourn = Cells(1, 2).Value
Jours = DuréeDon / DuréeJourn
Cells(4, 2).Value = Int(Jours)
Cells(4, 3).Value = (Jours - Int(Jours)) * DuréeJourn
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Ok mais dans mon fichier de départ ... c'est déjà du VBA que je voulais

donc j'avance un peu , mais le résultat est faux , la Sub me donne 2 J et 16:00 au lieu de 10:00
Pourrais tu STP me corriger le VBA ?
VB:
Sub calc()
    heure1 = Cells(4, 1)
    heure2 = Cells(1, 2)
    Cells(4, 2) = Int(heure1 / heure2)
    Cells(4, 3) = Cells(4, 1) - Cells(4, 2) * heure2
End Sub
 

Discussions similaires

Réponses
14
Affichages
865
Réponses
9
Affichages
647
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…