IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Afficher un calendrier de saisie sous une zone de texte [Sources]


Sujet :

Contribuez

  1. #1
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 6
    Points
    6
    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

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 6
    Points : 6
    Points
    6
    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) ?

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    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.


  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci bcp,
    C juste ce que je voulais faire dans mon projet, merci encore une Fois.


  6. #6
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    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

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    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/

  8. #8
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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 !

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    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...

  10. #10
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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?

  11. #11
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    Quelle horreur !!!!

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

    Qu'en pense tu?

  12. #12
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.NomDuControlSousFormulaire.Form.NomDuContrôle

  13. #13
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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 !!


    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!!!

  14. #14
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    alors je viens de tester et ça marche dans un sous-formulaire (avec le code dans le sous-formulaire)

  15. #15
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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 !

  16. #16
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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 ?

  17. #17
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    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)

  18. #18
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    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

  19. #19
    Membre régulier Avatar de e040098k
    Inscrit en
    Avril 2007
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 197
    Points : 94
    Points
    94
    Par défaut
    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+

  20. #20
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/07/2008, 21h38
  2. Interdire la saisie dans une zone de texte
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/04/2008, 12h53
  3. [Formulaire]Contrôle de saisie dans une zone de texte
    Par ludovicparis dans le forum IHM
    Réponses: 7
    Dernier message: 29/03/2007, 13h39
  4. Afficher contenu d'un fichier dans une zone de texte
    Par Dimitri_87 dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 23/09/2006, 14h09
  5. obliger la saisie dans une zone de texte
    Par mat75019 dans le forum Access
    Réponses: 5
    Dernier message: 02/05/2006, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo