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

IHM Discussion :

Pouvoir deplacer les controls en mode formulaire [AC-2002]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut Pouvoir deplacer les controls en mode formulaire
    Bonsoir à tous,

    Peut on déplacer des contrôles en mode formulaire?

    1-Je souhaite pouvoir dessiner pour reproduire la dispositions ou le plan des tables (des vraies) comme dans une salle des fêtes, sur mon formulaire[Disposition des tables par Invités], et avoir la possibilité de déplacer les contrôles si l'on veut changer la disposition.
    2- en cliquant sur le contrôle ou dessin table, faire afficher le contenu (Invités) de cette table.
    Ci-joint la capture de mon exemple.
    Merci par avance
    itzik92
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Bonjour,

    En VBA la position d'un controle est modifiable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mocontrole.left=1.5
    moncontrole.top=5
    On peut donc imaginer qu'en cliquant sur le controle ça ouvre une fenêtre avec la position et les invités de la table et que tout ça soit modifiable

    Par contre ce sont des infos en mm sur l'écran... Pour améliorer l'ergonomie il faudrait "tramer" la salle comme un plan ABC... / 123... et l'utilisateur dirait que sa table est en B4 pour définir sa position, à convertir par code en mm

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut rectification -
    bonsoir,
    je n'ai plus 2002, donc je ne peux pas vérifier et je ne sais plus si le mode page existe, s'il existe tu peux déplacer tes contrôles manuellement en mode page en conservant les infos équivalente au mode formulaire.(c'est faisable en 2007)

    avec mes excuses , après contrôle le mode page est une nouveauté de 2007, navré.

  4. #4
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir à tous,

    Merci pour vos réponses LE VIEUX et NICO 84,

    Je vais essayer cette option, plan ABC / 123

    Amicalement
    itzik92

  5. #5
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,

    l'idéal serait, qu'en maintenant le contrôle avec la souris, l'on puisse le déplacer rapidement la ou on veut et en cliquant dessus on ouvre un formulaire pour voir le contenu de la table invités.
    Avez-vous une idée (ou plusieurs) ?

    merci
    itzik92

  6. #6
    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 526
    Points
    14 526
    Par défaut
    bjr

    Pour faire ce genre d'appli, les modules de classe sont très utiles, voir indispensables.

    Un exemple :
    ftp://ftp-developpez.com/arkham46/fi.../plantable.zip (miroir http)

    Chaque invité est un objet de type clInvite.
    Chaque bouton ou rectangle est également un objet, de type clObject.
    Tous ces objets sont stockés dans des collections.
    On peut ainsi facilement changer leur propriétés puis sauvegarder dans les tables à la demande.
    Il est possible de déplacer un bouton ou un rectangle, et même les redimensionner en plaçant la souris à droite ou en bas d'un contrôle.
    Les événements sur chaque contrôle sont gérés dans le module de classe clObject.
    (avec le withEvents sur la déclaration du contrôle et en définissant les événements des contrôles sur [procédure événementielle])
    Un contrôle déplaçable est identifié par sa propriété Remarque = "object".
    Au chargement du formulaire principal, tous les contrôles déplaçable sont liés à un objet clObject et ajoutés à une collection.

    L'état n'est pas très abouti, je l'ai fait un peu vite.
    Sinon il reste des tests et gestions d'erreur à faire.
    Par exemple on peut mettre un même invité sur plusieurs tables, et si on choisi 2 fois le même invité pour une même table il y a une erreur.
    Il faudrait filtrer la liste en n'affichant que les invités non placés.
    Il manque également un bouton pour copier un plan...

    Sujet intéressant, ça fera une idée de tutoriel pour quand j'aurai le temps.

  7. #7
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    C'est super merci Arkham46, c'est exactement ce que je voulais intégrer dans ma gestion des invités,

    merci à tous
    itzik92

  8. #8
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonjour à tous,

    Bonjour Arkham46, j'ai intégré et adapté ton exemple dans ma base, puis j'ai complété dans la table [tblInvites] les champs: civilité,n° tél etc. ,,,
    je souhaite rajouter dans le [frmTable]:
    1- un contrôle pour pouvoir compter les nbre d'invités dans une table sélectionnée
    2- dans le champ [age] pouvoir mettre des conditions à savoir: 0= "Adulte" ;1 = "< 11 ans" ; 2 = "> 11 ans" ( puisque je stock ces valeurs d'après la "case d'option" dans la table [tblInvites])
    3- Dans le [frmTable], comment gérer les doublons? la procédure VBA s'arrête sur : oObject.AddInvite CStr(cmbAddInvite.Value)
    merci d'avance
    itzik92

  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 526
    Points
    14 526
    Par défaut
    Citation Envoyé par itzik92 Voir le message
    1- un contrôle pour pouvoir compter les nbre d'invités dans une table sélectionnée
    Ajouter une fonction au formulaire frmTable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' Nombre d'invites de la table
    Public Function GetNbInvites() As Long
    GetNbInvites = Object.Invites.Count
    End Function
    et une zone de texte sur le formulaire avec comme source de données :
    Citation Envoyé par itzik92 Voir le message
    2- dans le champ [age] pouvoir mettre des conditions à savoir: 0= "Adulte" ;1 = "< 11 ans" ; 2 = "> 11 ans" ( puisque je stock ces valeurs d'après la "case d'option" dans la table [tblInvites])
    là je n'ai pas compris...

    Citation Envoyé par itzik92 Voir le message
    3- Dans le [frmTable], comment gérer les doublons? la procédure VBA s'arrête sur : oObject.AddInvite CStr(cmbAddInvite.Value)
    Il faut ajouter une gestion d'erreurs :
    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
    17
    18
    19
    20
    21
     
    ' Ajout d'un invité à la table
    Private Sub cmbAddInvite_AfterUpdate()
    On Error GoTo Gestion_Erreurs
    oObject.AddInvite CStr(cmbAddInvite.Value)
    Me.cmbAddInvite.Value = Null
    Me.cmbInvites.Requery
    Me.cmbInvites = Me.cmbInvites.ItemData(Me.cmbInvites.ListCount - 1)
    ' Flag le changement du plan
    oObject.frmPlan.HasChanged = True
    Exit Sub
    Gestion_Erreurs:
    Select Case Err.Number
        Case 457 ' Invite déjà présent
            MsgBox "Invite déjà dans cette table"
            cmbAddInvite.Value = Null
            Exit Sub
        Case Else
            MsgBox "Erreur " & Err.Number & ", " & Err.description
    End Select
    End Sub

  10. #10
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir à tous,
    Arkham46, merci pour ton aide,
    concernant le champ [frmInvites].[Age] j'ai mis dans la reqPlan[Ages: PremVrai([Age]=1;"< 11 ans ";[Age]=2;"> 11 ans")] ça, c'est bon.

    1- Comment faire la même chose dans le frmTable.[cmbInvites] pour le champ [Age] ?

    2- Comment interdire, de placer à une autre table, un invité déjà placé, (Un invité ne peut pas être placé dans deux tables.)
    Il faut peut être ajouter une case[Used] dans la tblInvites, afin de récupérer la valeur puis bloquer et afficher un MsgBox " Invité déjà placé dans une autre table"
    Cette case est par défaut "Faux" et dès la sélection d'un ajout d'invité [frmTable] pour le placé, elle se met à "Vrai"

    itzik92

  11. #11
    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 526
    Points
    14 526
    Par défaut
    Citation Envoyé par itzik92 Voir le message
    2- Comment interdire, de placer à une autre table, un invité déjà placé, (Un invité ne peut pas être placé dans deux tables.)
    Il faut peut être ajouter une case[Used] dans la tblInvites, afin de récupérer la valeur puis bloquer et afficher un MsgBox " Invité déjà placé dans une autre table"
    Cette case est par défaut "Faux" et dès la sélection d'un ajout d'invité [frmTable] pour le placé, elle se met à "Vrai"
    Non il ne faut pas aller vérifier dans les tables, les tables ne sont mise à jour qu'à la sauvegarde donc les valeurs qu'elles contiennent en cours de construction du plan ne sont pas encore correct.
    Il faut vérifier en parcourant les objets :

    Après avoir ajouté une propriété Objets dans le formulaire frmPlans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' Collection d'objets
    Public Property Get Objects() As Collection
    Set Objects = gObjects
    End Property
    code de vérification qu'un invité n'est pas déjà placé :
    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
    17
    18
    ' Ajoute un invité à la liste
    Public Sub AddInvite(pInvite As String)
    Dim loinvite As clInvite
    Dim loObject As clObject
    ' Recherche si l'invité est déjà placé
    For Each loObject In oPlan.Objects
        For Each loinvite In loObject.Invites
            If loinvite.Id = pInvite Then
                MsgBox "déjà placé"
                Exit Sub
            End If
        Next
    Next
    ' Ajoute l'invité à la collection
    gInvites.Add oPlan.Invites.Item(pInvite), pInvite
    ' Modifie le texte info-bulle
    oCtrl.ControlTipText = ListeInvites
    End Sub
    On parcourt chaque invité de chaque objet du plan pour rechercher si l'invité est déjà placé.
    Ce qui serait encore mieux c'est de vérifier en amont pour ne faire apparaître dans la liste que les invités non placés.

    Sinon pour les tranches d'âge je n'ai rien compris...

  12. #12
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonjour à tous
    Arkham46,

    Dans le frmInvites pour la saisie du champ [Age], j'ai mis une case d'option:1 = "moins de 11 ans" 2 = "de 11 ans à 15 ans" donc ces valeurs 1, 2, sont stockés dans la tblInvites.[Age]. Je souhaite pouvoir les afficher dans le frmTable.[cmbInvites] par des textes comme suit :" < de 11 ans " ou bien " > de 11 ans " selon les valeurs

    merci par avance
    itzik92

  13. #13
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir à tous,
    Arkham46,
    1- Quand on supprime tous les invités dans la Fiche de Table, dans le Plan de la Salle, l'info bull reste avec la totalité liste des invités de la fiche de table initiale,as-tu une idée comment réparer ce cas ?
    2- Les boutons des tables, une fois déplacée dans la salle, ne reviennes plus dans le rectangle de départ ?
    3- y a un moyen de passer à un autre évènement avec un nouveau plan vierge (sans nom des tables ni invités ) tout en conservant le 1er plan saisi avec la disposition enregistrée ?
    Merci par avance
    itzik92

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 99
    Points
    99
    Par défaut
    merci pour ces informations tellement utiles

  15. #15
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonjour Arkham46,
    Concernant les tranches d'ages, j'ai abandonné.

    Sur ton modele de base , j'ai apporté des modifications, en rajoutant des tables comme : tblFoyers (lié à la tblInvites),la tblInvites a été modifié etc,,
    Un problème est apparu: les listes des invités ajoutés dans le formulaire Fiche de table, après la fermeture de ce formulaire et l'ouverture à nouveau, les noms ajoutés ne sont plus sauvegardés !!
    Je n'arrive pas à résoudre ce problème.
    je vais poster le fichier "Liste des Invités" sur ce lien:

    http://dl.free.fr/vyJgHMgL3

    Merci de ton aide,
    itzik92

  16. #16
    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 526
    Points
    14 526
    Par défaut
    Bjr,


    Citation Envoyé par itzik92 Voir le message
    Un problème est apparu: les listes des invités ajoutés dans le formulaire Fiche de table, après la fermeture de ce formulaire et l'ouverture à nouveau, les noms ajoutés ne sont plus sauvegardés
    j'ai un peu peiné à trouver le problème et c'est sournois...
    en fait le bug est déjà présent dans mon fichier donc ce n'est pas toi qui a tout cassé

    Correction
    dans le code du formulaire frmPlans (module form_frmPlans), remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Set loInvite = gInvites.Item(lRs!invite)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Set loInvite = gInvites.Item(CStr(lRs!invite))
    Explication

    - la clé de chaque élément de la collection gInvites est la clé primaire (invite) de la table tblInvites, qui est un entier et qu'on converti en texte pour s'en servir de clé de collection
    - je recherchais l'invité (avec le code si dessus à corriger) en donnant non pas la clé mais l'index (=la position) de la l'invité dans la collection (car lrs!invite est un nombre, pas un texte)
    - pour rechercher un élément par sa clé, il faut utiliser un texte (string), d'où l'ajout de Cstr dans mon code corrigé pour convertir le nombre en texte et donc demander de rechercher par la clé au lieu de par la position

    Dans mon fichier exemple les numéros d'invité se suivent (1, 2, 3, 4, 5) donc la clé était égale à la position dans la collection.
    Après quelques ajouts/suppressions la liste n'est plus continue et ça bug...

    Bonne continuation!

  17. #17
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,
    Merci pour ta reponse, est ce que t'as vu mon fichier ? qu'est ce que tu en penses? (j'ai joint un lien pour ce fichier).

    J'ai remplacé le code que tu m'as donné, mais ça bug la ou c'est en bleu, y a t'il autre chose à modifier ?
    voici le code modifié :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    ' Après sélection du plan dans la liste
    Private Sub cmbPlans_AfterUpdate()
    Dim loObject As clObject
    Dim loinvite As clInvite
    Dim lNumPlan As Long
    Dim lDb As DAO.Database
    Dim lRs As DAO.Recordset
    ' Numéro de plan sélectionné (ou -1 si aucun)
    lNumPlan = Nz(cmbPlans.Value, -1)
    If lNumPlan = -1 Then Exit Sub
    ' Initalise le plan
    InitialisePlan
    ' Charge les données depuis les tables et met à jour les objets
    Set lDb = CurrentDb
    Set lRs = lDb.OpenRecordset("select * from tblPlansDetail where numplan = " & lNumPlan)
    If Not lRs.EOF Then
        lRs.MoveFirst
        While Not lRs.EOF
            Set loinvite = gInvites.Item(CStr(lRs!invite))
            loObject.left = lRs!vleft
            loObject.top = lRs!top
            loObject.width = lRs!width
            loObject.height = lRs!height
            loObject.Caption = lRs!libelle
            loObject.used = lRs!used
            lRs.MoveNext
        Wend
    End If
    lRs.Close
    Set lRs = Nothing
    Set lRs = lDb.OpenRecordset("select * from tblPlansInvites where numplan = " & lNumPlan)
    If Not lRs.EOF Then
        lRs.MoveFirst
        While Not lRs.EOF
            Set loinvite = gInvites.Item(CStr(lRs!invite))
            ' Si l'invité n'existe pas (a été supprimé de la liste), on n'essaye pas de le charger
            Set loinvite = Nothing
            On Error Resume Next
            Set loinvite = gInvites.Item(CStr(lRs!invite))
            On Error GoTo 0
            If Not loinvite Is Nothing Then
                loObject.AddInvite CStr(lRs!invite)
            End If
            lRs.MoveNext
        Wend
    End If
    lRs.Close
    Set lRs = Nothing
    Set lDb = Nothing
    End Sub
    Très cordialement
    itzik92

  18. #18
    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 526
    Points
    14 526
    Par défaut
    bjr,

    tu as fait des remplacements en trop
    il n'y a avait qu'un seul endroit à modifier :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    ' Après sélection du plan dans la liste
    Private Sub cmbPlans_AfterUpdate()
    Dim loObject As clObject
    Dim loinvite As clInvite
    Dim lNumPlan As Long
    Dim lDb As DAO.Database
    Dim lRs As DAO.Recordset
    ' Numéro de plan sélectionné (ou -1 si aucun)
    lNumPlan = Nz(cmbPlans.Value, -1)
    If lNumPlan = -1 Then Exit Sub
    ' Initalise le plan
    InitialisePlan
    ' Charge les données depuis les tables et met à jour les objets
    Set lDb = CurrentDb
    Set lRs = lDb.OpenRecordset("select * from tblPlansDetail where numplan = " & lNumPlan)
    If Not lRs.EOF Then
        lRs.MoveFirst
        While Not lRs.EOF
            Set loObject = gObjects.Item(lRs!objet)
            loObject.left = lRs!vleft
            loObject.top = lRs!top
            loObject.width = lRs!width
            loObject.height = lRs!height
            loObject.Caption = lRs!libelle
            loObject.used = lRs!used
            lRs.MoveNext
        Wend
    End If
    lRs.Close
    Set lRs = Nothing
    Set lRs = lDb.OpenRecordset("select * from tblPlansInvites where numplan = " & lNumPlan)
    If Not lRs.EOF Then
        lRs.MoveFirst
        While Not lRs.EOF
            Set loObject = gObjects.Item(lRs!objet)
            ' Si l'invité n'existe pas (a été supprimé de la liste), on n'essaye pas de le charger
            Set loinvite = Nothing
            On Error Resume Next
            Set loinvite = gInvites.Item(CStr(lRs!invite))
            On Error GoTo 0
            If Not loinvite Is Nothing Then
                loObject.AddInvite CStr(lRs!invite)
            End If
            lRs.MoveNext
        Wend
    End If
    lRs.Close
    Set lRs = Nothing
    Set lDb = Nothing
    End Sub
    et oui j'ai regardé ton fichier

    content de voir que tu as pu améliorer mon premier jet

    par contre je vois que tu ne gères qu'un plan
    si on crée plusieurs plan de salle, ça ne fonctionne plus très bien
    on a par exemple un total par table qui va cumuler les différents plans

    mais bon si tu ne comptes pas créer plusieurs plans ça va

    sinon je verrais bien une restriction dans la liste de saisie des invités
    formulaire frmtable, zone de liste cmbAddInvite
    dans contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT tblInvites.invite, tblInvites.Nom, tblInvites.Prenom, tblInvites.Age, tblInvites.Assistera_1 FROM tblInvites LEFT JOIN tblPlansInvites ON tblInvites.invite=tblPlansInvites.invite WHERE (((tblInvites.Assistera_1)=Yes) And ((tblPlansInvites.numplan) Is Null Or (tblPlansInvites.numplan)<>nz(Formulaires!frmPlans!cmbPlans))) ORDER BY tblInvites.Nom, tblInvites.Prenom;
    testé vite fait, ça a l'air de bien filtrer la liste des invités en retirant ceux déjà placés dans le pan en cours

    bon courage!

  19. #19
    Membre régulier
    Homme Profil pro
    Urbaniste
    Inscrit en
    Septembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2008
    Messages : 110
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,
    Merci pour ton aide,
    concernant le filtrage des invités par rapport à un nouveau plan, si on laisse comme ça, il y aura un problème tel quel, car il arrive que le même invité soit présent dans les 2 fêtes (plans) à des dates différentes c'est à dire dans un plan dans une table et dans un autre plan dans une autre table.
    L’idéal serait de pouvoir stocké un événement, avec son plan et ses invités sans que cela empêche de le ressaisir dans un plan plus tard.

    Cordialement,

    itzik92

  20. #20
    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 526
    Points
    14 526
    Par défaut
    Citation Envoyé par itzik92 Voir le message
    concernant le filtrage des invités par rapport à un nouveau plan, si on laisse comme ça, il y aura un problème tel quel, car il arrive que le même invité soit présent dans les 2 fêtes (plans) à des dates différentes c'est à dire dans un plan dans une table et dans un autre plan dans une autre table.
    L’idéal serait de pouvoir stocké un événement, avec son plan et ses invités sans que cela empêche de le ressaisir dans un plan plus tard.
    normalement la requête de mon précédent message gère ce cas

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. comment deplacer les controles d un formulaire a l execution
    Par ZashOne dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/02/2008, 00h29
  2. verrouiller tous les contrôles d'un formulaire
    Par nogood1 dans le forum Access
    Réponses: 3
    Dernier message: 22/08/2006, 12h55
  3. Modifier les controles d'un formulaire.
    Par vuong1 dans le forum Access
    Réponses: 6
    Dernier message: 19/08/2006, 10h41
  4. Pb pour verouillé les controles d'un formulaire (VBA)
    Par Celia1303 dans le forum Access
    Réponses: 12
    Dernier message: 24/10/2005, 11h19
  5. Réponses: 5
    Dernier message: 07/09/2005, 08h27

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