Programme VBA : besoin d'aide svp
Bonjour à tous,
Je travaille dans une entreprise de transport. J'essaye de mettre au point un petit programme VBA pour Excel.
A partir d'un nombre de kms sur la page "Liste_clients" et du département sur la même page, on doit récupérer un forfait et un coefficient sur la page "Base". Ainsi, si on a entre 21 et 50 kms, on doit avoir un forfait adapté et si on a également le département 21, on doit avoir un coefficient adapté. (le forfait est placé sur la même ligne que la bonne tranche de kms mais une colonne à droite, ce qui est de même entre département et coefficient)
Le prix est donc le produit entre le forfait et le coefficient.
Mon problème est que le programme prend toujours comme forfait celui qui correspond à la tranche de 1 à 20 (donc la première).
Voici le programme :
Code:
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
| Sub tarif()
'
Dim ligne_1 As Integer '1 correspond à la page de liste des clients
Dim ligne_2 As Integer '2 correspond à la page "base"
Dim ligne_inter As Integer
Dim forfait As Integer
Dim forfaitDepart As Integer
Dim coeff As Double
Dim prix As Double 'prix est le tarif appliqué au client (prix = forfait * coefficient)
ligne_1 = 7
ligne_2 = 2
forfaitDepart = 165
Do While (Sheets("Liste_clients").Cells(ligne_1, 1) <> "")
Sheets("Liste_clients").Select
If (Cells(ligne_1, 1).Value <> "") Then
For ligne_2 = 2 To 34
ligne_inter = ligne_2 - 1
If ((Sheets("Liste_clients").Cells(ligne_1, 2).Value) <= 20) Then
forfait = forfaitDepart
Else
If (((Sheets("Liste_clients").Cells(ligne_1, 2).Value) <= (Sheets("Base").Cells(ligne_2, 1).Value)) And ((Sheets("Liste_clients").Cells(ligne_1, 2).Value) > (Sheets("Base").Cells(ligne_inter, 1).Value))) Then
forfait = Sheets("Base").Cells(ligne_2, 2).Value
End If
End If
ligne_2 = ligne_2 + 1
Next ligne_2
For ligne_2 = 2 To 96
If ((Sheets("Liste_clients").Cells(ligne_1, 3).Value) = (Sheets("Base").Cells(ligne_2, 4).Value)) Then
coeff = Sheets("Base").Cells(ligne_2, 5).Value
End If
Next ligne_2
prix = coeff * forfait
Sheets("Liste_clients").Cells(ligne_1, 5).Value = prix
ligne_1 = ligne_1 + 1
End If
Loop
'
End Sub |
Merci de votre aide. :P