Compléter une zone de texte après clic gauche

Claudine -  
 amigo -
Bonjour,
Je travaille avec Access2000. J'ai réalisé un formulaire de rendez-vous . Celui-ci se compose d'une liste modifiable qui me renseigne les Nom et prénom des clients, après sélection d'un client donc d'un Nom-Prénom : supposons 'Marius', je voudrais que ce dernier s'affiche dans une des zones de texte désignée ''De 11h à 12h'' ou '' De 12h à 13h ''que je choisis après clic gauche de la souris .Supposons que je clic sur lazone de texte"De 12h à 13h"
Exemple:
De 11h à 12h .....................

De 12h à 13h Marius

Pouvez-vous m'aider à afficher Marius tout en assurant la mise à jour de la table des rendez-vous?

d'avance merci

Claudine
A voir également:

33 réponses

ltstam Messages postés 398 Statut Membre 59
 
salut pourrais tu être plus précis?Que veux tu faire au juste?
0
Claudine
 
Je vais essayer d'être plus précis:
Dans mon formulaire de rendez-vous, j'ai des zones texte reprenant les différentes heures de rendez-vous possible: soit De 11h à 12h et De 12h à 13h;
après avoir compléter la date du rendez-vous avec le calendrier, je voudrais que le Nom_Prénom du client sélectionné dans la liste Modifiable13 s'affiche après clic dans une des zone de texte soit ''De 12h à 13h" ou bien ''De 13h à 14h''

J'espère m'être fait comprendre. Merci pour votre réponse
Claudine
0
amigo
 
Bonjour,

C'est l'evenement Enter qui est déclenché quand on clic une zone de texte pour la selectionner

Private Sub TextBox1_Enter()
'ecrire ton code ici
End Sub

Saliut.
0
Claudine
 
merci pour votre réponse rapide. Cependant je ne suis pas certain de bien écrire la ligne de code :

[Nom_Prenom] from Modifiable13

est-ce valable (je suis débutant)

que dois-je indiquer dans les propriétés des zones de texte choisie"De 12h à 13" ou ''De 13h à14h''?

Un tout grand merci
Claudine
0
amigo
 
Si la liste modifiable s'appelle ComboBox1
et si la zone de texte s'appelle TextBox1

Private Sub TextBox1_Enter()
TextBox1.Text = ComboBox1.Text
End Sub

Si ça ne marche pas , ou si tu n'y arrive pas, dis moi quel nom tu a donné à ta liste modifiable et à ta zone de texte.
A+
0
Claudine
 
Merci à toi Amigo pour ta compréhension face à un débutant mais j'ose espérer progresser car j'adore la programmation.Ma liste modifiable porte le nom: Modifiable17 .
La zone de texte porte le nom: De13hà14h.
Par conséquent j'ai indiqué le code:

Private Sub De13hà14h_Enter()
De13hà14h.Text=Modifiable17.Text
End Sub

Après sélection d'un NomPrenom dans ma liste: Modifiable17 et clic gauche de la souris dans ma zone de texte:De13hà14h, j'ai un message d'erreur d'exécution 2185 qui me dit: Impossible de faire référence à une propriété ou de la définir par un contrôle si ce dernier n'est pas activé.
Difficile pour moi de comprendre à moins que tu puisse me l'expliquer pour la suite des évènements.
Peut-tu m'éclairer
Bien à toi et merci
Claudine
0
amigo
 
Bonjour,

Tes controles, sont-ils directement sur la feille Excel ou sur une userform?

S'ils sont sur une feuille Excel, il faut quitter le mode création et passer en execution.
Dans la barre d'outils Visual Basic, le bouton avec une règle et une equerre doit etre relevé pour activer les controles.

A+.
0
catoubon Messages postés 3 Statut Membre
 
