Alors voila, dans ma BD, en gros je gere des contrats.
Pour chaque contrat, on a un priw et un cout : le prix est celui facture au client, et le cout, c'est ce que coute le contrat a la boit.
En gros : marge = prix - cout
Je cherche a faire des calculs de chiffre d affaire en fct d un mois d une annee (chaque contrat a une date)
Mais je sais pas ce qui merde, mais je n obtiens jamais le bon resultat.
Voici ma source :
Private Sub Commande120_Click()
Dim annee_recherche As String
Dim mois_recherche As String
Dim dbf As Database
Dim tuple As Recordset
Dim requete As String
Dim date_debut As Date
Dim date_fin As Date
Dim chiffre_affaire As Long
Dim marge As Long
Dim i As Integer
Dim code_contrat As String
If (IsNull(Forms![Résultat - calcul du CA pour un mois donné]![Modifiable118].Value) Or (IsNull(Forms![Résultat - calcul du CA pour un mois donné]![Modifiable116].Value))) Then
MsgBox "Un champ n'a pas été rempli... :("
Else
annee_recherche = Forms![Résultat - calcul du CA pour un mois donné]![Modifiable118].Value
mois_recherche = Forms![Résultat - calcul du CA pour un mois donné]![Modifiable116].Value
Select Case mois_recherche
Case "Janvier"
date_debut = CDate("01/01/" & annee_recherche)
date_fin = CDate("31/01/" & annee_recherche)
Case "Février"
date_debut = CDate("01/02/" & annee_recherche)
date_fin = CDate("28/02/" & annee_recherche)
Case "Mars"
date_debut = CDate("01/03/" & annee_recherche)
date_fin = CDate("31/03/" & annee_recherche)
Case "Avril"
date_debut = CDate("01/04/" & annee_recherche)
date_fin = CDate("30/04/" & annee_recherche)
Case "Mai"
date_debut = CDate("01/05/" & annee_recherche)
date_fin = CDate("31/05/" & annee_recherche)
Case "Juin"
date_debut = CDate("01/06/" & annee_recherche)
date_fin = CDate("30/06/" & annee_recherche)
Case "Juillet"
date_debut = CDate("01/07/" & annee_recherche)
date_fin = CDate("31/07/" & annee_recherche)
Case "Août"
date_debut = CDate("01/08/" & annee_recherche)
date_fin = CDate("31/08/" & annee_recherche)
Case "Septembre"
date_debut = CDate("01/09/" & annee_recherche)
date_fin = CDate("30/09/" & annee_recherche)
Case "Octobre"
date_debut = CDate("01/10/" & annee_recherche)
date_fin = CDate("31/10/" & annee_recherche)
Case "Novembre"
date_debut = CDate("01/11/" & annee_recherche)
date_fin = CDate("30/11/" & annee_recherche)
Case "Décembre"
date_debut = CDate("01/12/" & annee_recherche)
date_fin = CDate("31/12/" & annee_recherche)
Case Else
MsgBox "Le mois que vous venez d'insérer est incorrect..."
End Select
Set dbf = CurrentDb
requete = "SELECT Prix, Cout "
requete = requete & "FROM Contrat, Piece_prestation_formation "
requete = requete & "WHERE Contrat.Id=Piece_prestation_formation.Id_contrat "
requete = requete & "AND Contrat.Date_contrat >= #" & date_debut & "# "
requete = requete & "AND Contrat.Date_contrat <= #" & date_fin & "#;"
Set tuple = dbf.OpenRecordset(requete)
If tuple.RecordCount = 0 Then
MsgBox "Il n'existe pas de contrat enregistré pendant ce mois..."
Else
chiffre_affaire = 0
For i = 1 To tuple.RecordCount
marge = CLng(tuple("Prix").Value) - CLng(tuple("Cout").Value)
chiffre_affaire = chiffre_affaire + marge
tuple.MoveNext
Next i
MsgBox "Chiffre d'affaire sur la période comprise entre le " & CStr(date_debut) & " et le " & CStr(date_fin) & " : " & vbCrLf & vbCrLf & vbTab & CStr(chiffre_affaire) & " ¤"
End If
tuple.Close
Set tuple = Nothing
dbf.Close
End If
End Sub