Liste d'heure en fonction d'un maximum VBA

Bonjour à tous , je débute en VBA et dans mon avancement je rencontre un problème :

Dans une partie de mon code VBA , j'ai besoin d'obtenir différent horaire qui une fois additionné valent un nombre total qui est définis au préalable.

Pour illustrer :

Nombre total voulu = 17H

Nombre de cellule = 5

Cellule 1 = 2H

Cellule 2 = 8H

Cellule 3 = 4H

Cellule 4 = 2H

Cellule 5 = 1H

Avec mes cellules qui prennent des valeurs aléatoire tant que le total vaut 17H (par exemple)

Si j'ai pu être clair

Merci à ceux qui aurait une astuce ou quelques indications pour m'aider à résoudre ce problème.

bonjour,

quels seraient le maximum et le minimum pour une cellule ?

bonjour,

Merci de votre réponse

il n'y a pas de min ou de max pour la cellule en elle-même,

j'ai juste besoin que le programme soit capable de "dispatcher" des heures en se basant sur un nombre total choisit sur un nombre de cellules définis.

re-bonjour,

donc une cellule peut contenir 0 heure ?

ci-dessous proposition avec un minimum d'une heure par cellule.

Sub aargh()
    Randomize Timer
    h = Range("A1") 'nombre d'heures à répartir
    c = Range("A2") 'nombre de cellules 
    For i = 1 To c - 1
        q = aleatoire(1, h - (c - i + 1))
        Cells(i + 2, 1) = q
        h = h - q
    Next i
    Cells(i + 2, 1) = h
End Sub
Function aleatoire(borne_inférieure, borne_supérieure)
    aleatoire = Int(Rnd() * (borne_supérieure - borne_inférieure + 1)) + borne_inférieure
End Function

Merci pour l'indication.

J'ai testé votre code ça correspond à mon idée , je vais poursuivre afin de l'adapter convenablement.

Savez--vous s'il est possible de transformer mon temps en minutes ?

par exemple si je veux 5 Cellules pour 4H : Je souhaiterai obtenir :

- Cellule 1 : 1H

- Cellule 2 : 0,5 H (30 min)

- Cellule 3 : 1H

- Cellule 4 : 1H

- Cellule 5 : 0,5 H (30 min)

bonjour,

si tu veux que l 'allocation soit en demi-heure, tu mets ta cible au double d'heures souhaités puis tu divises par 2. En reprenant ton exemple : 5 cellules pour 4 heures.

tu lances la macro avec 5 cellules pour 8 heures. Si tu obtiens 2,1,2,2,1, en divisant par 2 tu obtiendras 1, .5 , 1, 1 .5.

bonjour,

code adapté pour prendre en compte une allocation en parties d'heure

Sub aargh()
    Randomize Timer
    unite = Range("A3") 'A3 unité d'allocation 0.5 pour 30 minutes, 1 pour 1 heure
    h = Range("A1") / unite 'A1 nombre d'heures à répartir, h nombre d'unités d'allocation à répartir
    c = Range("A2") ' A2 nombre de cellules
    For i = 1 To c - 1
        q = aleatoire(1, h - (c - i + 1))
        Cells(i + 4, 1) = q
        h = h - q
    Next i
    Cells(i + 4, 1) = h
    For i = 1 To c
        Cells(i + 4, 1) = Cells(i + 4, 1) * unite
    Next i
End Sub
Function aleatoire(borne_inférieure, borne_supérieure)
    aleatoire = Int(Rnd() * (borne_supérieure - borne_inférieure + 1)) + borne_inférieure
End Function

Merci pour ta réponse h2so4.

c'est bien ce que je voulais obtenir

Rechercher des sujets similaires à "liste heure fonction maximum vba"