Merci Amigo , mais je ne suis pas sûr de tout saisir!
Je suis en mode formulaire et non en mode création dans Access2000.
En mode création, j'ai cliqué Affichage puis Code et j'ai tapé les lignes de code que tu m'as renseigné. Ce sont les seules existantes. Les propriétés de la zone de texte affiche simplement le nom: De13hà14h. Manque-t'il quelque chose?
Quand je reviens en mode formulaire, toujours la même erreur 2185 dès que je clic dans la zone de texte: De13hà14h
Dans ce cas comment puis-je activé ce contrôle? puisque mon formulaire est actif. Manque-t'il quelques lignes de code relatives à la liste: Modifiable13 ?
Difficile de suivre un débutant surtout à distance. Si tu ne perds pas patience, peut tu déniché où est l'erreur ?
Claudine ou Catoubon
0

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

Posez votre question
amigo
 
Bonjour Claudine

Je te prie de m'excuser, je ne devais pas être bien réveillé ce matin, je croyais de tu travaillais dans Excel2000.
Ceci explique pourquoi tu ne comprenais pas ce que je disais. L'erreur vient de moi. Je suis confus.

Je vais quand meme essayer de te depanner. Moi j'ai Acces2003, j'espère que ce n'est pas trop différent.

Quand tu double-clic sur le controle Combobox, ou sur le controle textbox une fenètre de propriété doit normalement s'ouvrir. Agrandis un peu la fenêtre si necessaire pour vour la valeur des propriétes.
Dan l'onglet Données ou sinon dans l'onglet Toutes, tu verras une propriété Activé (ou Enabled) et une autre Verrouilé (ou Locked).
Je ne vois pas trop la différence des deux, je regarderai dans l'aide. La prop. Activé tu la passe à Oui (ou Yes ou True)
et la pro. Verrouilé tu la passe à Non (ou False).

Essayes déja comme ça et tiens moi au courant, on avancera petit à petit.

Et encore pardon pour le quiproquo.

A+.
0
catoubon Messages postés 3 Statut Membre
 
Bonsoir Amigo
Il n'y a pas lieu de t'excuser car il est très difficile de dépaner à distance d'autant plus que ce sont des messages séparés qui expliquent mon problème et qu'il est difficile de se souvenir de tout.
Quoi qu'il en soit, j'ai vérifié les propriétés du combobox et du textbox: tout est Ok!
Toujours la même erreur 2185
Je ne doute pas un instant de l'issue: la réussite est au bout du chemin , ce qui me permettra de progresser . Merci millle fois.
Claudine
0
amigo
 
Re,

J'ai un peu progressé.
Voila ce que j'ai fait.

J'ai crée un formulaire Formulaire1 sur lequel j'ai placé un ComboBox Modifiable17 et un TextBox De13hà14h
Clic droit sur TextBox > Créer code événement > Générateur de code

Il m'affiche
Private Sub De13hà14h_BeforeUpdate(Cancel As Integer)

End Sub

que je remplace par
Private Sub De13hà14h_Enter()
De13hà14h.Text=Modifiable17.Value
End Sub

Retour sur Formulaire1, je passe en mode formulaire, j'entre du texte dans Modifiable17 (ou bien je choisis dans la liste), je clique dans De13hà14h et le champ se remplit se la valeur de Modifiable17.

En fait l'erreur venait de Modifiable17.Text qu'il fallait changer en Modifiable17.Value
Bien que mes controles soient indépendants de ma base, il ne devrait pas y avoir de problème, enfin fait un test et on verra après.

J'espère que ça repond à ton problème.

Salut.
0
catoubon Messages postés 3 Statut Membre
 
BOnjour Amigo et chapeau. Cela répond à ce que j'aspirais obtenir. En effet, Il y a quelques jours, après clic sur lemois,l'année et le jour du calendrier, il me remplissais après clic sur le TextBox , laDate.
Puis Le TextBox De13hà14h, je le complétais manuellement en tapant le NomPrenomClient et tout s'enregistrais dans la tableDesRendez-Vous.
Maintenant c'est beaucoup mieux, puisqu'il copie automatiquement le NomPrenomClient choisi dans le ComboBox Modifiable17 dans le TextBox De13hà14h . Cependant, il subsiste un problème:
En effet si je consulte la TableDesRendez-Vous qui se compose des champs: référence, Date, De13hà14h, De14hà15h, De15à16h. Je constate que seule la Date est prise en compte. Le NomPrenomClient dans le TextBox De13hà14h correspondant à l'heure de rendez-vous n'est pas enregistré dans la table.
Puis-je de nouveau solliciter ta bienveillante attention sur ce nouveau problème?
Sincères salutations Amigo.
Claudine
0
amigo
 
