[Access] affich planning ss forme de tableau

Bonsoir,

Je ne suis pas certain de poster dans la section adéquate...

J'aimerais afficher un planning de réservations sous forme de tableau affichant les périodes libres et occupées.

Je dispose d'une table fournissant les date et heure et liée évidemment aux différents "protagonistes".
Je peux évidemment vérifier si la période est libre avant de confirmer la réservation mais j'aimerais que l'utilisateur puisse avoir un aperçu des périodes disponibles.
Je sais que tous les agenda le permettent mais je souhaite rester ss access pour garder le lien avec les autres données.

Une solution tte faite cô un contrôle activeX existerait-elle?
Comment faire? je ne sais pas me servir des tableaux ss access...

Merci pour votre aide.

19 réponses

  • Votes
  • Date
  • Date décroissante
  1. re:

    si tu veux mon avis, une requête est mille fois mieux qu'une nouvelle table ssi les données sont déjà présentes dans la(les) table(s) existante(s).

    Quand au problème de donnée vide, je ne vois pas de problème puisque le formulaire affiche ce qui est paramètré dans les requêtes, ce sont les objets ( contenants de donnée ) qui sont sur le formulaire.

    L'encapsulation des données nous permets d'apercevoir une structure naturel qui oriente la méthodologie du travail, c'est de la grande théorie, mais très importante.

    En supposant que toutes l'information est déjà présente.

    Utilise un formulaire pour piloter la fabrication. Postulat : Un formulaire pointe toujours sur une requête SQL qui elle pointe sur une table ou une requête SQL.

    Si j'ai bien compris tu désire un évènement client pour visualiser "le calendrier des activités en cours", terrain libre ou pas.

    Délimite dans le formulaire un "calendrier", comme un tic-tac-toe mais en plus grand selon tes besoins, conserve un espace "bouton", un espace "libellé", etc...

    Ensuite, pour chaque case, établie une mini-requête. Étudie bien cette rêquête de façon à ne changer qu'une seule variable et parcourrir ainsi toutes les cases du "calendrier", pour commencer de simple text box agrandi fera l'affaire, si tu est à l'aise avec la manipulation d'un objet "grid" il y a pleins de références supplémentaires que tu peux charger.

    Ensuite sur un évènement bouton tu contruit une petite routine du style :

    Private Sub Liste_Catégorie_AfterUpdate() 
    
      Dim Chaine As String ' Variable de la chaine de caractères 
      Dim Critere As String ' Variable contenant la string "SQL" 
      Dim Indice As String ' Variable du critère de recherche 
      Dim Boucle As Long
    
      Indice = Forms![Formulaire Tableau].[MaListeDeroulante] 
      ' Création d'une chaine de caractères 
      Chaine = "Select * from [MaTable] where [MonChamp] = " 
      ' Création de la string "SQL" 
      Critere = Chaine & """" & Indice & """" 
    
      For Boucle = 1 to 16
    
        ' Appel fonction et changement de la requête 
        If (ChangeRequeteDef("RequeteSpecifique" & Boucle, Critere)) Then 
          ' Si réussite, ouvrir formulaire tableau 
          ' ici, je crois qu'un simple refresh du formulaire fera l'affaire,
          ' à  la fin du balayage de chaque requête si tu n'as pu l'adapter.
          ' Si Resultat <> Vide Alors
          '   CetteTextBox.Value = Enregistrementdelarequête.Champ
          ' Sinon
          '   CetteTextBox.Value = ""
          ' Fin Si 
        End If 
      Next Boucle
      Me.Refresh
    
    End Sub 
    'Pas tester !
    


    attention, je ne prétends pas que c'est la meilleur, c'est une suggestion !

    Lupin
    1. Bonjour,

      un formulaire type tableau constitué d'une requête modifiable par VBA est tout indiqué ! Voici une suggestion !

      Créer un formulaire à l'aide de l'assistant de type tableau qui pointe sur une requête global de la table. Paramètrer au besoin la requête pour obtenir le visuel des champs sur tous les enregistrements.

      Paramètrer celle-ci pour ne pointé que sur un critère de recherche qui formerait un groupe basé sur les priorités d'affichage. Une fois le résultat tableau souhaité, voici le code VBA pour modifier cette requête :

      Private Sub Liste_Catégorie_AfterUpdate()

      Dim Chaine As String ' Variable de la chaine de caractères
      Dim Critere As String ' Variable contenant la string "SQL"
      Dim Indice As String ' Variable du critère de recherche

      ' Affectation dans variable
      Indice = Forms![Formulaire Tableau].[MaListeDeroulante]
      ' Création d'une chaine de caractères
      Chaine = "Select * from [MaTable] where [MonChamp] = "
      ' Création de la string "SQL"
      Critere = Chaine & """" & Indice & """"

      ' Appel fonction et changement de la requête
      If (ChangeRequeteDef("RequeteSpecifique", Critere)) Then
      ' Si réussite, ouvrir formulaire tableau
      DoCmd.OpenForm "Formulaire_Tableau", acNormal, "", "[ChampsDeLaRequêteEnRecherche]", , acNormal
      End If

      End Sub

      ' Et la fonction

      Public Function ChangeRequeteDef( _
      ChaineRequete As String, ChaineSQL As String) As Boolean

      Dim Definition As QueryDef

      If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
      ChangeRequeteDef = False
      Else
      Set Definition = CurrentDb.QueryDefs(ChaineRequete)
      Definition.SQL = ChaineSQL
      Definition.Close
      RefreshDatabaseWindow
      ChangeRequeteDef = True
      End If

      End Function
      </code>

      cela te convient-il ?

      Lupin
      1. Salut Ego, salut Lupin.A

        Merci pour vos réponses,
        ....
        il manquais un mot
        1. Re:

          1. Créé une requéte type pour un état souhaité !
          2. Créé un premier modèle type d'un état souhaité !
          3. Créé les requêtes/tables de l'état en dynamique avec VBA

          C'est exactement comme l'exemple du début de ce fil, plutôt
          que de créer 300 requétes, une suffit puisqu'elle est modifié
          de façon dynamique :-) Avant de pouvoir la modifier j'ai du
          la créé en manuel une première fois.

          Présentement, dans ton exemple :

          ___________ Jour_1__________Jour_2_____________Jour_3
          Action_1___ Pierre___________ Pierre ___________________
          Action_2____Paul _____________________________________
          Action_3 ____________________ Paul______________ Paul___
          Action_4______________________________________ Jaque _

          je vois 3 objets :

          Jour(x)
          Action(y)
          Personne(z)

          structuré ainsi :

          Personne / Jour
          Personne / Action ( Personne / Évènement )

          Alors je procederais comme suit en créant
          un état avec genre plein de cellule.

          À partir d'un formulaire, créer une table et une
          requête dynamique pour produire l'état souhaité.

          Vois-tu un peu plus ou je veux en venir ?

          Lupin
          1. coment construire un emploi du temps pour ensignement moyen
        2. j'aimerai faire un planning de deroulement d'une preparation d'une reunion dans une feuille simple,
          mais le probleme je vois pas comment je peut le presenté
          est ce que quelqun poura m'aider
          merci d'avance
          1. Merci pour ta réponse.

            Mon problème est surtout que je ne vois pas comment construire le tableau et surtout comment lui faire afficher les lignes vides.

            J'ai une table qui liste les jours et heure de début de réservation ainsi que la durée mais aucune donnée ne pointe vers les périodes libres... En y réfléchissant, je pense que c'est là le problème...

            Je vais essayer en créant une nouvelle table pour commencer.
            1. Désolé de tarder à te répondre, j'ai été (je suis) débordé de boulot

              Je vois l'idée, reste à trouver le temps de la mettre en oeuvre...

              merci pour ton aide!
              1. Salut
                J'essaye de réaliser un planning, moi aussi mais je ne comprends pas très bien comment attribuer une mini-requête à un contrôle
                Faut dire que je voudrais construire les lignes de mon calendrier avec les données d'une table (les noms des personnes concernées) et en face, les informations qui leur correspondent pour chaque jour (une autre table liée)
                si access m'autorisait des sousformulaires en mode continue ce serait déjà fini... mais ce n'est pas le cas...
                merci de m'éclairer.
                1. Bonjour,

                  Procédons par étape !

                  1.) Créer une simple requête avec 1 critère

                  ex.:
                  Posons une simple table avec 3 champs.

                  Nom
                  Prénom
                  Téléphone

                  supposons que je crée une requête pour trouver le nom de "Lupin"

                  ça donnera quelque chose comme :

                  SELECT tab_Liste.*, tab_Liste.Nom
                  FROM tab_Liste
                  WHERE (((tab_Liste.Nom)="Lupin"));

                  donc, ici nous voulons pouvoir modifier la requête par l'évènement d'un contrôle, alors on place un contrôle sur un formulaire par exemple une liste déroulante qui pointera sur un autre requête.

                  cette liste déroulante doit avoir la liste de tous les noms de la table,
                  donc la source sera une requete du genre :

                  SELECT tab_Liste.Nom
                  FROM tab_Liste;

                  maintenant, sur l'évènement [ Après mise è jour ], tu lance le générateur de code :

                  Private Sub ListeDeNoms_AfterUpdate()
                  
                      Dim Chaine As String
                      Dim Critere As String
                      Dim varAcronyme As String
                          
                      If (Forms![frm_Liste].[ListeDeNoms] <> "") Then
                          
                          ' Ici, il faut reconstruire le requête avec la valeur
                          ' du contrôle
                          'SELECT tab_Liste.*, tab_Liste.Nom
                          'FROM tab_Liste
                          'WHERE (((tab_Liste.Nom)="Lupin"));
                          
                          varAcronyme = Forms![frm_Liste].[ListeDeNoms]
                          Chaine = "Select tab_Liste.*,tab_Liste.Nom from [tab_Liste] where (((tab_Liste.Nom)="
                          Critere = Chaine & """" & varAcronyme & """"
                      
                          ' Et ici on utilise une petite fonction pour modifier la requête
                          If (ChangeRequeteDef("req_Liste", Critere)) Then
                              DoCmd.OpenForm "frm_Liste", acNormal, "", "[ListeDeNoms]", , acNormal
                          End If
                      End If
                      
                  End Sub
                  


                  et voici la fonction qui modifie la requête :

                  Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
                      
                      Dim Definition As Variant
                      
                      If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
                          ChangeRequeteDef = False
                      Else
                          Set Definition = CurrentDb.QueryDefs(ChaineRequete)
                          Definition.SQL = ChaineSQL
                          Definition.Close
                          RefreshDatabaseWindow
                          ChangeRequeteDef = True
                      End If
                      
                  End Function
                  


                  bon, je sais que ça ne semble pas évident mais ça fonctionne très bien.

                  @+
                  Lupin
                  1. HELP

                    j'ai besoin d' aide pour crée un emplois du temps pour mes agents ou il y aurait une recap des taches et le temps de la tache le jour et une fiche induviduel qui soit relié a cette a cette recap comment faire merciiii beaucoup
                    1. Salut

                      je cherche une solution pour afficher mes données sous forme de planning.
                      comme un diagramme de Gantt.
                      sous access bien sur.

                      existe-il un Activix pour cela?
                      peut on le télécharger?

                      Merci pour le coup de pousse

                      j'ai bien sur tester les requette croisée dinamique. mais dans un état c'est plus du tout dinamique...

                      Mitch
                      1. Salut,

                        je ne puis que vous apporter une solution VBA sous access, lorsque j'ai entamé
                        ce dernier j'ai sauté directement des "macros access" au "macros vba".
                        J'ai apprit avec le bouquin :
                        Beginning Access 97 VBA Programming ( Robert Smith and David Sussman )

                        Pour créer votre état vous devez avoir la structure :
                        TABLE(S) <- Requête(s) <- Formulaire(s) <- État(s)

                        Je ne connais pas Gantt, plus de détails serait souhaité !

                        Avez-vous 1,2, ... ou plus de table(s) ?
                        Avez-vous 1,2, ... ou plus de requête(s) ?
                        Avez-vous 1,2 , ... ou plus de formulaire(s) ?
                        Avez-vous 1,2, ... ou plus de lien(s) ?

                        Un activeX ? Tout se fait sous VBA !

                        Lupin
                        1. salut
                          j avais dans le temps composé un tableau avec une gestion de rdv, etiquettes etc..
                          j ai resolu le pb des jours (ce que tu cherches) encréant 1 sub contenant une fonction backcolor rouge ou vert.
                          ce sub etait avait comme critère une variable.
                          chaque case du planning avait sa variable distincte pour selectionner au jour par jour et en modifier la couleur
                          puis une raz (tout én vert) par un do while
                          par contre, si tu veux ajouter 1 nom dans tes cases, il te faut passer par une requete ajout qui acceptes tres bien les variables.
                          bonne suite
                          1. Salut Ego, salut Lupin.A

                            pour vos réponse,
                            Je peu me débrouillée pour avoir toute les données sur une seule table. (ça j'en fait mon affaire.)

                            pour la suit il me faut imprimer le tableau suivant :

                            sur la colonne de gauche : des taches à réaliser.
                            sur le première ligne : des dates.
                            à l’intersection des lignes et des colonnes : des noms de une ou plusieurs personnes.

                            il faut bien sur que le nombre de ligne soit variable.
                            et que le nombre de date soit variable (aussi).

                            ce qu'il faut c'est pouvoir le sortir sur un état.

                            PS :
                            une date : une ou plusieurs actions
                            une action : une ou plusieurs personnes

                            et bien sur une personne sur plusieurs date et sur plusieurs action

                            PS le bonjour aux Briguades du T.
                            1. Bonjour,

                              Alors voici comment je procéderais, notez qu'il y en a d'autres !
                              Je recommande de travailler avec des mots sans accens !
                              Les informations en main :

                              Creation d'un agenda

                              Donc des evenements ayants des proprietes

                              Evenement / Heure debut
                              Evenement / Heure fin
                              Evenement / Date
                              Evenement / Lieu
                              Evenement / Contacts

                              Creation d'une table

                              TabEvenements

                              Creation d'une requete globale,
                              d'une retuete annuel, d'une requete mensuel,
                              d'une requete hebdomadaire, d'une requete quotidienne,
                              d'une requete pour une heure et une pour 1 evenements

                              RqsGlobale
                              RqsAnnuel
                              RqsMensuel
                              RqsHebdo
                              RqsJour
                              RqsHeure
                              RqsEvenement

                              Creation d'un formulaire qui servira de previsualisation
                              a l'etet et la modofication des parametres de tri.

                              Creation des etats souhaites

                              EtsAnnuel
                              EtsMensuel
                              EtsHebdo
                              EtsJour
                              EtsHeure
                              EtsEvenement

                              Si cette structure est appliqué, ensuite il ne s'agit
                              que d'attacher les objets ensembles pour modifier
                              les requêtes de base créé au départ.

                              Sur le formulaire, on insere quelques contrôles
                              pour effectuer la sélection, exemple un controle
                              qui selectionne la requete et un controle qui
                              selectionne le groupe d'evenement(s).

                              Est-ce assez clair ?

                              Lupin
                              1. re:

                                ah oui, au cas ou !

                                Le formulaire pointe sur la requete globale
                                qui pointe sur la table, souviens toi de la
                                structure.

                                TAB-REQ-FOR-ETA

                                lUPIN
                                1. Merci lupin,

                                  j'ai créé la table agenda et la table TabEvenements et un table personne

                                  et il est facile de crée un requête pour afficher un état du style :

                                  Jour_1
                                  Action_1 Pierre
                                  Action_2 Paul

                                  Jour_2
                                  Action_1 Pierre
                                  Action_3 Paul

                                  Jour_3
                                  Action_3 Paul
                                  Action_4 Jaque

                                  mais c'est pas très convivial.

                                  Le Défit

                                  c'est d'afficher:
                                  *************************************
                                  * Jour_1 Jour_2 Jour_3 *
                                  * Action_1 Pierre Pierre *
                                  * Action_2 Paul *
                                  * Action_3 Paul Paul *
                                  * Action_4 Jaque *
                                  ************************************

                                  et il faut que le nombre d'action et de jour soit variable
                                  il faut pouvoir imprimer l'état sans avoir à le retoucher (modifier)

                                  la subtilité du problème n'est pas dans la récupération des données, mais dans dans la mise en forme et le dynamisme de l'affichage.....
                                  1. Pour la mise en page, c'est plustôt ça:

                                    ___________ Jour_1__________Jour_2_____________Jour_3
                                    Action_1___ Pierre___________ Pierre ___________________
                                    Action_2____Paul _____________________________________
                                    Action_3 ____________________ Paul______________ Paul___
                                    Action_4______________________________________ Jaque _