Private Sub Cbn_Calculer_Click() 'tous les calculs sont effectués ici==> Plus besoin de cliquer dans les différentes cases de total.
'******************************************Calcul du Total_Club*******************************
'=f(nombre de jours Hors dimanche, formule) ==> selon Grille Tarifaire t_Tarifs_Club
'Cette boucle charge les données des frames enfants pour faire les calculs
For i = 1 To 4
If Me.Controls("Txt_DatDeb" & i) <> "" And Me.Controls("Txt_DatFin" & i) <> "" Then
Me.Controls("Text_Nb_Jours_Enfant" & i) = NbJoursHorsDimanche(CDate(Me.Controls("Txt_DatDeb" & i)), CDate(Me.Controls("Txt_DatFin" & i))) 'Nb de jours HORS dimanche
With Sheets("Données_ref").ListObjects("t_Tarifs_club") 'on récupère le tarif dans la grille
Me.Controls("Text_Tarif_Enfant" & i) = Format(.ListColumns(CStr(Me.Controls("Text_Nb_Jours_Enfant" & i))).DataBodyRange(Me.Controls("Cbx_Formule_Club" & i).ListIndex + 1), "0 €")
NbEnf = NbEnf + 1
End With
Else
Me.Controls("Text_Nb_Jours_Enfant" & i) = 0
Me.Controls("Text_Tarif_Enfant" & i) = 0
End If
Next i
'Calcul Total AVANT la remise
Me.Txt_Tot_SansRemise = CDbl(Me.Text_Tarif_Enfant1) + CDbl(Me.Text_Tarif_Enfant2) + CDbl(Me.Text_Tarif_Enfant3) + CDbl(Me.Text_Tarif_Enfant4)
'calcul de la remise fonction du nb d'enfants
Total = Me.Txt_Tot_SansRemise
Select Case NbEnf
Case 0 'ce cas ne devrait pas exister
Case 1 'pas de remise
Total = Total
Case 2 '5%
Total = 0.95 * Total
Case 3 '10%
Total = 0.9 * Total
Case 4 '15%
Total = 0.85 * Total
End Select
Me.Txt_Tot_AvecRemise = Total
'on place le total AVEC ou SANS remise dans Total_Club en fonction de l'option boutton sélectionné 'pour changer valeur par défaut(Avec Remise) aller dans l'initialize
Me.Txt_Total_Club = IIf(Me.Ob_AvantRemise, Format(Me.Txt_Tot_SansRemise, "0 €"), Format(Me.Txt_Tot_AvecRemise, "0 €"))
'************************************************************************************************
'******************************************Calcul du Total_Nat*******************************
Total = 0
For i = 1 To 4 'on récupère les 4 tarifs déjà calculés dans les frames enfants
If Me.Controls("Fr_Enfant_" & i).Visible Then
If Me.Controls("txt_Tarif" & i) = "" Then Me.Controls("txt_Tarif" & i) = 0
Total = Total + Me.Controls("txt_Tarif" & i)
End If
Next i
Me.Txt_Total_Nat = Format(Total, "0 €")
'************************************************************************************************
'*************************************Calcul du Total_Parasol &Siège*****************************
UpdateParasol 'on lance l'update pour éviter bug quand les controles sont vides
UpdateSiège
Me.Txt_Total_Par = Format(CDbl(Me.Txt_Tarif_Parasol) + CDbl(Me.Txt_Tarif_Siège), "0 €")
'************************************************************************************************
'********************************************Calcul du Total*************************************
Total = CDbl(Me.Txt_Total_Club) + CDbl(Me.Txt_Total_Nat) + CDbl(Me.Txt_Total_Par)
If Me.Txt_TOTAL <> "" Then
If Total <> CDbl(Me.Txt_TOTAL) Then
If MsgBox("le montant calculé ne correspond pas au montant Total Saisi" & Chr(10) & "Etes-vous sur de vouloir utiliser le montant saisi?", vbYesNo) = vbNo Then
Me.Txt_TOTAL = Format(Total, "0 €")
End If
End If
Else
Me.Txt_TOTAL = 0
End If
'************************************************************************************************
'********************************************Calcul du "Doit"*************************************
Me.Txt_Paiement = IIf(Me.Txt_Paiement = "", 0, Me.Txt_Paiement)
Me.Txt_Doit = Format(CDbl(Me.Txt_TOTAL) - CDbl(Me.Txt_Paiement), "0 €")
Me.Txt_Doit.Value = Format(Me.Txt_Doit.Value, "0.00 €") 'Formatage
Me.Txt_Doit.BackColor = IIf(CDbl(Txt_Doit.Value) > 0, &HEB, &HE0E0E0) 'coloration
'************************************************************************************************
End Sub
[/code
[/QUOTE]
J'ai compris le code et à quoi il sert.
Mais je préfère ta solution de remise.
Du coup j'ai crée une Txt_Remise et j'ai ajouter
Me.Txt_TOTAL = Format(CDbl(Me.Txt_Total_Club) + CDbl(Me.Txt_Total_Nat) + CDbl(Me.Txt_Total_Par) [U]- CDbl(Me.Txt_Remise), "0 €")[/U]
J'ai même tenté un : Me.Txt_Remise = Format(Me.Txt_Remise.Value, "0 €")
Mais ça bug si la case remise est vierge.