Bonjour,

Bien que n'ayant pas une grande experience en acces, je crois me souvenir que le TextBox De13hà14h doit etre lié à la table qui contient le champ à completer.
Dans la fenetre de propriété de TextBox De13hà14h , onglet Données , Source Controle doit pointer sur le champ en question.

A+.
0
claudine
 
Bonjour Amigo
Si tu n'est pas un spécialiste de Access, je constate quand même que tes réponses sont toujours pertinentes.
En effet, j'ai indiqué dans la source contrôle du textBox 'De13hà14h' et tout fonctionne normalement . Mille fois merci.
Tout fonctionne normalement.... sauf que j'ai réalisé deux erreurs de manipulation:
1) Par mégarde, j'ai remplacer le rendez-vous De MrX De11hà12h par celui de MrY.
Si un NomPrenom existe déjà dans le TextBox, pourrais-tu me prévoir une ou plusieurs lignes de code qui permettent l'apparition d'un message du type: Désirez-vous remplacer le rendez-vous oui ou non.
2)J'ai ouvert mon formulaire'Fixer les Rendez-Vous, puis j'ai voulu compléter une autre heure de rendez-vous qui était vide'De15hà16h' et par mégarde au lieu de cliquer d'abord le NomPrenom dans le ComboBox, j'ai cliqué directement sur le TextBox, ce qui m'a valu l'affichage d'un message d'erreur d'exécution 14:Utilisation incorrecte de Null
Comment puis-je éviter ce message? ou plutôt comment le remplacer par un autre message du type: cliquez d'abord le NomPrenom dans le ComboBox.
Peux-tu m'aider à parfaire ce formulaire?
Sincères salutations et mes plus vifs remerciements pour le travail de Pro.
0
amigo
 
Bonjour,

Je m'attendais à ces questions parce que lors de mes tests j'ai eu les mêmes problèmes, mais n'étant pas sur...

Voilà qui devrait régler le problème

Private Sub De13hà14h_Enter()
Dim MrX As String, MrY As String
Dim Reponse As Integer
If Modifiable17.ListCount = 0 Or Modifiable17.ListIndex = -1 Then
   Modifiable17.SetFocus
   Exit Sub
End If
MrX = Modifiable17.Value
MrY = De13hà14h.Value
If MrX = MrY Then Exit Sub
If MrX <> "" Then
   Reponse = MsgBox("Désirez-vous remplacer le Rendez-vous " & MrX & _
                  Chr(10) & "par le Rendez-vous " & MrY, vbQuestion + _
                  vbYesNo, "Confirmation de Rendez-vous")
   If Reponse = vbNo Then
     De13hà14h.SetFocus
     Exit Sub
   End If
End If
De13hà14h.Value = Modifiable17.Value
Modifiable17.SetFocus
End Sub


Il faudra reproduire cette procédure pour toutes les plages horaires du carnet de rendez-vous, en substituant "De13hà14h" par "De14hà15h" ... et ainsi de suite.

J'ai aussi changé De13hà14h.Text par De13hà14h.Value, ça ne devrait pas porter à conséquences, sinon revenir à De13hà14h.Text

A plus tard, peut-être.
0
claudine
 
Bonjour Amigo
De mieux en mieux,tu anticipes mes problèmes qui sont maintenant tous résolus. Difficile de ne pas tomber d'admiration face à ce merveilleux travail. Mille et cent mille fois merci Amigo. Tu fais un merveilleux travail de pédagogie. Aussi, puis-je encore te demander une dernière chose afin que je puisse évoluer et me débrouiller face à ce dernier petit programme codé que tu m'as si gentiment élaboré:peut-tu le commenter afin que je puisse comprendre et éventuellement approfondir ce langage car j'avoue qu'à part la déclaration des variables MrX et MrY et réponse ,je n'y comprend pas grand chose; étant autodidacte, je ne puis me résoudre à copier sans comprendre et je veux évoluer dans la programmation. Que veut dire Chr(10)?
Mes plus sincères salutations
Claudine
0
amigo
 
