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 :

Réaliser une fonction pour ToggleButtonXX_Click


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut Réaliser une fonction pour ToggleButtonXX_Click
    Bonjour à tous,

    J'ai un userform qui contient près de 15 toggle button nommés ToggleButton1 ... ToggleButton150

    J'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ToggleButton1_Click()
        With ToggleButton1
            Select Case .Value
                Case True
                    .BackColor = RGB(255, 0, 0)
                Case False
                    .BackColor = &H8000000F
            End Select
        End With
    End Sub
    qui permet de changer la couleur selon si le statut du togglebutton est vrai ou faux dès que l'on clique dessus

    Est il possible de réaliser la même chose pour chaque togglebutton via une fonction ouo si je dois réécrire ce code pour mes 150 togglesbuttons

    Je n'ai jamais fait de fonction et même si le tuto de SiljyRoad est bien réalisé il n'aborde pas les évènements des controles dans les fonctions c'est pourquoi je suis un peu perdu

    PS si ça peut aider : je sais boucler sur les controles toggles buttons de mon userform via ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each ole1 In U3.Controls 'Boucle sur chaque controle du Userform3
                       If (Left$(ole1.Name, 12) = "ToggleButton" Then ole1.Value = True 'Test le nom du controle si le nom est correct alors la valeur du controle est égale à vrai
                    Next 'controle suivant
    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Dans ton cas, il faudra utiliser un module de classe qui permet de gérer tous tes togglebutton.

    Fais une petite recherche sur ce forum, tu trouveras tout ce que tu veux. sinon, on va te proposer un code.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut
    Ca m'a l'air compliqué tout ça !

    Merci pour ta réponse

    Par contre au niveau des mots clefs pour la recherche je ne vois pas désolé ... Car j'ai cherché à ToggleButton et fonction j'ai pas trouvé

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    1. Insère un module de classe (par défaut nommé Classe1) (Menu Insertion > Module de classe)

    Y insère ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public WithEvents Tb As MSForms.ToggleButton
     
     
    Private Sub TB_Click()
     
    Tb.BackColor = IIf(Tb.Value, 255, &H8000000F)
    End Sub
    La procédure TB_Click() est le code générique qu'on va appliquer à tes togglebutton. (C'est ton code mais écris autrement)


    2. Dans le module de ton userform
    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
    Dim Tb()
     
    Private Sub UserForm_Initialize()
    Dim i As Integer
    Dim Ct As Control
     
    For Each Ct In Me.Controls
        If TypeOf Ct Is MSForms.ToggleButton Then
            ReDim Preserve Tb(0 To i)
            Set Tb(i) = New Classe1
            Set Tb(i).Tb = Ct
            i = i + 1
        End If
    Next Ct
    End Sub
    C'est à dire grosso modo, à l'initialisation de l'userform, on va instancier tous les contrôles de type ToggleButton par la classe Classe1 qui gère l'évènement Click.


    PS. Il fallait chercher sur le forum "Module de Classe" tu auras d'autres exemples et tutoriels à étudier.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut
    Merci énormément

    Ca fonctionne du tonnerre !


    Encore merci, merci et merci



    Bonne soirée

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

Discussions similaires

  1. Réaliser une fonction Exec pour mon OS
    Par suisspal dans le forum Programmation d'OS
    Réponses: 9
    Dernier message: 07/04/2008, 20h32
  2. [SQL] Comment réaliser une fonction d'incrementation ?
    Par da_latifa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/12/2005, 11h14
  3. Réponses: 8
    Dernier message: 02/12/2005, 18h07
  4. [Incompatibilité] Une fonction pour un ascenseur interne
    Par sempire dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/10/2005, 10h42
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

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