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 :

[VBA Access 97] Création de collections possible ? [Sources]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut [VBA Access 97] Création de collections possible ?
    Bonjour à tous,

    J'ai une petite question :

    est-il possible, avec access 97 de pouvoir créer ses propres collections et donc les manipuler suivant les besoins??

    En réalité, j'ai un formulaire avec énormément de zones de textes et de cases à cocher (pas moyen de réduire, besoin de l'utilisateur) et j'aimerais effectuer des manipulation sur ses zones de textes et cases à cocher afin de pouvoir limiter les saisies et donc les erreurs, je pense que faire des collections est approprié mais je n'ai trouvé aucune aide sur ce sujet sur aucun site au forum

    Pouvez-vous m'éclairer SVP



    Merci d'avance à tous

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 47
    Par défaut
    Tu as deja Me.Controls qui contient tous les controles de ton formulaire

    tu peux faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To Me.Controls.Count
        Me.Controls.Item(i).Locked = True
    Next i
    ca va verouiller tous les controles

    tu peux aussi utiliser for each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each ctl In Me.Controls
                ctl.Locked = True
    Next ctl
    avec ca tu peux acceder a toutes les propriétés des controles, dont le nom qui te permettra d'effectuer tel traitement plutot qu'un autre

    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Left(ctl.Name, 5)="texte" Then 'si c'est une zone de texte
      'traitement pour les zone de texte
    End If
    voila si ca peut t'aider

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut
    Merci Shoryu pour ton aide

    Avec sa je pense pouvoir faire quelque chose je verrais cet après midi et te dirais si sa m'a aidé

    donc on ne peut pas créer de collection personnalisées sous access c'est sa? il faut se débrouiller avec ce qui existe quoi...

    Merci en tout cas

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut pas encore
    Re,

    Il y a une piste mais ce n'est pas encore sa.

    je développe plus mon sujet :

    J'ai plusieurs zones de texte, zones de listes et des cases à cocher.

    Je veux créer une sorte de lien entre mes zones de listes et mes cases cocher de tel sorte que lorsqu'une certaine valeure est séléctionnée dans ma liste, ma case est visible ou non. il y en a 35 de chaque, je sais le faire une par une mais sa va être du code à rallonge, une collection serais plus rapide si c'est faisable...

    J'éspère être assez claire

    Merci par avance

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 47
    Par défaut
    a part ca :
    en jouant sur les noms des controles c'est possible
    si par exemple t'as ca

    liste31
    case31

    liste32
    case32

    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
     
    Dim trouve as boolean
    Dim i as Integer
    trouve = false
     
    For Each ctl In Me.Controls
                If left(ctl.Name,1)="l" Then  'si le nom du controle commence par un l
                    'verif de la valeur
                    'if ctl.value= ce_que_tu_veux then
                             i=0
                            trouve=false
                           while(trouve=false)
                                if left(Controls.Item(i).Name,1)="c" and right(Controls.Item(i).name,2)=right(ctl.name,2) then 'si c'est une case et que c le meme numero
                                      Controls.Item(i).visible = true ' or false 
                                      trouve=true
                                end if
                            i=i+1;
                           wend
                   'end if
                End if
    Next ctl
    c'est bourrin mais ca devrait faire l'affaire

    edit : j'ai modifié le code un peu car ca bouclait pour rien

  6. #6
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Deux cas possibles :

    Leur donner des noms similaires (caseDate, lstDate). Ainsi en cliquant sur caseDate tu peux associer lstDate.

    La propriété Remarque (Tag en VBA) permet de d'inscrire n'importe quelle valeur utile. Tu peux ainsi par exemple y inscrire des numéros de groupe. Case1 avec liste1 auraient le tag 1, case2 et liste2 le 2 etc.

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut
    ta réponse Shoryu me parait juste, certe un peu longue mais juste, je vais essayer tout de suite.
    Pour la réponse de Tofalu, l'histoire des tag me paraît pas mal du tout, mais comment les utiliser? je ne les ai jamais vu avant, je ne sais pas comment m'y prendre dsl... Mais cette solution me paraît mieux encore

    Merci a vous deux

  8. #8
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut nouveau problème
    Re,
    Je viens de trouver un autre problème, le code pour rendre visible la case à cocher du même tag marche, mais que pour la zone de liste 1, pas pour les autres, alors que l'appel de la procédure est bien faite sur chaque click sur la zone de liste.
    Je ne vois pas d'où le problème viens..

    Merci d'avance

  9. #9
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Les évènements sont les clics des cases à cocher et non des zones de liste normalement

  10. #10
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut


    Oui c'est vrai, je n'ai pas fait attention à ça...



    Mais alors quel événement mettre pour que l'action se fait sur la zone de liste??...

    Et avez-vous une solution à mon premier problème (le SAUF)

    Merci d'avance

  11. #11
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 32
    Par défaut Dernière ligne droite
    C'est bon, j'ai résolu le problème de l'événement, j'ai mis, sur perte focus...
    certe c'est un peut ennuyant de cliquer sur un autre contrôle pour que l'événement se déclanche mais je ne vois que sa qui puisse faire l'affaire...

    Par contre le premier problème reste entier...

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Vba Access] Création tableau a longeur variable
    Par 57Steph dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/09/2007, 08h34
  2. [VBA ACCESS] - Création menu Fichier - Edition ..
    Par bruno28 dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/07/2007, 09h22
  3. Création dynamique et boucle for en vba Access 2000
    Par billy123 dans le forum Access
    Réponses: 4
    Dernier message: 22/02/2007, 11h29
  4. Création d'une image en vba Access
    Par crashyear dans le forum VBA Access
    Réponses: 7
    Dernier message: 27/11/2006, 14h22
  5. Réponses: 4
    Dernier message: 16/04/2005, 16h54

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