Re,

Je vais essayer ligne par ligne, et le plus clairement possible.
Private Sub De13hà14h_Enter()
'Section declaration des variables utilisées dans la procédure
'Ici, on utilise 2 variables de type String (Texte) et une variable de type Integer (Entier)
Dim MrX As String, MrY As String
Dim Reponse As Integer

'Premier test
'SI Modifiable17 est vide OU SI Modifiable17 non initialisé (champ texte vide) ALORS
'    Mettre le focus (le curseur) sur Modifiable17
'    Quitter la procédure
'Fin Test
If Modifiable17.ListCount = 0 Or Modifiable17.ListIndex = -1 Then
   Modifiable17.SetFocus
   Exit Sub
End If

'Section Initialisation des variables MrX et MrY
MrX = Modifiable17.Value ' Valeur de Modifiable17
MrY = De13hà14h.Value ' Valeur du champ pointé par De13hà14h

'Second test
'Si MrX = MrY ALORS ne rien faire et quitter la procédure
'On pourrait rajouter comme ci dessus, mettre le focus sur Modifiable17
'afin de solliciter un choix different. Fais la modif stp.
If MrX = MrY Then
   Modifiable17.SetFocus
   Exit Sub
End If

'Troisième test
'Si MrX n'est pas vide (cad si le rendez-vous est déja pris par une autre personne)
'Poser la question pour confirmer le remplacement
'Ici on utilise la fonction MsgBox(Message, aspect, titre) qui retourne un entier -> Reponse
'Message contient le texte à afficher, chr(10) c'est le code pour dire nouvelle ligne
'le signe & sert à concatener les éléments de la chaine composée de parties fixes et de variables
'le signe _ sert à continuer l'instruction sur la ligne suivante
'si tu veux que le message tienne sur une ligne, enlève Chr(10) &
'enfin vbQuestion et vbYesNo sont des constantes VB pour afficher un point d'interrogation
'et deux boutons OUI et NON, il existe d'autres constantes possibles.
If MrX <> "" Then
   Reponse = MsgBox("Désirez-vous remplacer le Rendez-vous " & MrX & _
                  Chr(10) & "par le Rendez-vous " & MrY, vbQuestion + _
                  vbYesNo, "Confirmation de Rendez-vous")

'Si la reponse est NON, ne rien faire, mettre le focus sur Modifiable17 et quitter la procédure
   If Reponse = vbNo Then
     De13hà14h.SetFocus
     Exit Sub
   End If

End If
'Fin du troisième test

'Finalement, une fois passés tous les tests on fait la mise à jour
De13hà14h.Value = Modifiable17.Value
Modifiable17.SetFocus
End Sub


Voilà, s'il y a queque chose que tu ne comprends pas, n'hésites pas.

Salut.
0
claudine
 
Bonsoir Amigo,
Merci pour ce travail de détails du programme.
Je croyais que tout était résolu, mais il subsiste un petit problème:
Lorsque je fais défiler les différents enregistrements à une date donnée dans mon formulaire,certains TextBox(De Xh à Yh) sont vides de NomPrenom: ce qui veut dire que certains rendez-vous sont disponibles; Lorsque je je clic dans ma ComboBox sur un NomPrenom et qu'ensuite Je clic sur une TextBox vide, ce dernier m'envoie le message Erreur d'exécution 94 (Utilisation incorrecte de Null) Si je clic sur Débogage, je constate que la ligne de code suivant:
MrY = De_15h_à_16h.Value (se met en surbrillance jaune). Par contre s'il existe un NomPrenom, tout se déroule normalement avec demande si je veux remplacer ce dernier par celui proposé.
J'ose espérer ne plus vous importuner par la suite
Mille excuses si je n'ai pu voir ce problème plus tôt.
Sincères salutations et merci beaucoup
Claudine
0
amigo
 
Bonsoir,

J'avais dit plus haut que:
J'ai aussi changé De13hà14h.Text par De13hà14h.Value, ça ne devrait pas porter à conséquences, sinon revenir à De13hà14h.Text

En fait De13hà14h.Value n'est pas supporté, il faut bel et bien revenir à De13hà14h.Text, comme au début.

