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 (permalink)
Nouveau membre du Club
 
Date d'inscription: août 2009
Localisation: Loire Atlantique, Nantes
Messages: 60
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 :
 
' 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 :
 
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 :
 
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
Vieux 08/02/2010, 18h25   #2 (permalink)
Membre habitué
 
Avatar de Duddy
 
Date d'inscription: novembre 2007
Localisation: Nevers
Âge: 43
Messages: 145
Par défaut

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 :
Private Sub ToggleButton1_Click()
If ToggleButton1.value=true then BParmoire 1, "0,01"
End Sub
 
Ensuite cela peut donner:

Code :
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
Vieux 09/02/2010, 10h06   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: août 2009
Localisation: Loire Atlantique, Nantes
Messages: 60
Par défaut

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 :
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 :
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
Vieux 09/02/2010, 18h16   #4 (permalink)
Membre habitué
 
Avatar de Duddy
 
Date d'inscription: novembre 2007
Localisation: Nevers
Âge: 43
Messages: 145
Par défaut

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
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 00h26.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.