Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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/02/2010, 17h49   #1
Membre du Club
 
Avatar de mentat
 
Homme
Electrotechnicien
Inscription : août 2009
Messages : 111
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Electrotechnicien
Secteur : Industrie

Informations forums :
Inscription : août 2009
Messages : 111
Points : 47
Points : 47
Par défaut Problème avec Tooglebutton

Bonjour à tous,

Voilà j'ai un petit soucis sur un un code (celuici pour mon travail), dans mon useform qui me prend un peut de place et que j'essaye donc de simplifier...

Code d'origine dans l'useform, et qui fonctionne :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
' Commande ToggleButton
'======================
Private Sub ToggleButton1_Click()
'valeur de la résistance de l'armoire TA1
RTA1 = "0,0090"
 
If ToggleButton1.Value = True Then
ToggleButton2.Value = False
ToggleButton3.Value = False
ToggleButton4.Value = False
ToggleButton5.Value = False
ToggleButton6.Value = False
Label14 = "TA1"
Label16 = RTA1
Label21 = RTA1
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton1.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Private Sub ToggleButton2_Click()
'valeur de la résistance de l'armoire TA2
RTA2 = "0,0041"
 
If ToggleButton2.Value = True Then
ToggleButton1.Value = False
ToggleButton3.Value = False
ToggleButton4.Value = False
ToggleButton5.Value = False
ToggleButton6.Value = False
Label14 = "TA2"
Label16 = RTA2
Label21 = RTA2
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton2.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Private Sub ToggleButton3_Click()
'valeur de la résistance de l'armoire TA3
RTA3 = "0,0012"
 
If ToggleButton3.Value = True Then
ToggleButton1.Value = False
ToggleButton2.Value = False
ToggleButton4.Value = False
ToggleButton5.Value = False
ToggleButton6.Value = False
Label14 = "TA3"
Label16 = RTA3
Label21 = RTA3
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton3.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Private Sub ToggleButton4_Click()
'valeur de la résistance de l'armoire TA4
RTA4 = "0,0050"
 
If ToggleButton6.Value = True Then
ToggleButton1.Value = False
ToggleButton2.Value = False
ToggleButton3.Value = False
ToggleButton5.Value = False
ToggleButton6.Value = False
Label14 = "TA4"
Label16 = RTA4
Label21 = RTA4
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton4.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Private Sub ToggleButton5_Click()
'valeur de la résistance de l'armoire TA5
RTA5 = "0,0025"
If ToggleButton5.Value = True Then
ToggleButton1.Value = False
ToggleButton2.Value = False
ToggleButton3.Value = False
ToggleButton4.Value = False
ToggleButton6.Value = False
Label14 = "TA5"
Label16 = RTA5
Label21 = RTA5
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton5.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Private Sub ToggleButton6_Click()
'valeur de la résistance de l'armoire TA6
RTA6 = "0,0016"
 
If ToggleButton6.Value = True Then
ToggleButton1.Value = False
ToggleButton2.Value = False
ToggleButton3.Value = False
ToggleButton4.Value = False
ToggleButton5.Value = False
Label14 = "TA6"
Label16 = RTA6
Label21 = RTA6
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
 
ElseIf ToggleButton6.Value = False Then
Label14 = ""
Label16 = "0"
Label21 = "0"
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End If
End Sub
Et voici donc le code de remplacement dans l'useform :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Private Sub ToggleButton1_Click()
BParmoire 1, "0,01"
End Sub
Private Sub ToggleButton2_Click()
BParmoire 2, "0,02"
End Sub
Private Sub ToggleButton3_Click()
BParmoire 3, "0,03"
End Sub
Private Sub ToggleButton4_Click()
BParmoire 4, "0,04"
End Sub
Private Sub ToggleButton5_Click()
BParmoire 5, "0,05"
End Sub
Private Sub ToggleButton6_Click()
BParmoire 6, "0,06"
End Sub
Et voici le sub que je fais appel situé dans un module :

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
 
Sub BParmoire(indice, résistance)
Dim RTA1, RTA2, RTA3, RTA4, RTA5, RTA6 As String
 
If ToggleButton & indice = True Then GoTo suite
UserForm1.Label14 = ""
UserForm1.Label16 = "0"
UserForm1.Label21 = "0"
GoTo Fin
 
suite:
 
UserForm1.Label14 = "TA" & indice
UserForm1.Label16 = résistance
UserForm1.Label21 = résistance
 
For i = 1 To indice - 1
"ToggleButton" & i & ".value" = False
Next i
 
For j = indice + 1 To 6
"ToggleButton" & j & ".Value" = False
Next j
 
Fin:
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End Sub
Mon soucis c'est que dans le code original, lorsque je clic sur un togglebutton, il devien True et les autres False. mais je n'arrive pas à faire la même chose en simplifiant le code...

je ne sais pas si mes explications sont assez claire

Je vous remercie d'avance pour votre aide.
mentat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 18h25   #2
Membre actif
 
Avatar de Duddy
 