On tâtonne un peu, mais on avance. Ce qui m'induit en erreur c'est que Modifiable17.Value fonctionne mais si on écrit Modifiable17.Text ça n'est pas supporté. Il y a là une subtilité qui m'échappe. Enfin l'essentiel est qu'on parvienne à nos fins.

Inutile de t'excuser, c'est moi qui ne suis pas assez compétent en la matière. A la limite, c'est toi qui me rend service parce que ça m'oblige à réviser mes supports de stage.

Bon, on tente le coup et on verra. A plus tard.
0
amigo
 
Bonjour,

J'ai testé le code dans tous les sens, il y avait encore quelques erreurs.
De plus j'ai trouvé que l'évènement Click réagissait mieux que l'évènement Enter.
Il permet de laisser le curseur dans le champ De13hà14h en faisant défiler les enregistrements sans interruptions.
En même temps, on peut remplir manuellement le champ, ce qui n'était pas possible avant.
Voici la procédure corrigée. Il suffit de la dupliquer pour les autres plages horaires. Modifier les parties en gras.
Private Sub De13hà14h_Click()
Dim MrX As String, MrY As String
Dim Reponse As Integer
If Modifiable17.ListCount = 0 Or Modifiable17.ListIndex = -1 Then
'   Modifiable17.SetFocus
   Exit Sub
End If
MrX = Modifiable17.Value
MrY = De13hà14h.Text
If MrX = MrY Then
'     Modifiable17.SetFocus
     Exit Sub
End If
If MrY <> Empty Then
   Reponse = MsgBox("Désirez-vous remplacer le Rendez-vous " & MrY & _
                  Chr(10) & "par le Rendez-vous " & MrX, vbQuestion + _
                  vbYesNo, "Confirmation de Rendez-vous")
   If Reponse = vbNo Then
'     Modifiable17.SetFocus
     Exit Sub
   End If
End If
De13hà14h.Text = Modifiable17.Value
'Modifiable17.SetFocus
End Sub


Fonctionnement garanti. Salutaions.
0
claudine
 
Bonjour Amigo
Vous avez raison,J'ai testé en tout sens le logiciel, et tout fonctionne à merveille. Mes plus vifs remerciements pour cette aide précieuse.
Peut-tu m'expliquer cette ligne de code:
Si 'If MrX<>"" Then...signifie: Si MrX n'est pas vide donc rendez-vous est pris par une personne, Que signifiela nouvelle ligne:If MrY<> Empty...? Que fait le terme Empty?
D'avance ,je te remercie pour ta gentilesse , ton savoir et ton fair- play
Claudine
0
amigo
 
Bonjour Claudine,

Je suis content que ça te convienne. J'ai du monter une petite BDD avec une table Clients et une table Réservations pour simuler l'interaction des controles avec les tables. Sinon, impossible de vérifier la procédure.

Par If MrX<>"" je voulais dire Si MrX différent de vide. Le signe "" signifie chaine de caractère vide.
Mais ça ne marchait pas. Alors j'ai essayé If MrX<>Null et pas plus de résultat. Null est certainement réservé aux nombres.
En fin de compte j'ai tenté If MrX<>Empty (vide en anglais) et ouf! cette fois c'était bon.

Empty, Null, ... sont des fonctions booléennes de VB qui prennent la valeur VRAI ou FAUX suivant le test.
Dans notre cas, If MrX<>Empty est VRAI si MrX contient une valeur et FAUX dans le cas contraire, c'est ce qu'on voulait savoir.

Bonne journée.
0
claudine
 
