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

Access Discussion :

Attribution d'une propriété ou méthode


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut Attribution d'une propriété ou méthode
    Bonsoir,

    j'ai sur un form une trentaine de listbox. Je leur ai attribuer un contenu par le code.

    Dans la fenêtre de debug, pas de pb, ça marche. Mais avec un point d'arrêt sur , j'ai une erreur d'éxécution 438 : Propriété ou méthode non gérée par cet objet.

    J'ai vérifié avec la liste déroulante des propriétés, ctl.Rowsource (pour mon cas) n'existe pas. Comment contourner le pb ?

    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each Ctl In Screen.ActiveForm.Controls
            If (TypeOf Ctl Is ListBox) Then
                Ctl.RowSource = sql
                Ctl.Requery
            End If
    Next Ctl

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Kgb1917

    Qu'elle version d'Access as-tu ?

    Avec la version 2003, je ferais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each ctl In Screen.ActiveForm.Controls
      If ctl.ControlType = acComboBox Then
        ctl.RowSource = SQL
        ctl.Requery
      End If
    Next ctl
    A+

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Et si c'était un Pb de type de la variable Ctl.
    Pour éviter tout contrôle de type:

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Merci pour vos réponses rapides mais aucune de vos suggestions ne fonctionnent.

    Je suis sous Access 2000

    Merci de votre aide

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Je reviens vers vous sur le sujet avec une précision.
    Qd je déclare Ctl As Object, le form ne s’ouvre pas. Enfin j’ai plutôt l’impression qu’il tourne en boucle sans rien trouver.

    Auriez-vous une idée sur pour résoudre le pb ?

    Merci par avance

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Bonjour GPU1917

    Ctl est de type control et non object.

    Puis le fait de déclarer une variable n'implique pas son remplissage.

    Enfin avec un screen.activeform c'est le formulaire actif qui est parcouru.

    Cordialement,

    NB : le KGB est postérieur à la 2me guerre mondiale avant c'était le GPU (prononcé GuéPéOu)

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Merci loufab pour la (les) réponse(s).

    Alors une nouvelle question relative à mon pb : comment faire pour remplir la variable déclarée ?

    Merci d'avance

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Dans ce code la variable Ctl n'a pas besoin d'être remplie puisque tu l'utilise conjointement avec un For Each .. screen.activeform.controls

    Il a juste besoin que le type de variable concorde avec le container Controls.

    Cordialement,

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    merci pour la piste.
    je teste.

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Loin de moi l'idée de polémiquer avec loufab , mais bon, je m'en vais préciser ma pensée concernant le "type" Object...

    Citation Envoyé par loufab
    Ctl est de type control et non object.
    Je ne vois pas d'impossibilité en ce qui concerne l'utilisation du type Object.
    Citation Envoyé par loufab
    Dans ce code la variable Ctl n'a pas besoin d'être remplie puisque tu l'utilise conjointement avec un For Each .. screen.activeform.controls

    Il a juste besoin que le type de variable concorde avec le container Controls.
    ... et cette "concordance" est possible en utilisant un type d'objet "compatible".
    Et la classe Object n'apportant pas de contrainte de type, elle peut donc convenir dans toutes les situations. CQFD

    Maintenant... savoir si l'objet "réel" ainsi référencé possède effectivement les propriétés et méthodes souhaitées... c'est une autre question.

    Mais bon, pour que l'anachronisme kgb1917 () puisse voir les choses évoluer, je lui donne le code d'une procédure QUI FONCTIONNE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub ListerCtrls()
        Dim oCtl As Object
     
        For Each oCtl In Screen.ActiveForm.Controls
            Debug.Print oCtl.Name
        Next oCtl
    End Sub
    Ce serait bien que kgb1917 donne son code QUI NE FONCTIONNE PAS (et au complet bien sûr) pour que nous puissions l'aider CONCRÊTEMENT.

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Bonjour,

    Même si sur le fond tu as raison je préfère conseiller le bon type plutot qu'un type générique.

    Je trouve cela plus propre.

    Cordialement,

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Bonsoir,

    Je suis parti du code de caféine sur son tuto de recherche multicritère partie IV-C pour faire mon form.

    Après sélection dans une listbox, je fais apparaître la sélection dans une textbox.

    Comme j’ai une trentaine de litbox et autant de textbox, j’ai placé les listbox dans l’entête du form que j’affiche ou masque selon les besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Afficher_Click()
        If Me.Afficher.Caption = "Afficher" Then
            Me.Afficher.Caption = "Masquer"
            Me.Section(acHeader).Visible = True
        Else
            Me.Afficher.Caption = "Masquer"
            Me.Afficher.Caption = "Afficher"
            Me.Section(acHeader).Visible = False
        End If
    End Sub
    Le code de mon post 1 est placé dans le RefreshQuery après et remplace les 3 lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.lblStats.Caption = DCount("*", "Medias", SQLWhere) & " / " & DCount("*", "Medias")
     Me.lstResults.RowSource = SQL
     Me.lstResults.Requery
    J’ai testé avec le code de =JBO= et il s’avère que dans la fenêtre de debug, les listbox ne sont pas recensées, que j’affiche ou masque l’entête du form.

    Voilà où j'en suis.

    Merci par avance de votre aide




    Edit : elles sont bien recensées après modif de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        For Each oCtl In Screen.ActiveForm.Controls
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        For Each oCtl In Screen.ActiveForm.Section(1).Controls
    dans la sub de JBO mais toujours pas de rowsource correspondant au sql.

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    Je relance ce post pour un éclairage technique. En regardant dans l’explorateur d’objet, Bibliothèque Access, Class Control, on se rend bien compte que Rowsource n’apparaît pas en tant que Membre de Control. Par contre, c’est le cas dans la bibliothèque MSForms.
    J’ai donc fait Dim ctl As MSForms.Control mais je me retrouve avec une erreur 13 (incompatibilité de type) sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each ctl In Screen.ActiveForm.Section(1).Controls
    PS (si ça a un lien) : la référence Microsoft Forms 2.0 Object Library est cochée.

    Merci par avance de votre aide

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2011, 14h32
  2. Stocker un attribut (ou une propriété) arbitraire à un noeud du dom
    Par _ash_ dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/03/2011, 10h30
  3. retrouver un attribut d'une propriété
    Par ppphil dans le forum C#
    Réponses: 5
    Dernier message: 10/06/2010, 12h14
  4. Réponses: 2
    Dernier message: 11/03/2008, 17h02
  5. [Castor] Accéder à une propriété d'un attribut
    Par neuromencien dans le forum Persistance des données
    Réponses: 1
    Dernier message: 10/08/2007, 18h44

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