Homme Marc
Agent de maitrise
Inscription : novembre 2007
Messages : 237
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Agent de maitrise
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 237
Points : 183
Points : 183
Bonjour le forum,

En mode déboguage, que ce passe t-il sur :

Code :
ToggleButton & indice = True
Es-tu sûr que la concaténation de la variable sur le nom du contrôle fonctionne?

J'ai déjà rencontré ce problème car il ne reconnaissait pas le contrôle en réalisant ce "montage", il m'a fallu passer par :

Code :
1
2
3
Private Sub ToggleButton1_Click()
If ToggleButton1.value=true then BParmoire 1, "0,01"
End Sub
Ensuite cela peut donner:

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub BParmoire(indice, résistance)
Dim RTA1, RTA2, RTA3, RTA4, RTA5, RTA6 As String
 
 
UserForm1.Label14 = "TA" & indice
UserForm1.Label16 = résistance
UserForm1.Label21 = résistance
 
'calcul de la résistance total des câbles pour une phase
Valeurrésistancetotalpourunephase
End Sub
A tester et à adapter, j'ai juste essayé de retranscrire ce que je pensais réaliser.
__________________
Bon courage à toi.
Duddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2010, 10h06   #3
Membre du Club
 
Avatar de mentat
 
Homme
Electrotechnicien
Inscription : août 2009
Messages : 111
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Electrotechnicien
Secteur : Industrie

Informations forums :
Inscription : août 2009
Messages : 111
Points : 47
Points : 47
Salut Duddy

En fait le gros soucis c'est que comme je concatène un bouton, il n'est pas reconnu...

Pour i = 1 par exemple, le code:

Code :
1
2
A = "ToggleButton" & i
 If A = False Then
n'est pas traité comme ce code:

Code :
If ToggleButton1 =False Then
j'essaye en déclarant A comme Togglebutton mais toujours rien...

Code :
1
2
3
4
5
6
7
8
9
10
Dim A As ToggleButton, B As ToggleButton, C As ToggleButton
 
For i = 1 To 6
A = "ToggleButton" & i
 If A = False Then
UserForm1.Label14 = ""
UserForm1.Label16 = "0"
UserForm1.Label21 = "0"
End If
Next i
Es-ce normal? me manque t'il quelque chose?

Merci pour ton aide...
mentat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2010, 18h16   #4
Membre actif
 
Avatar de Duddy
 
Homme Marc
Agent de maitrise
Inscription : novembre 2007
Messages : 237
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Agent de maitrise
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 237
Points : 183
Points : 183
Bonjour le forum,

En fait, on ne peut pas "piloter" le nom des contrôles avec des variables, ou je ne sais pas comment.

Essaies avec le code que je t'ai transmis et dis-nous.

Cela est plus long en écriture dans les actions des contrôles mais cela doit fonctionner.
__________________
Bon courage à toi.
Duddy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2010, 18h18   #5
Membre du Club
 
Avatar de mentat
 
Homme
Electrotechnicien
Inscription : août 2009
Messages : 111
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Electrotechnicien
Secteur : Industrie

Informations forums :
Inscription : août 2009
Messages : 111
Points : 47
Points : 47
Désolé ça date un peut mais bon voici comment j'ai procédé avec des indices:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'Commande ToggleButton
'=====================
Private Sub ToggleButton1_Click()
BParmoire 1, "0,01", ToggleButton1.Value 'Module3
End Sub
Private Sub ToggleButton2_Click()
BParmoire 2, "0,02", ToggleButton2.Value 'Module3
End Sub
Private Sub ToggleButton3_Click()
BParmoire 3, "0,03", ToggleButton3.Value 'Module3
End Sub
Private Sub ToggleButton4_Click()
BParmoire 4, "0,04", ToggleButton4.Value 'Module3
End Sub
Private Sub ToggleButton5_Click()
BParmoire 5, "0,05", ToggleButton5.Value 'Module3
End Sub
Private Sub ToggleButton6_Click()
BParmoire 6, "0,06", ToggleButton6.Value 'Module3
End Sub
Et voici le code macro BParmoire

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub BParmoire(indice, résistance, razlabel)
 
UserForm1.Label14 = "TA" & indice
UserForm1.Label16 = résistance
UserForm1.Label21 = résistance
 
'Relmise à Off des togglebutton
If indice <> 1 Then UserForm1.ToggleButton1.Value = False
If indice <> 2 Then UserForm1.ToggleButton2.Value = False
If indice <> 3 Then UserForm1.ToggleButton3.Value = False
If indice <> 4 Then UserForm1.ToggleButton4.Value = False
If indice <> 5 Then UserForm1.ToggleButton5.Value = False
If indice <> 6 Then UserForm1.ToggleButton6.Value = False
 
If razlabel = False Then
'Effacer la valeur de résistance et le nom de l'armoire
UserForm1.Label14 = ""
UserForm1.Label16 = "0"
UserForm1.Label21 = "0"
End If
End Sub
mentat 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 +1. Il est actuellement 12h01.


 
 
 
 
Partenaires

Hébergement Web