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 01/09/2011, 03h33   #1
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
Par défaut une action commune dépendant du choix sur plusieurs optiongroup

Bonjour,

Je souhaiterais faire en sorte que le changement de couleur d'un rectangle, label (ColorChoiceR) etc dépendent du choix de PLUSIEURS goupes d'options (CbTry1 et 2).

Je débute et j'ai rédigé ceci (je passe par un bouton pour mettre à jour le rectangle, j'ai guère d'autres idées pour automatiser l'ensemble).
Le seul problème est que la couleur ne change pas. Je me demande si cela ne vient pas du fait que les integers t1 et t2 soient mal lus par le dernier sub (Je ne suis pas sûr d'être clair, en gros que le dernier sub ne soit pas capable de récupérer les valeurs acquises par t1 et t2 dans les 2 subs précédents).

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
Sub CbTry1_Click()
Dim t1 As Integer
Select Case CbTry1
Case 1
t1 = 1
Case 2
t1 = 2
Case 3
t1 = 3
End Select
End Sub
 
Sub CbTry2_Click()
Dim t2 As Integer
Select Case CbTry2
Case 1
t2 = 1
Case 2
t2 = 2
Case 3
t2 = 3
End Select
End Sub
 
 
Sub BTUpgradeColor_Click()
Dim tt As Integer
tt = (t1 + t2)
If tt = 2 Then
Me.ColorChoiceR.BackColor = vbRed
ElseIf tt = 6 Then
Me.ColorChoiceR.BackColor = vbGreen
Else: Me.ColorChoiceR.BackColor = vbYellow
End If
 
End Sub
Auriez-vous, s'il vous plait, une idée?
Merci d'avance
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 03h44   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour (Re)

Déclares toutes tes variables en entête de module et non dans chaque procédure (cela devrait aller mieux).

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 04h02   #3
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
comme ceci?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Dim t1 As Integer
Dim t2 As Integer
Dim tt As Integer
 
Sub CbTry1_Click()
Select Case CbTry1
Case 1
t1 = 1
Case 2
t1 = 2
Case 3
t1 = 3
End Select
End Sub
 
Sub CbTry2_Click()
Select Case CbTry2
Case 1
t2 = 1
Case 2
t2 = 2
Case 3
t2 = 3
End Select
End Sub
 
Sub BTUpgradeColor_Click()
tt = (t1 + t2)
If tt = 2 Then
Me.ColorChoiceR.BackColor = vbRed
ElseIf tt = 6 Then
Me.ColorChoiceR.BackColor = vbGreen
Else: Me.ColorChoiceR.BackColor = vbYellow
End If
End Sub
J'avais déjà tenté, sans succès malheureusement. Lorsque j'appuis sur le bouton je vois le rectangle se rafraichir mais il reste de même couleur.

(Pour info, je ne sais pas si c'est une erreur ou pas, je n'ai pas écris ce code dans un module particulier mais directement dans la page VBA correspondante au formulaire)
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 04h15   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

J'ai refait un formulaire avec tes caractéristiques :

Tes procédures sur les groupes ne servent à rien, car les valeurs 1,2 et 3 sont implicites.

Donc une seule procédure qui fait tout :



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub BTUpgradeColor_Click()
    Dim tt As Integer
    tt = CInt(Me.CbTry_1.Value) + CInt(Me.CbTry_2.Value)
 
    Select Case tt
        Case 2
            Me.ColorChoiceR.BackColor = vbRed
        Case 6
            Me.ColorChoiceR.BackColor = vbGreen
        Case Else
            Me.ColorChoiceR.BackColor = vbYellow
    End Select
 
End Sub
Comme je viens de le faire, cela fonctionne.

Edit : Préfère le SELECT CASE plutôt que l'imbrication de IF.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 04h25   #5
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
ok merci ça marche parfaitement.
Maintenant je sais que les valeurs sont implicites.
Ok pour les imbrications de If
Merci beaucoup.

Dernier point : une idée pour que ça marche automatiquement sans avoir besoin que cela passe par un clic BT? j'ai essayé un Form_click ou un Form_AfterUpdate, sans succès.
david89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 04h30   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Pour cela on déporte tout dans une procédure :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub ResultatClick()
     Dim tt As Integer
    tt = CInt(Me.CbTry_1.Value) + CInt(Me.CbTry_2.Value)
 
    Select Case tt
        Case 2
            Me.ColorChoiceR.BackColor = vbRed
        Case 6
            Me.ColorChoiceR.BackColor = vbGreen
        Case Else
            Me.ColorChoiceR.BackColor = vbYellow
    End Select
 
End Sub
Ensuite sur chaque groupes d'options :

Code :
1
2
3
Private Sub CbTry_1_Click()
    Call ResultatClick
End Sub
Code :
1
2
3
Private Sub CbTry_2_Click()
    Call ResultatClick
End Sub
Donc plus de bouton de commande.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 04h35   #7
Futur Membre du Club
 
Étudiant
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 38
Points : 18
Points : 18
T'es trop bon !
Merci beaucoup pour l'aide apporté au grand débutant que je suis.
david89 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 18h20.


 
 
 
 
Partenaires

Hébergement Web