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 :

[VBA]Gérer la collection Controls


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Par défaut [VBA]Gérer la collection Controls
    Bonjour,

    J'utilise une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Ctrl In Me.Controls
    En regardant dans la doc d'Access, il est fait référence à l'indexation (qui commence par 0) des controls dans la collections Controls.
    Dans mon formulaire, j'ai laissé Access nommer les controls (texte102, Cadre 57...), J'aimerai maintenant à partir d'un control (exemple texte280) rendre tous les controls apres texte280 inaccessible (.enabled = False) et rendre leur (.value = Null).
    Le problème c'est de savoir comment la Collection Controls à rangé tous mes controls? Est-ce en fonction de leur nom ou type ? Est ce en fonction d'une chronologie d'implantation des control dans le formulaire ?

    Merci par avance de votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Par défaut
    Salut

    une solution consiste à placer Texte280 dans l'entete ou le pied de formulaire puis à changer le code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each ctl In Me.SectionDétail.Controls
    ctl.Enabled= False
    ...
    Next ctl

  3. #3
    Membre confirmé Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Par défaut
    Merci pour ta réponse,

    Mais le problème est que c'est en fonction d'une valeur de texte280 que je vais bloquer les controls en aval. Tu me dira que ca ne change pas grand chose mais je n'ai pas que ce control qui a la même action. En fait j'ai plein de control de type cadre qui bloque en fonction de la case cochée tout un tas de controls en aval. Ta solution ne me parait pas bien souple !?
    Si quelqu'un a une autre solution, il/elle sera le/la bien venu(e)

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Par défaut
    peut etre alors tu peux tester la valeur de TabIndex de chaque controle et ne traiter que ceux dont le TabIndex est supérieur à texte280.

  5. #5
    Membre confirmé Avatar de ip203
    Inscrit en
    Mars 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 132
    Par défaut
    Il n'existe pas des objets de type container qui rassemble une collection de contrôle (définis par le programmeur) et sur laquelle on pourrait faire:
    Me.MaCollection.Enabled = False ...

    J'avoue ne pas avoir encore assez de recul pour apprécier les subtilités de VBA.

  6. #6
    Membre Expert

    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
    Par défaut Marquer les contrôles au moyen de la propriété Tag
    Bonjour,
    Citation Envoyé par ip203
    Il n'existe pas des objets de type container qui rassemble une collection de contrôle (définis par le programmeur) et sur laquelle on pourrait faire:
    Me.MaCollection.Enabled = False ...

    J'avoue ne pas avoir encore assez de recul pour apprécier les subtilités de VBA.
    A défaut, on peut "marquer" les contrôles en renseignant leur propriété Tag.
    Ainsi, en parcourant la collection Controls et en testant si leur propriété Tag vérifie telle ou telle condition, tu peux ensuite leur appliquer la mise en forme voulue, ou toute autre action qu'il te plaira.

    Il doit bien y avoir des exemples ou des posts sur ce sujet dans le forum.

Discussions similaires

  1. [VBA-A] licence du controle winsock?
    Par djoodjoo555 dans le forum VBA Access
    Réponses: 14
    Dernier message: 28/05/2006, 15h33
  2. [VBA-E] Utiliser un controle RichTextBox
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2006, 22h41
  3. [C#][2.0]Collections controls d'une form et niveau
    Par chnew dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/02/2006, 13h51
  4. [VBA Excel] Fiabilité des controles Actives X
    Par Farbin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/08/2005, 12h28
  5. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 17h03

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