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

VBA Access Discussion :

Ouverture formulaire multi champs avec liste modifiable


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut Ouverture formulaire multi champs avec liste modifiable
    Qui pourrait m'aider sur le problème suivant :
    Dans une base données , à partir d'une requête, j'ai construit 1 formulaire qui me permet d'afficher notamment les jours d'entraînement (Par exemple Lundi , lundi matin , mardi , mardi matin etc.., ) d'une association sportive.Ce form contient ainsi plusieurs champs pour définir les jours d'entraînement.
    Avec une liste modifiable établie sur base d'une Table comportant tous les jours possibles, lorsque je veux sélectionner 1 jour de la semaine , pas de problème , je déroule, je sélectionne et j'ouvre avec un bouton de commande mon Form pour le jour d'entraînement choisi.
    Maintenant si je veux sélectionner un jour différent du premier dans la liste modifiable, je ne vois pas comment je peux modifier le code VBA pour ouvrir avec le bouton de commande mon Form puisque ce Form contient un champ pour chaque jour d'entraînement. Il me faudrait créer autant de bouton de commande qu'il y a de jours. Ce n'est pas concevable.
    J'ai pensé à utiliser l'opérateur OR mais ça ne marche pas
    Quelqu'un a-t-il une idée sur cette programmation.Merci

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Commande.._Click()
    On Error GoTo Err_Commande.._Click
        Dim stDocName As String
        Dim stLinkCriteria As String
        stDocName = "Form ..."
        stLinkCriteria = "[Jour 1]=" & "'" & Me![Modifiable..] & "'" 
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
     
    Exit_Commande.._Click:
        Exit Sub
     
    Err_Commande.._Click:
     
        Resume Exit_Commande.._Click
     End Sub

  2. #2
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut
    Bonsoir,
    Je ne vois aucune piste. J'aimerais trouver une solution à ce problème qui peut se résumer comme suite:
    Je désire "simplement" synchroniser un champ d'un formulaire avec un champ d'une liste modifiable mais ouvrir le formulaire toujours avec le même bouton de commande. Faut-il faire appel au choix multi-critères?
    Merci pour vos conseils.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Je ne suis pas certain d'avoir compris ton problème, en fait tu veux ouvrir un formulaire dans lequel tu entres des informations (cours disponibles ?) au sujet d'une demi-journée à partir d'un autre formulaire dans lequel tu as une liste des jours "disponibles" ?

    Pour récupérer la valeur de la liste déroulante, tu peux utiliser le "Me.nomdetaliste.Value". Depuis un autre formulaire, "Forms!Nomdetonpremierformulaire!nomdetaliste.Value"

    Tu as utilisé les relations entre tables ? C'est utile pour charger les informations liées à un jour (demi-journée, autre) dont tu as récupéré la valeur.

  4. #4
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut
    Avant tout merci pour ta réponse. Le code que tu as complété, celui-là , je le possédais déjà mais en fait pas très utile et c'est pour cela que j'ai posté. Comme je le précise dans le dernier poste ,je voudrais ouvrir mon formulaire en question à partir de la liste modifiable. Pour un champ ici "Jour 1" , cela fonctionne parfaitement avec le code que tu as eu la gentillesse de compléter, mais si je sélectionne un autre champ ( dans cette même liste) , "Jour 3" par ex. pas possible alors d'ouvrir mon formulaire pour la simple raison que le code n'est valable que pour le seul champ ici "Jour 1 ". Et j'avais ainsi pensé à l'opérateur OR mais cela ne marche pas.
    J'avais pensé à ceci donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Commande.._Click()
    On Error GoTo Err_Commande.._Click
        Dim stDocName As String
        Dim stLinkCriteria As String
        stDocName = "Form ..."
        stLinkCriteria = "[Jour 1]=" & "'" & Me![Modifiable..] & "'" Or "[Jour 3]=" & "'" & Me![Modifiable..] & "'" OR ...
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
     
    Exit_Commande.._Click:
        Exit Sub
     
    Err_Commande.._Click:
        
        Resume Exit_Commande.._Click
     End Sub
    Je n'ai pas de message d'erreur mais mon formulaire ne s'ouvre pas.
    Et c'est bien là mon problème à résoudre : faire une sélection sur l'un ou l'autre jour de la liste modifiable et en ouvrant tjs avec le même "bouton click" le même formulaire mais avec la sélection effectuée , Jour 1 ou Jour 3 ou bien encore Jour 7. Ceux-ci étant chaque fois un champs différent pour les jours d'entraînement et pour une activité bien définie.
    Merci Merci

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Tu peux créer dans ton formulaire un groupe d'option que tu nommes NumeroJour qui aura les valeurs

    Jour 1 = 1
    Jour 2 = 2
    Jour 3 = 3
    ...
    Ainsi quand tu choisi une valeur dans ta liste modifiable ton code sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stLinkCriteria = "Jour " & me.numeroJour & " ='" & Me.ListeModifiable
    Amicalement

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    J'ai toujours du mal à saisir où tu en es dans ta réflexion... Tu peux essayer de détailler précisément les actions d'un utilisateur ? Genre : cliquer sur la liste modifiable, chosiir une valeur, cliquer sur le bouton d'ouverture de formulaire, etc...

    A quoi correspond le [modifiable] ? Le Jour1 est toujours le Jour1, c'est le premier jour que l'utilisateur veut afficher ?
    J'avais eu pas mal de problèmes d'ouverture de formulaire, que j'avais fini par contourner en préparant des formulaires "vierges" se remplissant sur l'évènement load selon des données d'autres formulaires, plutôt que de les ouvrir directement filtrés, tu peux peut-être essayer comme ça ?

  7. #7
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut
    Merci pour ta réponse wulfram mais je pense que je ne me suis pas bien fait comprendre,ça arrive.Pour la solution proposée par DMboup, pas possible de régler mon problème puisque le groupe d'options ne comporte qu'un seul champ nommé ici "NuméroJour". Or moi je dispose de 7 champs qui reprennent les 7 jours ouvrables, puisque chaque activité comporte plusieurs jours d'entraînement sur la semaine. Ex;
    Colonne Activité Colonne Jour1 Colonne Jour 2 etc..
    Tir à l'arc Lundi Mardi etc..
    Tir pistolet Mardi Mercredi
    Et c'est pour cela qu'avec ma liste modifiable comportant les 7 jours de la semaine, il m'est impossible de synchroniser Jour1 (Lundi) ou Jour2 (Mardi) ou Jour2 (mercredi) de mon formulaire activités et l'ouvrir sur la sélection . Je ne peux que sélectionner qu'un seul champ : soit Jour 1, soit jour 2. Avec ma liste modifiable, je ne sais pas faire la synchro sur plusieurs champs .Donc impossible de sélectionner plusieurs champs mais un seul.
    Encore merci d'être de votre attention.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Avant d'aller plus loin, est-ce que tu peux nous détailler tes différentes tables et les relations entre elles ?

    Tu cherches à modifier les activités disponibles pour un jour donné, ou les jours disponibles pour une activité donnée ? Dans le premier cas, l'utilisateur choisi un jour, et les activité s'affichent, dans l'autre cas l'utilisateur choisi une activité et les jours s'affichent.
    Ou tout à fait autre chose ?

  9. #9
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut
    Bonsoir wulfram,

    Je cherche non pas à modifier mais à afficher les activités pour un jour donné.
    Alors j'ai 1 table activités sur laquelle est basé le formulaire activités, 1 table jours de la semaine( pour les jours d'activités) .Ainsi, avec ma liste modifiable(basée sur table jours de la semaine) , je sélectionne le jour et j'ouvre mon formulaire pour toutes les activités possibles pour ce jour.A mon avis pas besoin d'avoir une relation entre les tables activités et jours semaine.C tout simple mais quand même pas moyen de sélectionner plusieurs jours simultanément: voilà mon problème.Si je veux afficher les activités pour jour1 ou jour2 , je dois utiliser 2 boutons de cde pour ouvrir mon formulaire activités.Donc pour afficher les activités de plusieurs jours , je dois prévoir plusieurs boutons , pas pratique du tout .Y a t-il une solution pour une sélection multi champs.

    Merci pour ta patience

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Je verrai plus ça avec trois tables :
    une table activité avec un champ unique, une table jour avec un champ unique, et une table "liaison" entre les deux, dans laquelle tu as un champ activité et un champ jour.
    La première table pour une liste des activité, la deuxième pour la liste des jours (même si on peut tirer ces deux informations de la troisième) Les enregistrements de la troisième table ressembleraient à ça :

    Activité - jour
    Activité1 - jour1
    Activité1 - jour3
    Activité1 - jour4
    Activité2 - jour2
    Activité2 - jour3
    Activité3 - jour1
    Activité3 - jour4
    etc

    Ensuite, plutôt que d'effectuer le choix des jours à afficher par une liste, un ensemble de checkbox serait sans doute plus adapté : je doute que les jours ne changent, alors que les activité oui.
    Si tu as une case à cocher "jour1", "jour2", etc, tu peux faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim SQL as string
    SQL = "SELECT table_liason.activité FROM table_liaison WHERE table_liason.jour = "n importe quoi juste pour passer le WHERE et ne pas se compliquer la vie" "
    If Me.case_à_cocher_du_jour1 = true then
    SQL = SQL & "OR table_liaison.jour = jour1 "
    end if
    If Me.case_à_cocher_du_jour2 = true then
    ...
    Tu n'utilises ensuite qu'un seul bouton, qui vérifie l'ensemble des cases à chaque fois.
    Dans l'idée, ça devrait t'aider, en tout cas j'espère...

    Bien à toi,

Discussions similaires

  1. formulaire avec liste modifiable
    Par Paulo0o dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 22/08/2010, 14h22
  2. affichage d'un champ avec liste de choix dans un état
    Par DonQuiShoote dans le forum IHM
    Réponses: 16
    Dernier message: 20/05/2007, 23h39
  3. Réponses: 7
    Dernier message: 31/08/2006, 14h11
  4. formulaire une zone de liste modifiable
    Par adil_math2006 dans le forum Access
    Réponses: 9
    Dernier message: 29/05/2006, 13h12
  5. Formulaire avec liste modifiable
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 14/03/2006, 08h06

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