Bonjour Amigo
Puis-je de nouveau solliciter ton aide?
Je croyais te laisser la paix un bon bout de temps, mais la nuit porte conseil pour améliorer le formulaire de rendez-vous et le rendre encore plus pratique. Souvent quand on prend un rendez-vous , le client demande la date du jour : ex mardi 10janvier.Comment pourrais-je afficher en permanence et automatiquement la date et éventuellement l'heuredu jour dans mon formulaire, afin de l'afficher en permanence dans un TextBox intitulè:Date du jour en dessous des textBox (De10hà11h) et autres; NB: laissez tomber l'heure si trop compliqué). Car au départ, lorsque j'ai inséré le calendrier.(MSCAL.Calendar.7), il me renseigné la date du jour en surbrillance mais plus maintenant car il me donne en surbrillance les dates des différents jours de rendez-vous.lorsque je fait défiler les différents enregistrements.
Autre Question: est-il possible d'imaginer imprimer la partie du formulaire qui comprend les TextBox: Date, De10hà11h avec les NomPrenom et les autres heures pour un jour déterminé ? donc sans le calendrier et la ComboBox. afin que le responsable dispose de sa feuille de rendez-vous.
Je suppose qu'il faut un Bouton imprimer.....
Private Sub Command_click() mais la suite exige tes compétences si tu le veux bien!
Sincères salutations
Claudine
0
claudine
 
reBonjour Amigo
Merci pour cette dernière explication qui est maintenant plus claire dans mon esprit.
Difficile pour moi de clôturer ces échanges, car il et rare de renconter sur un forum la personne idéale que vous êtes ( je parle en connaissance de cause vu, les échanges sur certains site où on n'hésite pas de vous insulter de con!
J'ose espérer vous retrouver si un jour survient un nouveau problème. Merci et mille fois merci pour ta coopération qui m'a permis de progresser. J'avoue que j'ai encore beaucoup à apprendre, mais vous m'avez encouragé à poursuivre.
Amigo, je te présente mes plus vifs remerciements.
Claudine
0
amigo
 
Bonjour Claudine,

Je n'ai pas bien saisi le le problème du MSCAL.Calendar.7 qui n'affiche plus la date du jour courant
Mais pour répondre à ta première question, il suffit d'insérer sur le formulaire une étiquette sur laquelle on écrira la date.
Par exemple si mon étiquette s'appelle étiquette21 ce code inscrira la date du jour des que le formulaire est activé.

Private Sub Form_Activate()
Étiquette21.Caption = "Aujourd'ui nous sommes le : " & Date
End Sub

Pour l'heure c'est plus compliqué car il faut la maintenir à jour continuellement. Je vais voir.

En ce qui concerne la deuxième question, Je crois me rappeler qu'il faut passer par la définition d'un état pour la mise en forme de l'impression. Il faut que je cherche un peu et je te ferais par de mes investigations.

A+.
0
amigo
 
Bonjour Claudine,

Comme promis, j'ai regardé comment tu pouvais régler ton problème d'impression de formulaire.

Mais d'abord pour l'histoire du calendrier, je crois que ça vient du fait que la source des données du calendrier est liée au contrôle date du formulaire.
Dans la fenêtre propriétés, Source contrôle, supprime le lien et tout rentrera dans l'ordre.
Et pour l'horloge, je n'ai pas trouvé de contrôle spécifique gratuit. Il doit y avoir des petits programmes qui affichent un horloge sur le bureau. Si j'en trouve, je te passerais les liens.

Pour l'impression, il faut passer par un état lié à une requête.
1) D'abord définir la requête, avec l'assistant ce n'est pas difficile. Choisir la table et les champs qui vont apparaitre sur ton état.
Dans la partie "Critères", renseigne le champ désiré par une valeur. Ici ce sera la date qui va servir de choix de sélection. Entrer une date valide, par exemple 25/03/2008.

2)Définir l'état, avec l'assistant également. Dans le menu déroulant table/requête choisir la requête définie précédemment.
Puis sélectionner les champs que va contenir l'état, normalement c'est les mêmes que ceux de la requête. C'est la partie la plus importante.
Ensuite l'assistant propose des regroupements(?), des mises en pages, là il faut faire des essais et voir.
En mode création on peut encore intervenir manuellement, insérer un logo, des étiquettes...
Tu peux faire autant d'états que tu veux, tu pourras toujours faire le tri après.

Quand se sera au point, j'aurais besoin que tu me postes la requête SQL qui a été générée. Dans la fenêtre requête, basculer en mode SQL.
Tu verra apparaitre quelques lignes de code SQL. Avec ce code je pourrais substituer le critère fixe (la date choisie) par une variable qui sera prélevée sur le formulaire.
En affectant cette requête à un bouton, on pourra alors générer l'état choisi avec la date choisie.

