Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2006, 17h35   #1
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Par défaut Affichez un calendrier de saisie sous une zone de texte

Voilà ce que ça donne en image :


Le calendrier s'affiche juste en dessous du contrôle :
Programmé sur Access 97 (et Windows 2000), ça fonctionne dans toutes les sections de formulaire (même en mode continu).

Le calendrier est en fait une InputBox modifiée, donc :
- il faut cliquer sur OK ou Annuler pour fermer la fenêtre (fenêtre dialogue)
- la fonction renvoi un texte (string)

Evolution de la v0.2 : le double-click sur un jour du calendrier suffit à valider une date.
Correction de la v0.3 : positionnement du calendrier était incorrect si sous-formulaire dans un onglet

Ajout de philben pour jours fériés : suivre ce lien

Téléchargez le code et copiez le dans un module :
ftp://ftp-developpez.com/arkham46/fi.../MCalendar.zip
Mirroir HTTP

La fonction à utiliser est DisplayCalendar avec pour paramètres :
- pCtrl : un contrôle servant à positionner le calendrier
- pText : un texte à afficher sous le calendrier
- pDefault : la date par défaut sur laquelle s'ouvre le calendrier
- pCalendarFontName : la police de caractère du calendrier (Arial, Comic sans MS , ...)
- pCalendarFontSize : la taille des caractères du calendrier
- pDisplayWeeks : mettre ce booléen à Vrai (True) pour afficher les numéros de semaine
- pTextForeColor : Couleur du texte sous le calendrier
- pTextBackColor : Couleur du fond du texte sous le calendrier
- pTextFontName : police de caractère du texte sous le calendrier
- pTextFontSize : taille des caractères du texte sous le calendrier
- pBoldDays : tableau de jours à mettre en gras : soit une date, soit la position du jour dans la semaine
--> Array(6,7) pour mettre en gras les samedi et dimanche
--> Array(6,7,#08/15/2007#) pour mettre en gras les WE et le 15 août
- pAbove : Mettre à Vrai pour afficher le calendrier au-dessus du contrôle

Exemple d'utilisation :
- Un contrôle texte TxtDetail dans le quel on veut saisir une date
- Un bouton CmbDetail qui ouvre le calendrier
(Le bouton doit être dans la même section que la zone de texte pour que le positionnement soit correct)
Code :
1
2
3
4
5
6
7
8
Private Sub CmbDetail_Click()
    Dim lDate As String
    lDate = DisplayCalendar(Me.TxtDetail, "Choisir une date" & vbCrLf & "Test 2ème ligne", _
                                     IIf(IsDate(Me.TxtDetail), Me.TxtDetail, Now), _
                                     "Comic sans MS", 8, True, vbBlack, _
                                     vbYellow, "arial", 10)
    If Not lDate = "" Then Me.TxtDetail.Value = lDate
End Sub
Une petite base d'exemple :
ftp://ftp-developpez.com/arkham46/fi...stCalendar.zip
Mirroir HTTP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/11/2006, 18h33   #2
Invité de passage
 
Inscription : novembre 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 6
Points : 3
Points : 3
Par défaut Petite précision

Encore bravo pour ce calendrier très réussi, c'est exactement ce dont j'avais besoin !

une petite info pour les newbies comme moi :
- prendre le code source donné en PJ et le mettre en tant que module (le nommer MCalendar) dans le code du fichier access.

- Ensuite insérer dans le code du formulaire, les lignes pour la commande mbDetail_Click()

Après c'est impécable

Encore Merci
C0sC0us est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 18h50   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 6
Points : 3
Points : 3
Par défaut en fait ...

En fait à l'utilisation un problème est là

Quelque soit la date choisie, la valeur de TxtDetail devient la date actuelle.
Avec le programme fourni en annexe, même problème.
Si un date a déja été rentrée dans TxtDetail, la selection d'une date dans le calendrier ne la modifie pas.

Est-ce parce que je suis sous Access 2003 (Win XP) ?
C0sC0us est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2006, 21h43   #4
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Bjr,

Citation:
Envoyé par C0sC0us
En fait à l'utilisation un problème est là

Quelque soit la date choisie, la valeur de TxtDetail devient la date actuelle.
Avec le programme fourni en annexe, même problème.
Si un date a déja été rentrée dans TxtDetail, la selection d'une date dans le calendrier ne la modifie pas.

Est-ce parce que je suis sous Access 2003 (Win XP) ?
Effectivement, je ne sais pas si c'est Access ou Windows, mais la boîte de dialogue diffère légérement en fonction des versions.

J'ai fais une modif pour que ça marche sur Access 2003/XP.

Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 09h11   #5
Invité de passage
 
Inscription : mars 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 9
Points : 1
Points : 1
Merci bcp,
C juste ce que je voulais faire dans mon projet, merci encore une Fois.

girlworld86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 23h17   #6
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Par défaut Appel du calendrier sur double clic dans le controle

Bonjour,

Super le calendrier !

Seulement je l'appel sur un double click, et le souci c'est que l'input box apparait en haut à gauche de l'écran!

Y à t'il un moyen pour controler sa position ?

Merci
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 08h31   #7
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Bjr,

Le positionnement se fait par rapport au contrôle passé dans le paramètre pCtrl.
Il faut qu'un contrôle de la même section ait le focus au moment de l'appel de la fonction pour que le positionnement soit correct.

Sinon pour une boîte de dialogue indépendante :
http://arkham46.developpez.com/artic...utboxplus/doc/
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h18   #8
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Le problème c'est que la valeur prise par le contrôle pCtrl est le contenu de ma textbox et pas son nom !!!

Ensuite j'ai testé en forcant le positionnement avec ta méthode :
Ca ne fonctionne pas !
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h51   #9
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Citation:
Envoyé par e040098k
Le problème c'est que la valeur prise par le contrôle pCtrl est le contenu de ma textbox et pas son nom !!!
Pas compris...
pCtrl est de type Access.Control, donc tu passes le contrôle complet en paramètre (Me.MonContrôle).
Ensuite le code se charge de trouver la position du contrôle à l'écran pour positionner le calendrier en dessous (pour peu que la section ait le focus, ce qui devrait être le cas si tu double-cliques sur la zone de texte)

Citation:
Envoyé par e040098k
Ensuite j'ai testé en forcant le positionnement avec ta méthode :

Ca ne fonctionne pas !
Pour le module ModInputBoxPlus, la boîte de dialogue se centre par défaut.
Pour la positionner, il faut utiliser les paramètres XPos et YPos comme pour une InputBox classique, mais le repositionnement n'est pas très facile...
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 14h30   #10
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Je pense savoir d'où vient le problème, car j'ai fait un essai avec un formulaire normal et sa fonctionne chez moi donc... !

Le souci c'est que mon contrôle se trouve sous un sous formulaire (Formulaire unique)

Quand pense tu?
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 14h31   #11
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Quelle horreur !!!!

Citation:
Quand pense tu?
Désolé je suis obligé de me corriger là!!

Qu'en pense tu?
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 15h08   #12
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Citation:
Envoyé par e040098k
Quelle horreur !!!!

Désolé je suis obligé de me corriger là!!

Qu'en pense tu?
Y a pas un "s" à pense à la deuxième personne du singulier ??

Sinon j'en pense que je ne me rappelle pas avoir testé avec un sous-formulaire.
Mais au vu du code ça devrait être bon, sans garanti. (il faudra que je teste dès que je peux).

Comment est écrit le paramètre pCtrl dans ton appel de fonction?
Code :
Me.NomDuControlSousFormulaire.Form.NomDuContrôle
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 15h31   #13
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Il est écrit comme ca :

Me.TxtDetail


Mais de toute façon quelque soit la manière dont je l'écrive, lorsque j'éxecute la procédure en pas à pas, cCtrl prend la valeur du contenu !!


Citation:
Y a pas un "s" à pense à la deuxième personne du singulier ??
Je cours m'acheter un bescherelle, et je me remet a la programation après!!!
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 22h35   #14
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
alors je viens de tester et ça marche dans un sous-formulaire (avec le code dans le sous-formulaire)
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 09h10   #15
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Je viens de le tester dans un autre sous formulaire, et ca fonctionne à merveille !

Reste à trouver pourquoi ce n'est pas le cas dans le premier ! Ils ont pourtant les mêmes propriétés !
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 16h32   #16
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Désolé d'y revenir, mais je pose une hypothèse car je n'ai pas trouver la solution pour le positionnement dans mon premier formulaire !

Mes contrôles date se trouve sur un contrôle onglet !

Est-ce que cela peut avoir une incidence ?
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 22h04   #17
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Citation:
Envoyé par e040098k
Désolé d'y revenir, mais je pose une hypothèse car je n'ai pas trouver la solution pour le positionnement dans mon premier formulaire !

Mes contrôles date se trouve sur un contrôle onglet !

Est-ce que cela peut avoir une incidence ?
Bien vu!

J'ai corrigé le module et la base de tests en ajoutant la correction pour les onglets.
(à télécharger sur les liens au début du message)
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 14h31   #18
Invité de passage
 
Inscription : mai 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 9
Points : 1
Points : 1
bonjour je souhaite intégrer un calendrier dans mon formulaire avec un petit bouton a coté qui ferait apparaitre mon formulaire...
en principe pas trop compliqué mais moi j'y arrive pas et j'avoue que je ne comprends pas tout ce qu'il y a d'écrit au dessus...(désolé je suis débutante

pourriez vous me donner un petit coup de main svp

je travail avec access 2000

merci
bzhmorgane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 16h08   #19
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Bonjour,

Il ne faut t'occuper que du premier post d'Arkham !
Suit bien les instructions qui y sont données et explique plus précisemnent sur quoi tu bloque !

A+
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2007, 07h12   #20
Membre du Club
 
Avatar de 973thom
 
Inscription : juin 2004
Messages : 132
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juin 2004
Messages : 132
Points : 45
Points : 45
Envoyer un message via MSN à 973thom
Par défaut Merci !

Bonjour,

Juste pour remercier 10 000 fois Arkham46 !!!

C'est vraiment super de donner tout cela sur le site !

Ce matin il m'aura fallut seulement 15 min pour mettre en place mon calendrier en sachant que 10 minutes auront été consacrées à la recherche d'une solution sur le WEB !

Merci encore et bonne continuation...
__________________
Pourquoi partir si l'on a envie de rester encore un peu et pourquoi rester quand le besoin se fait de changer de quartier ? Bernard MOITESSIER
973thom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h18.


 
 
 
 
Partenaires

Hébergement Web