Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2011, 20h06   #1
Membre régulier
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 81
Points : 81
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 :
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
JeanYves70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 09h43   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

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

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
en utilisant les espions, utilise celui qui te plait le plus
Code :
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
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h15   #3
Membre régulier
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 81
Points : 81
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
JeanYves70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 15h09   #4
Membre habitué
 
Inscription : janvier 2006
Messages : 99
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : janvier 2006
Messages : 99
Points : 101
Points : 101
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 :
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,
Aegnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 15h40   #5
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

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

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
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.....
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 14h58   #6
Membre régulier
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 81
Points : 81
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
JeanYves70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h08   #7
Membre régulier
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 81
Points : 81
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 :
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 :
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
JeanYves70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h36.


 
 
 
 
Partenaires

Hébergement Web