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 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
Public lngCouleurPrec As Long
Private Sub Détail_Paint()
On Error GoTo Err_Previous
Dim strPrecedent As String
Dim rstClone As DAO.Recordset
Dim strBookmark As String
Dim lngCouleurPrec As Long
With Me.Form
Set rstClone = .RecordsetClone
strBookmark = .Bookmark
rstClone.Bookmark = .Bookmark
End With
' Si premier enregistrement du recordSet
If rstClone.BOF Then
' Obtient la couleur de fond
lngCouleurPrec = Me.Section("Détail").BackColor
' Sinon se déplace au précédent
Else
rstClone.MovePrevious
' Lit valeur précédent
strPrecedent = rstClone.Fields("Champ1")
' Re-synchronise bookmark
Me.Form.Bookmark = strBookmark
End If
' Si, dans l'enregistrement courant, le champ a la même valeur que le précédent
If rstClone.Fields("Champ1") = strPrecedent Then
With Me.Section("Détail")
' Applique la même couleur comme couleur de fond
.BackColor = lngCouleurPrec
' Supprime l'alternance de couleur
.AlternateBackColor = .BackColor
End With
Else
With Me.Section("Détail")
.BackColor = .AlternateBackColor
lngCouleurPrec = .AlternateBackColor
End With
End If
Exit_Previous:
Exit Sub
Err_Previous:
If Err.Number <> 3021 Then 'Not at the 1st or New Record
MsgBox Err.Description, vbExclamation, "Error in Previous()"
End If
Resume Exit_Previous
End Sub |
Partager