Jours fériés en couleur

iqsd Messages postés 5 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 24 nov. 2007 à 17:35
iqsd Messages postés 5 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 26 nov. 2007 à 08:43
Bonjour,

J'ai réalisé un formulaire qui permet la saisie des temps,
Je propose une saisie à la quinzaine et affiche les dates (à partir d'une table quinzaine).
Ces dates sont récupérées dans un sous-formulaire pour saisir les temps passés.
Je possède une table "jours fériés".
Je souhaiterai à l'affichage de mon formulaire principal créer un code évenement pour comparer mes 10 dates (j'ai exclu les samedis et dimanche) à celles de la table "jours fériés" et les afficher en rouge si il y a correspondance.
Je n'ai pas touché à Access depuis longtemps et cherche désespérement la routine.
ps (je tourne en Access 2000)

Merci par avance de votre aide

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 nov. 2007 à 17:57
Access = VBA --> Modif catégorie de la uestion

Jette un oeil à ce fichier Excel à propos des dates des jours fériés et du coloriage <clique ici>
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
iqsd Messages postés 5 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
24 nov. 2007 à 20:17
Merci Jack,

j'ai déjà exploré les pistes de calendrier "prêt à l'emploi".
En fait, je génère mes propres dates, et souhaite simplement mettre 1 alerte à l'utilisateur, s'il s'agit d'une date présente dans ma table "jours fériés".

Isabelle
0
iqsd Messages postés 5 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
25 nov. 2007 à 10:38
voilà ce que j'ai essayé pour répondre à mon souci de mise en couleur de champs. Cet évenement est placé sur activation, mais à l'ouverture du formulaire, il renvoie une erreur liée à la procédure sur activation, pouvez-vous m'aider ?
Merci
Isabelle


Private Sub Form_Current()
Dim dBase As Databases


Dim SQL As String
Dim RS As Recordset


 
SQL = "jours fériés"
Set RS = dBase.OpenRecordset(SQL, dbOpenDynaset)


' Recherche de jours fériés dans la Table
While Not RS.EOF
  
  If RS.Fields("date") = Me![date 1] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![date 2] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![date 3] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 4] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 5] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 6] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 7] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 8] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 9] Then GoTo Suite
  RS.MoveNext  'Ligne suivante
  If RS.Fields("date") = Me![DATE 10] Then GoTo Suite
 
Wend


RS.Close     'Fermeture


Exit Sub
'*****************************
Suite:
'
 Me![date 1].ForeColor = QBColor(4)
 Me![date 2].ForeColor = QBColor(4)
 Me![date 3].ForeColor = QBColor(4)
 Me![DATE 4].ForeColor = QBColor(4)
 Me![DATE 5].ForeColor = QBColor(4)
 Me![DATE 6].ForeColor = QBColor(4)
 Me![DATE 7].ForeColor = QBColor(4)
 Me![DATE 8].ForeColor = QBColor(4)
 Me![DATE 9].ForeColor = QBColor(4)
 Me![DATE 10].ForeColor = QBColor(4)
'
End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 nov. 2007 à 14:11
Salut
Si tu as une erreur, dis nous laquelle.

Ta technique de test n'est pas au point.
En général, dans une boucle "Do While-Loop" (ou "While-Wend" qui marche tjrs mais obsolète), on ne retrouve qu'un seul MoveNext.
En effet, le "While Not RS.EOF" ne peut être évalué qu'à chaque cycle et si tu fais plusieurs MoveNext, tu as de fortes chances de dépasser la fin du RecordSet sans le voir, d'où l'erreur.
En fait, il faut modifier ta méthode et bien comprendre ce que tu fais.
Ceci suffit, pas besoin de Goto ou de MoveNext superflux (+ utilise plutôt Do-Loop que While-Wend)

Do While Not RS.EOF     If RS.Fields("date") Me![date 1] Then Me![date 1].ForeColor QBColor(4)  If RS.Fields("date") Me![date 2] Then Me![date 2].ForeColor QBColor(4)  If RS.Fields("date") Me![date 3] Then Me![date 3].ForeColor QBColor(4)
  ...
  RS.MoveNext  'Ligne suivante
Loop

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
iqsd Messages postés 5 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
26 nov. 2007 à 08:43
Merci beaucoup Jack.


Entre temps, j'avais modifié le code et placé le then après la condition, car ma boucle ne s'arrêtait jamais ...


c'est effectivement plus logique !


En revanche, mes champs dates refusent de se mettre en couleur ...


Alors, j'ai créé un champ supplémentaire férié1, férié2 etc ... et celà marchotte !


Je voudrais juste que les champs n'apparaissent que quand il portent la mention "férié", mais là je galère encore !!!


Bon, je vais poursuivre mes recherches.

merci encore

Isabelle


 
0
Rejoignez-nous