cs_jyvaut75
Messages postés9Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention15 février 2008
-
10 août 2007 à 14:07
cs_jyvaut75
Messages postés9Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention15 février 2008
-
13 août 2007 à 14:11
Bonjour,
Je suis programmeur amateur, ce qui ne m'empêche pas de tenter de développer pour le travail. Durant cette activité, je suis face à un souci:
J'ai un Etat dans Access 2003 qui édite des données. Jusque là, rien d'anormal.
Je souhaiterais que ces données aient un fond de cellule différent selon la donnée source ("vacances"=grisé, "autre" pas de changement.
J'ai essayé un code (voir sous la signature), mais celui-ci ne fonctionne pas sur la totalité des "textbox". Si quelqu'un avait une idée...
Merci beaucoup d'avance,
Par ailleurs, ma "bible" actuelle est "Access 97, guide du développeur" chez Sybex, que j'utilise depuis 1998 avec Access97 et suivants.
Pourriez-vous me conseiller un livre au moins aussi poussé, et même si possible d'avantage, mais naturellement plus moderne?
D'avance merci.
Jyvaut75
Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
Dim strEvent As String
Dim Ctrl As Control
For Each Ctrl In Me.Détail.Controls
Select Case Ctrl.Name
Case "D1"
strEvent = Me![D1]
Call CouleurTextBox(strEvent, Ctrl)
Case "D2"
strEvent = Me![D2]
Call CouleurTextBox(strEvent, Ctrl)
Case "D3"
strEvent = Me![D3]
Call CouleurTextBox(strEvent, Ctrl)
Case "D4"
strEvent = Me![D4]
Call CouleurTextBox(strEvent, Ctrl)
Case "D5"
strEvent = Me![D5]
Call CouleurTextBox(strEvent, Ctrl)
Case "D6"
strEvent = Me![D6]
Call CouleurTextBox(strEvent, Ctrl)
Case "D7"
strEvent = Me![D7]
Call CouleurTextBox(strEvent, Ctrl)
Case "D8"
strEvent = Me![D8]
Call CouleurTextBox(strEvent, Ctrl)
Case "D9"
strEvent = Me![D9]
Call CouleurTextBox(strEvent, Ctrl)
Case "D10"
strEvent = Me![D10]
Call CouleurTextBox(strEvent, Ctrl)
Case "D11"
strEvent = Me![D11]
Call CouleurTextBox(strEvent, Ctrl)
Case "D12"
strEvent = Me![D12]
Call CouleurTextBox(strEvent, Ctrl)
Case "D13"
strEvent = Me![D13]
Call CouleurTextBox(strEvent, Ctrl)
Case "D14"
strEvent = Me![D14]
Call CouleurTextBox(strEvent, Ctrl)
End Select
End Sub
Private Function CouleurTextBox(strEvent As String, CtrlTextBox As Control)
Dim lngBlack As Long
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("Tbl_Evenement", dbOpenTable)
rst.Index = "CEvenement"
lngBlack = RGB(0, 0, 0)
Rem lngRed = RGB(255, 0, 0)
Rem lngWhite = RGB(22, 255, 255)
With rst
.Seek "=", strEvent
If .NoMatch Then
MsgBox ("Bug sur CodeEvent" & strEvent)
Else
If ![Present] = True Then
CtrlTextBox.ForeColor = lngBlack
CtrlTextBox.BackColor = 16777215 ' blanc ou transparent
Rem Me![D1].BackColor = 16777215 ' blanc ou transparent
Else
CtrlTextBox.ForeColor = lngBlack
CtrlTextBox.BackColor = 12632256 'gris
Rem Me![D1].ForeColor = lngBlack
Rem Me![D1].BackColor = 12632256 'gris
End If
End If
End With
End Function
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 11 août 2007 à 09:05
salut,
Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
Dim Ctrl As Control
For Each Ctrl In Me.Détail.Controls
If TypeOf Ctrl Is TextBox Then
Call CouleurTextBox(Ctrl.Name,
Ctrl)
End If
Next Ctrl
End Sub
Private Function CouleurTextBox(strEvent As
String, CtrlTextBox As
Control)
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("Tbl_Evenement", dbOpenTable)
rst.Index = "CEvenement"
With rst
.Seek "=", strEvent
If .NoMatch Then
MsgBox ("Bug sur CodeEvent" & strEvent)
Else
CtrlTextBox.ForeColor = vbBlack
CtrlTextBox.BackColor = IIf(![Present], vbWhite, 12632256)
End If
End With
End Function
par contre je pige pas pourquoi tu gardes et regardes strEvent.
il va contenir le contenu de la textbox, pas sa nomenclature. est-ce le but?
dans tous les cas, comme tu passes Ctrl en paramètre tu n'as pas besoin de passer aussi strEvent qui est récupérable
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_jyvaut75
Messages postés9Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention15 février 2008 13 août 2007 à 14:11
Bonjour PCPT,
Merci pour le code simplifié qui fonctionne parfaitement. Effectivement, strEvent n'a aucun intérêt.
Le détail qui "tuait" la mise en forme des zones de texte: Pour toutes les zones de textes dont le nom était >D6, la propriété, style de fond était à "Transparent" au lieu d'être à "Standard". Résultat, beau essayer de colorer, ça ne marchait pas!