Alterner la couleur de fond de la section "détails" d'un état

mintri

XLDnaute Occasionnel
Bonjour,

Je viens vous consulter pour un peu d'aide concernant les états Access (2010). J'ai plusieurs états pour lesquels je souhaite que la section détail change de couleur une ligne sur 2. Pour cela, je fais clic droit sur la section détail pour déterminer deux couleurs d'arrière plan.

Cependant cela a marché pour un état mais pas pour le deuxième... J'ai vérifié partout et je ne comprends pas d'où peut venir cette erreur.

Auriez-vous déjà rencontré ce problème ? Si oui, j'espère que vous aurez un peu de temps pour me faire part d'une éventuelle solution :)

Merci par avance !
 
C

Compte Supprimé 979

Guest
Re : Alterner la couleur de fond de la section "détails" d'un état

Salut mintri,

Tu es sur qu'elle version d'Access ?
As-tu regardé s'il n'y a pas du code qui gère ça ?

A+
 

mintri

XLDnaute Occasionnel
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
 
C

Compte Supprimé 979

Guest
Re : Alterner la couleur de fond de la section "détails" d'un état

Re,

Effectivement, ça ne vient pas du code ;)

Je n'ai pas Access 2010, mais est-ce qu'il n'est pas possible de créer une mise en forme conditionnelle !?
Quand tu est sur l'état en mode création, est-ce que cette option existe !?

J'ai trouvé la réponse, apparemment oui : Ce lien n'existe plus

A+
 

chris

XLDnaute Barbatruc
Re : Alterner la couleur de fond de la section "détails" d'un état

Bonjour
Bise à Bruno

Cela marche sur les états de type tabulaire : dans les propriétés de la zone détail : "couleur de fond" et "autre couleur de fond" doivent avoir des teintes différentes.
 

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 613
dernier inscrit
luluinmauritius