Re : Alterner la couleur de fond de la section "détails" d'un état
Salut BrunoM45,
Merci pour ta réponse !
Je suis sur la version 2010 d'Access. j'ai comparé les codes des deux états et c'est totalement inexplicable car il n'y a aucun code qui n'a l'air de gérer cette mise en forme... Et surtout les codes sont en tout point similaires entre les deux états.
Voici ci-dessous le code de l'état qui fonctionne. Je ne vois pas de mise en forme mais peut-être que des yeux plus avisés pourraient y voir autre chose
Option Compare Database
'déclaration des variables
Const Nombre_colonnes = 12 ' Nombre de champs indépendants dans l'état
Dim dbBase As DAO.Database
Dim rstEnregistrement As DAO.Recordset
Dim NbColonnes As Integer 'Nombre de colonnes dans la table source
Const Nbc_statique = 7 'Nombre de colonnes statique dans la table source
Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) 'détail au formatage
Dim entX As Integer
If Not rstEnregistrement.EOF Then
If Me.FormatCount = 1 Then
Me.Controls("Detail_rp").Value = rstEnregistrement(NbColonnes - 1).Value
For entX = 1 To (NbColonnes - Nbc_statique)
Me.Controls("Detail" + Format(entX)).Value = rstEnregistrement(entX + Nbc_statique - 1).Value
'MsgBox rstEnregistrement(entX - 1).Name
Next entX
For entX = (NbColonnes - Nbc_statique + 1) To Nombre_colonnes
Me.Controls("Detail" + Format(entX)).Visible = False
Next entX
rstEnregistrement.MoveNext
End If
End If
End Sub
Private Sub Détail_Retreat() 'Détail: Au reformatage
rstEnregistrement.MovePrevious
End Sub
Private Sub EntêteÉtat_Format(Annuler As Integer, FormatCount As Integer) 'Entête état: Au formatage
rstEnregistrement.MoveFirst
End Sub
Private Sub ZoneEntêtePage_Format(Cancel As Integer, FormatCount As Integer)
Dim entX As Integer
Dim NomPeriode As String
Dim mois_num As Integer
'Met l'entête de la période maximale
mois_num = (rstEnregistrement(NbColonnes - 1).Name + 3)
If mois_num > 12 Then
mois_num = mois_num - 12
End If
'NomPeriode = StrConv(MonthName(mois_num), vbProperCase)
Me("Entete_rp") = mois_anglais(mois_num)
Me("PE_rp") = mois_anglais(mois_num)
' Met les entêtes de colonnes dans des zones de texte dans la section Entête.
For entX = 1 To (NbColonnes - Nbc_statique)
mois_num = (rstEnregistrement(entX + Nbc_statique - 1).Name + 3)
If mois_num > 12 Then
mois_num = mois_num - 12
End If
'NomPeriode = StrConv(MonthName(mois_num), vbProperCase)
Me("Entete" + Format(entX)) = mois_anglais(mois_num)
Me("PE" + Format(entX)) = mois_anglais(mois_num)
Next entX
' Cache les zones de texte inutilisées dans la section Entête.
For entX = (NbColonnes - Nbc_statique + 1) To Nombre_colonnes
Me("Entete" + Format(entX)).Visible = False
Me("PE" + Format(entX)).Visible = False
Next entX
End Sub
Private Sub Report_Close() 'Etat: sur fermeture
rstEnregistrement.Close
End Sub
Private Sub Report_NoData(Annuler As Integer) 'Etat : sur aucune données
'MsgBox "Aucun enregistrement n'a été trouvé.", vbExclamation, "Information"
rstEnregistrement.Close
Annuler = True
End Sub
Private Sub Report_Open(Annuler As Integer) 'Etat: sur ouverture
Dim rstRequete As DAO.QueryDef
Set dbBase = CurrentDb
Set rstRequete = dbBase.QueryDefs("final_cost_center")
Set rstEnregistrement = rstRequete.OpenRecordset()
Dim entX As Integer
Dim NomChamps As String
Dim ChampsCS As String
'Définit le nombre de colonnes de la requête
NbColonnes = rstRequete.Fields.Count
'définition du champs Réel période, période la plus récente
NomChamps = rstEnregistrement(NbColonnes - 1).Name
ChampsCS = "=sum([" & NomChamps & "])"
Me("Stotal_rp").ControlSource = ChampsCS
Me("Total_rp").ControlSource = ChampsCS
'définition des champs pour le pieds de groupe et Pied d'état
For entX = 1 To (NbColonnes - Nbc_statique)
NomChamps = rstEnregistrement(entX + Nbc_statique - 1).Name
ChampsCS = "=sum([" & NomChamps & "])"
Me("Stotal" + Format(entX)).ControlSource = ChampsCS
Me("Total" + Format(entX)).ControlSource = ChampsCS
Next entX
' Cache les zones de texte inutilisées dans la section Pied de groupe et Pied d'état
For entX = (NbColonnes - Nbc_statique + 1) To Nombre_colonnes
Me("Stotal" + Format(entX)).Visible = False
Me("Total" + Format(entX)).Visible = False
Next entX
End Sub