Maintenant, c'est à toi de jouer pour les 1) et 2). Si tu as une petite formation Acces tu t'en sortiras facilement.

J'attends de tes nouvelles. A bientôt.
0
claudine
 
Bonsoir Amigo,

Très facile en effet, surtout quand c'est très bien expliqué: c'est ainsi ma première requête + état.
Voici le code SQL:

SELECT [TableDesRendez-Vous].[Date], [TableDesRendez-Vous].[De 10h à 11h], [TableDesRendez-Vous].[De 11h à 12h], [TableDesRendez-Vous].[De 12h à 13h], [TableDesRendez-Vous].[De 13h à 14h], [TableDesRendez-Vous].[De 14h à 15h], [TableDesRendez-Vous].[De 15h à 16h], [TableDesRendez-Vous].[De 16h à 17h]
FROM [TableDesRendez-Vous]
WHERE ((([TableDesRendez-Vous].[Date])=#3/22/2008#));

J'ai pris la date de la 1ère journée des rendez-vous de la tableDesRendez-vous à savoir : le 22/03/2008.
Cette requête me permettra d'avoir exactement ce que je voulais lors de l'impression. Superbe travail Amigo

Quant à l'histoire du calendrier, si je supprime le lien au contrôle Date du formulaire, je ne peux plus remplir le TextBox Date en cliquant dessus après le choix d'une date dans le calendrier. Ou alors je suis obligé de taper manuellement la date. Donc je suis obligé de le laisser. D'autre part, l'étiquette 21 dans laquelle s'inscrit la date du jour dès que le formulaire est activé(avec les lignes de code que tu m'as écrites) a le même problème puisqu'elle indique la date du premier enregistrement soit le 22/03/2008. Je crois qu'il sera impossible d'indiquer la date du Jour et les dates des différents jours de rendez-vous sur le même formulaire à cause du calendrier. A moins que tu trouves une astuce!

Merci pour ce cours magistral qui me permettra maintenant d'avancer avec les requêtes et états.
C'est avec plaisir que j'attends la suite des évènements car entre-temps j'ai réussi l'impression mais du formulaire complet: cadre, calendrier, zone de liste modifable: pas mal mais loin de la solution présente.
Merci de tout coeur et bonne nuit
Claudine
0
amigo
 
Bonjour Claudine,

Je reviens pour t'aider à finalser ta BDD.

J'ai vu que la table [TableDesRendez-Vous] avait un champ nommé [Date].
Il faudra changer ce nom car Date est un mot réservé de VB. Dés qu'on fait usage de macros VB il y a confusion.
1) Avant de faire la modification, fais une sauvegarde de ta base. Il ne faut pas faire de tests sur l'original.
Ensuite seulement, ouvrir la table [TableDesRendez-Vous] en mode création et modifier le nom du champ Date en DateJour.

2) De meme pour le formulaire
Ouvrir le formulaire de saisie en mode création, Clic droit sur le champ Date, Propriétés
Nom > DateJour
Source Controle > DateJour.

3)Sachant que le calendrier te sert à remplir automatiquement le champ date, je te propose cette modification.
Clic droit sur le calendrier, Propriétés , Source Controle, Supprimer le lien avec la base.
On va faire en sorte que le calendrier affiche toujours la date du jour.
Lorsqu'on clic sur une date du calendrier et que le champ date est vide, ce champ prend la valeur de la date choisie.
Pour modifier une date existante, effacer dans le champ puis cliquer sur le calendrier.
Ensuite le calendrier revient automatiquement à la date du jour.

4)Insérer un contrôle Bouton sur le formulaire avec pour libellé Impression.
Mode de fonctionnement: Un clic sur le bouton va:
- modifier la requête en fonction du champ DateJour,
- ouvrir l'Etat avec le résultat de la requête,
- proposer son Impression.
Remarque: si on répond Non, il sera encore possible d'imprimer par la voie classique. La fermeture de l'Etat se fait manuellement.

