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 :

[XL-2007] Un seul toggleButton sélectionné


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Par défaut [XL-2007] Un seul toggleButton sélectionné
    Bonjour,

    Voilà mon problème est assez simple, j'ai plusieurs toggleButton sur mon Userform et ce que je veux faire c'est juste que quand presse un des boutons les autres se désactivent.

    j'ai regarder sur le net, et en AWT il parle de groupeButton est-ce-que cette fonction existe sous VB6 ?

    Merci de bien vouloir m'aider.

    Cordialement,
    Fyejumpy

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans passer par des classes, exemple avec 2 toggleButton

    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
    Private Sub ToggleButton1_Click()
    Dim Ctrl As MSForms.ToggleButton
     
    If Me.ToggleButton1 Then
        For Each Ctrl In Me.Controls
            If Ctrl.Name <> "ToggleButton1" Then
                Ctrl = False
            End If
        Next Ctrl
    End If
     
    End Sub
     
    Private Sub ToggleButton2_Click()
    Dim Ctrl As MSForms.ToggleButton
     
    If Me.ToggleButton2 Then
        For Each Ctrl In Me.Controls
            If Ctrl.Name <> "ToggleButton2" Then
                Ctrl = False
            End If
        Next Ctrl
    End If
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Par défaut
    Le truc c'est que justement je passe par une classe que j'ai nommé ToggleButton1. Car mes boutons doivent être créés dynamiquement. Selon le nombre d'onglet dans le fichier Excel.

    Du coup créer un tableaux de boutons, et ensuite j'ai mis des objet ToggleButton1 qui hérite de togglebutton.

    En gros l'outil que je veux faire et que quand je clique sur un togglebutton de l'interface qui correspond à un onglet excel. Dans une listbox je charge le noms des colonnes de l'onglet choisi.

    Voici le code de ma classe, avec l'éssai (qui ne marche pas) pour faire la sélection.
    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
     
    Public WithEvents Le_toggle As MSForms.ToggleButton
     
     
    Private Sub Le_toggle_Click()
        comptCell = 15
        'on parcours le tableau de boutons
             For i = 0 To UBound(tabToggle)
                'On regarde si il y en a un d'activer
                If tabToggle(i).Le_toggle.Value = True Then
                    For j = 0 To UBound(tabToggle)
                        If i <> j Then
                            tabToggle(j).Le_toggle.Value = False
                        End If
                    Next j
                    'On affecte le i du bouton activer au comptOngl pour la création des tableaux
                    comptOngl = i
                End If
            Next i
            miseEnForme.Colonnes.Clear
            For x = 1 To 33
                'initialisation des noms des colonnes
                 nomCol(0, x - 1) = Sheets(comptOngl + 1).Cells(1, x).Value
                 'Ajout des noms à la listeBox
                miseEnForme.Colonnes.AddItem nomCol(0, x - 1)
            Next x
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Par défaut
    En bidouillant un peu mon code j'ai réussi à obtenir le résultat attendu.

    Merci encore de votre aide, mais on ne sait jamais pouvez vous me dire si mon code est bon où si il y a vait plus simple ?

    Voici le code rectifié :
    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
    Private Sub Le_toggle_Click()
        'on créé un compteur de boutons activés
        Dim comptBout As Integer
        'On l'initialise à 0
        comptBout = 0
        comptCell = 15
        'on parcours le tableau de boutons
             For i = 0 To UBound(tabToggle)
                'On regarde si il y en a un d'activer
                If tabToggle(i).Le_toggle.Value = True Then
                    'Si il y a un bouton d'activer on augmente le compteur
                    comptBout = comptBout + 1
                    'On affecte le i du bouton activer au comptOngl pour la création des tableaux
                    comptOngl = i
                End If
            Next i
     
            miseEnForme.Colonnes.Clear
            'On ne veut qu'un bouton a chaque fois donc on regarde si le compteur est supérieur à 1
            If comptBout > 1 Then
                'Si il est supérieur
                For j = 0 To UBound(tabToggle)
                    'je parcours l'ensemble des boutons et je les désactive
                    tabToggle(j).Le_toggle.Value = False
                Next j
                'Je réactive le dernier enregistrer
                tabToggle(comptOngl).Le_toggle.Value = True
            End If
     
            For x = 1 To 33
                'initialisation des noms des colonnes
                 nomCol(0, x - 1) = Sheets(comptOngl + 1).Cells(1, x).Value
                 'Ajout des noms à la listeBox
                miseEnForme.Colonnes.AddItem nomCol(0, x - 1)
            Next x
    End Sub
    Cordialement,

    Fyejumpy

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Par défaut
    Bon en fait j'ai vraiment trouvé, c'était vraiment tout bête il suffisait au lieu de rajouter 50 tests de mettre une ligne au début qui décoche l'ancien bouton activer.

    Voilà le code si ça peut aider quelqu'un :

    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
    Public WithEvents Le_toggle As MSForms.ToggleButton
     
     
    Private Sub Le_toggle_Click()
        'on créé un compteur de boutons activés
        comptCell = 15
        tabToggle(comptOngl).Le_toggle.Value = False
        'on vide les anciens résultat
         miseEnForme.Colonnes.Clear
        'on parcours le tableau de boutons
             For i = 0 To UBound(tabToggle)
                'On regarde si il y en a un d'activer
                If tabToggle(i).Le_toggle.Value = True Then
                    'On affecte le i du bouton activer au comptOngl pour la création des tableaux
                    comptOngl = i
                End If
             Next i
                For x = 1 To 34
                    'initialisation des noms des colonnes
                     nomCol(0, x - 1) = Sheets(comptOngl + 1).Cells(1, x).Value
                     'Ajout des noms à la listeBox
                     miseEnForme.Colonnes.AddItem nomCol(0, x - 1)
                Next x
    End Sub

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

Discussions similaires

  1. Changer d'image au click et une seule image sélectionnée
    Par Thewil dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 09/06/2009, 14h23
  2. Un seul ToggleButton actif à la fois
    Par Arnard dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 08/06/2009, 11h38
  3. Un Seul ToggleButton enfoncé dans un Gtk::ButtonBox
    Par camumu dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 27/03/2008, 20h10
  4. ne sélectionner qu'une seule ligne d'un SELECT
    Par le-stagiaire dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/04/2005, 11h52
  5. [MSSQL] Problème pour sélectionner une seule occurence
    Par Tinfolley dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/07/2004, 09h02

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