1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| Sub Remplissage()
'
' RemplissageTableau Macro
'
'
Dim Demande, NbVoitureLouees, NbJoursTot, NbVoitureDispo As Integer
Dim ligne, colonne As Integer
With ThisWorkbook.Sheets("Feuil1")
' Initialisation de Nombre de jours souhaités
NbJoursTot = 30
' Pour chaque jour
ligne = 19
While NbJoursTot > 0
NbVoitureDispo = .Cells(ligne, 3).Value
Demande = .Cells(ligne, 3).Value
If NbVoitureDispo > Demande Then
NbVoitureLouees = Demande
Else
NbVoitureLouees = NbVoitureDispo
End If
colonne = NbVoitureLouees + 4
While colonne > 4
.Cells(ligne, colonne) = WorksheetFunction.VLookup(aleatoire(10), .Range("F10:H14"), 3, False)
Wend
colonne = NbVoitureLouees + 5
While colonne < 10
.Cells(ligne, colonne) = 0
colonne = colonne + 1
Wend
MsgBox ligne
.Cells(ligne, 4) = NbVoitureLouees
ligne = ligne + 1
NbJoursTot = NbJoursTot - 1
Wend
End With
End Sub
'nb_chiffr représente de nombre de chiffre que la variable aléatoire doit contenir (en d'autres termes = le nombre de chiffres après la virgule)
'La fonction ALEA() contient X chiffres après la virgule. Il suffit d'identifier ce X et de la placer en paramètre dans la fonction.
Function aleatoire(nb_chiffr As Integer)
Dim Val_max As Double
Val_max = 10 ^ nb_chiffr - 1
Randomize
'Nombre aléatoire entre 0 et 1 avec nb_chiffr après la virgule :
aleatoire = (Int(Rnd * (Val_max + 1))) / 10 ^ nb_chiffr
End Function |