IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec Tooglebutton [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonjour le forum,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ToggleButton1_Click()
    If ToggleButton1.value=true then BParmoire 1, "0,01"
    End Sub
    Ensuite cela peut donner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A = "ToggleButton" & i
     If A = False Then
    n'est pas traité comme ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ToggleButton1 =False Then
    j'essaye en déclarant A comme Togglebutton mais toujours rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  4. #4
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    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.

  5. #5
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Désolé ça date un peut mais bon voici comment j'ai procédé avec des indices:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo