Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 08/10/2011, 17h56   #1
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Par défaut Module de classe pour changer le comportement de case à cocher

Bonjour,

J'ai un formulaire qui comporte un grand nombre de cases à cocher.

Ils ont le comportement suivant :
Sur clic droit leur valeur passe à Null et leur étiquette change de couleur
Sur clic il deviennent coché ou non et l'étiquette repasse en sa couleur initiale

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CaseACocher1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    If Button = acRightButton Then
        Me.CaseACocher1 = Null
        Me.CaseACocher1_Etiq.ForeColor = 16744448
    Else
        Me.CaseACocher1_Etiq.ForeColor = 0
    End If
 
End Sub
Je voulais savoir si je peux généraliser ce comportement grâce à un module de classe ...

Merci
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 19h05   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

Oui tu peux créer une classe pour ça, inspire-toi du tuto Classe MELA qui vient de paraitre.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 08h30   #3
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Par défaut Et dans le cas de 40 cases à cocher ?

Bonjour,

Et merci pour ce tuto (que je vais utiliser pour la navigation)

Je suis tout a fait débutant sur les classes ... pour la déclaration de la procédure évènementielle d'un contrôle particulier dans la classe j'ai compris.

Comment faire pour que cet évènement soit déclenché pour un ensemble de contrôles ?

Merci
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2011, 08h38   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

Il faut déclarer chaque controle dans un objet de la classe.
A la manière des boutons de la classe MELA.

Tu peux également facilité la déclaration en utilisant une collection.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 19h31   #5
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Par défaut Pb avec les classes

Bonjour,

Malgré la lecture du totu MELA ... je n'y arrive pas ...

Je rappelle mon objectif : changer le comportement d'un ensemble de cases à cocher : sur clic droit ils doivent passer à Null ... avec pour commencer un test sur 1 case ... (ce que j'ai fait ne marche pas ...)

Code du formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
 
Dim UneCase As Coche
Dim Ctrl As Control
 
    Set Ctrl = Me.Controls("Case3")
 
    Set UneCase = New Coche
    Set UneCase.CaseACocher = Me.Ctrl
 
End Sub
J'ai créé un classe nommée coche


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private WithEvents Cocher As CheckBox
 
Property Set CaseACocher(Ctrl As CheckBox)
 
    Set Cocher = Ctrl
 
End Property
 
 
Property Get CaseACocher() As CheckBox
 
    Set CaseACocher = Cocher
 
End Property
 
Private Sub Cocher_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
If Button = acRightButton Then
    Me.Cocher = Null
End If
 
End Sub
Merci de votre aide
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 08h49   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 089
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 089
Points : 11 622
Points : 11 622
Bonjour,

C'est l'adresse du tuto que tu as lu et non le tuto lui-même...

1)
La déclaration de la variable de la classe se fait dans le module du formulaire et non dans une procédure du module du formulaire.

2)
Il faut activé l'événement que tu souhaites utiliser, soit dans le formulaire soit dans la classe.

3)
Les méthodes événementielles de la classe sont toujours publiques.

4)
Particularité de l'affectation d'une valeur Null : Il faut le faire sur la propriété Value du controle. Autrement tu affecte Null à l'objet.

5)
Le clic droit appelle le menu contextuel, il faut donc le desactivé.

6)
Il faut régler les cases à cocher sur Tripe état = Oui.

Les classes ne supportent pas l'approximation.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 08h16   #7
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Bonjour,

J'y suis arrivé finalement ... entre ton Tuto et "Access 2007 VBA Programmer's Reference" de chez WROX c'est bon ... j'ai enfin compris la création de classes !

Cordialement,
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web