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 :

Comparer les noms d'étiquettes d'un form aux champs d'une tb


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Par défaut Comparer les noms d'étiquettes d'un form aux champs d'une tb
    Bonjour,

    Dans un formulaire j'ai des étiquettes dont les noms sont formatés de manière à correspondre à des ID d'enregistrements d'une table.

    Par exemple 01ET11, 01ET21, 02ET11, 02ET21 ...etc

    Dans une table j'ai un champ ID qui contient les mêmes données.

    Je souhaite faire un comparatif qui ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Ouverture de la table - Initialisation d'un compteur I
    ...
    Do While
          If MonID = LeNomDeMonEtiquette then
              ...
          End If
       I = I+1
       move next
    Loop
    ...
    Est il possible de lire tous les noms d'étiquettes d'un formulaire et
    Comment puis je definir "LeNomDeMonEtiquette" afin de le comparer à MonID ?

    D'avance Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Par défaut
    Hello
    en utilisant les espions, utilise celui qui te plait le plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MonEtiquette.Name
    MonEtiquette.value    ' mais non!! les étiquettes n'ont pas de valeur
    MonEtiquette.caption  ' ma préférence
    MonEtiquette.texte    ' peut être pas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Par défaut
    Yeess merci pour la réponse

    Mais comment puis-je initialiser "MonEtiquette" ?

    et ensuite que MonEtiquette correspond à toutes les étiquette de mon formulaire.

    D'avance merci à nouveau

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Par défaut
    Bonjour,

    ci-joint un petit code qui lit chaque étiquette du formulaire et qui compte ensuite le nombre d'enregistrements dans une table où l'ID est équivalent à la valeur de l'étiquette.

    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
     
        Dim ctl As Control, rst As Recordset, varSQL As String
        Dim NBLignes As Long
     
        'pour chaque controle à l'intérieur de mon formulaire
        For Each ctl In Forms(Me.Name)
            'je teste si le controle est une étiquette
            If ctl.ControlType = acLabel Then
                'si c'est une étiquette, je regarde combien de lignes
                'correspondant à la valeur de l'étiquette j'ai dans ma table
                'Attention au format de l'ID (là j'ai mis du texte)
                varSQL = "SELECT MonID FROM MaTable WHERE MonID = '" & ctl.Caption & "'"
                Set rst = CurrentDb.OpenRecordset(varSQL, dbOpenDynaset)
                If Not rst.EOF Then
                    rst.MoveLast
                End If
                NBLignes = rst.RecordCount
                'ensuite utiliser cette valeur pour faire ce que j'ai à faire
            End If
        Next ctl
    En espérant que ça réponde à votre demande ou que ça vous mette sur la piste.

    Cordialement,

  5. #5
    Membre Expert
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Par défaut
    Hello
    Attends un peu, as tu vraiment besoin de programmation??
    expose nous ton problème de base, s'il te plait
    au cas où la solution serait simple.....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Par défaut
    Bonjour et merci pour vos réponses,

    J'ai un formulaire sur lequel il y a une carte de département.
    Sur cette carte il y a des étiquettes qui représentent des véhicules.
    Ces étiquettes doivent changer de couleur en fonction de la disponibilité des véhicules.
    Ces étiquettes ('MesEtiquettes') ont un nom 01ET11, 01ET12, 01ET21 ...
    - '01' pour le centre 1, '02' pour le centre 2 etc...
    - 'ET' pour étiquette
    - '11' pour la position sur la carte ligne 1 colonne 1, '12' lgn1 col 2 etc...


    Ensuite dans une table et par enregistrement j'ai :
    - Le nom du véhicule 'MonVehicule'
    - Le libellé de l'étiquette correspondant 'MonLabel'
    - La dispo du véhicule 'MaDispo'

    Ce que je veux faire :
    Pour chaque étiquette du formulaire je regarde chaque enregistrement de ma table pour voir si il y a correspondance puis je change les couleurs.

    Ce que je sais faire :
    Ouvrir la table, aller d'enregistrement en enregistrement (Do While...Loop) afin de lire les lib 'MonLabel' et changer les couleurs (If ou SelectCase).

    Ce que je ne sais pas faire c'est :
    Creer la liste de 'MesEtiquettes' afin de la comparer à 'MonLabel'


    J'espère avoir été suffisament clair ...

    D'avance merci pour vos réponses

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Par défaut
    Re bonjour,

    En fait le code de Aegnor marche trés bien mais au lieu de compter les étiquettes, j'essai d'y imbriquer un Do While ... Loop

    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
     
        TbCpt = MaTable.recordcount
     
        For Each ctl In Forms(Me.Name)
             If ctl.ControlType = acLabel Then
    'je lit ma première étiquette
                Etiquette = ctl.Name
     
                Do While TbCpt >= CPT
     
                    MonVehicule = Matable!Monchamp1
     
                    If MonVehicule = Me(Etiquette).Name Then
    'je compare l'étiquette au 1er enregistrement de matable
                        ...
                    end if
     
                    Matable.MoveNext
                    CPT = CPT + 1
     
                Loop
            End If
        Next ctl
    mais je n'entre pas dans le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MonVehicule = Me(Etiquette).Name
    Est il possible d'imbriquer un Do Loop dans un For Each ?

    Merci pour ceux qui se pationnent de mes petits soucis

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2015, 08h27
  2. [Toutes versions] Transformer les noms abrégés en anglais dans un classeur ouvert avec une version française en nombres
    Par Pierre Dumas dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/02/2011, 08h08
  3. Réponses: 28
    Dernier message: 09/01/2007, 16h30
  4. Forcer la mise en forme des champs d'une TABLE
    Par dunbar dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/08/2006, 01h07
  5. Réponses: 2
    Dernier message: 03/02/2005, 13h21

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