Clic droit sur le Bouton , Créer code évènement > Générer Code.
Dans mon exemple le bouton s'appelle Commande16, ce sera certainement différent chez toi, il faudra adapter ou modifier le nom du bouton (Propriétés Nom).
Les textes en caractères gras sont à modifier en fonction des noms que tu as donné à la Requête (ici Requête1)
et à la définition d'Etat (ici Etat1).
Private Sub Commande16_Click() '<---- Nom du bouton
Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim reponse As Integer

Set dbs = CurrentDb
strSQL = "SELECT [TableDesRendez-Vous].[DateJour], [TableDesRendez-Vous].[De 10h à 11h]," _
             & " [TableDesRendez-Vous].[De 11h à 12h], [TableDesRendez-Vous].[De 12h à 13h]," _
             & " [TableDesRendez-Vous].[De 13h à 14h], [TableDesRendez-Vous].[De 14h à 15h]," _
             & " [TableDesRendez-Vous].[De 15h à 16h], [TableDesRendez-Vous].[De 16h à 17h]" & _
         " FROM [TableDesRendez-Vous]" & _
         " WHERE ((([TableDesRendez-Vous].[Date])=#" & DateJour.Value & "#));"

dbs.QueryDefs.Delete ("Requête1") '<---- Nom de la Requête
Set qdf = dbs.CreateQueryDef("Requête1", strSQL) '<---- Nom de la Requête
DoCmd.OpenReport "Etat1", acViewPreview '<---- Nom de l'Etat
reponse = MsgBox("Désirez-vous imprimer cette page", vbInformation + vbYesNo, "Impression Etat")
If reponse = vbYes Then
        DoCmd.OpenReport "Etat1", acNormal '<---- Nom de l'Etat
End If
End Sub


Pour le calendrier regarder s'il existe dans ton module une procédure Sub Form_Activate.
En haut de l'éditeur, Liste déroulante de gauche, Selectionner Form
Liste déroulante de droite sélectionner Activate
Si la procédure existe Remplacer par celle-ci.
Vérifier le Nom du calendrier, (ici calendar7) et adapter avec ton calendrier.

Private Sub Form_Activate()
   Calendar7.Value = Date
End Sub


Ajouter cette procedure qui met à jour le champ date
Private Sub Calendar7_Click()
   If IsNull(DateJour.Value) Then DateJour.Value = Calendar7.Value
   Calendar7.Value = Date
End Sub


Si toutes les modifications de nom de champ et de contrôles ont bien été faites ça devrait fonctionner.
Voilà, j'espère que ça répond à tes attentes. Si ça ne marche pas, fais moi signe.

A plus tard.
0
Claudine
 
Bonjour Amigo,
Après cette trève Pascale, te voilà déjà bien en programmation.
Merci pour cette recherche.
Pour l 'instant, je me suis contenté d'ajouter le bouton de commande(66) et de copier et coller tes lignes de code en laissant Date et non DateJour(je vais le tester plus tard) car je suis impatient de voir cette feuille d'impression.
Cependant, j'ai un petit problème car lorque je clic sur le bouton66 il m'affiche une erreur de compilation: type défini par l'utilisateur non définie et met en surbrillance bleu foncé(dbs As Database) Peut-tu me dépanner?
Que signifie cette variable dbs? et tant que j'y suis le signe "&"?
Quant au problème de la date, je l'avais résolu provisoirement à ma façon en créant unmini formulaire Date dans lequel j'y avais insérer ton étiquette et le code pour enfin créer une macro qui charge simultanément le formulaire des rendez-vous et la Date(du jour) .
J'attends ton aide et te présente mes salutations amicales.
Claudine
0
amigo
 
Bonjour,

Ce que tu me dis m'inquiète, Database est un objet prédéfini qui fait référence à une Base de Données Accès.
dbs est la variable qui contiendra le nom de la base de donnée.

Essayes une chose. Renommes la procédure Commande66_click() en Commande66_click_sav()

Copies la procédure suivante.

Private Sub Commande66_Click()
Dim dbs As Database
Set dbs = CurrentDb
MsgBox dbs.Name
End Sub

En appuyant sur le bouton tu devrais voir s'afficher le nom complet (y compris le chemin) de la base de donnée ouverte.
Je viens de faire le test sur une de mes bases sous Accès2000 et ça fonctionne.

A+.
0