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 :

Select Case et boutons d'option


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut Select Case et boutons d'option
    hello !

    Question un peu théorique.

    J'ai une macro - qui fonctionne nickel avec des cases à cocher et des If Then Else - que je souhaite modifier en lui faisant une nouvelle interface, qui contient 6 boutions d'option destinés à sélectionner une version particulière du document PowerPoint produit par la macro.

    J'aimerais récupérer le nom du bouton sélectionné pour en faire un argument pour un Select Case.

    Pour le moment mon idée est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select case MonInterface.NomDuGroupeDeBoutons.Selected
        case "bouton1"
        ...mon code ici...
        case "bouton1"
        ...mon code ici...
    end select
    mais je suis presque certain que ça foire !!

    Quelle est la syntaxe à employer ??

    D'avance, merci pour vos suggestions

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Il ne peut y avoir qu'un Case "bouton1"; l'autre devrait s'appliquer à un autre nom, "bouton2", par exemple.

    En plus, il faut que le type de MonInterface.NomDuGroupeDeBoutons.Selected soit Variant/String ou String. Si c'est un Boolean, ça ne fonctionnera pas.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    utilise une variable
    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
     
    Private Sub CommandButton1_Click()
    Select Case Var
    Case 1
    mon code 1
    Case 2
    mon code 2
    Case 3
    mon code 3
    End Sub
     
    Private Sub OptionButton1_Click()
    Var = 1
    End Sub
    Private Sub OptionButton2_Click()
    Var = 2
    End Sub
    Private Sub OptionButton3_Click()
    Var = 3
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux tester ça
    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
    Private Sub CommandButton1_Click()
        For Each Check In Me.Controls
            If TypeName(Check) = "OptionButton" Then 'pas obligatoire mais peut éviter de passer d'autre contrôles en "revue"
                Select Case True
                    Case Me.OptionButton1
                        MsgBox "OptionButton1"
                        Me.OptionButton1 = False
                    Case Me.OptionButton2
                        MsgBox "OptionButton2"
                        Me.OptionButton2 = False
                    Case Me.OptionButton3
                        MsgBox "OptionButton3"
                        Me.OptionButton3 = False
                    Case Me.OptionButton4
                        MsgBox "OptionButton4"
                        Me.OptionButton4 = False
                End Select
            End If
        Next
    End Sub
    Mais tu ne dis pas si tes contrôles sont sur une feuille de calculs ou dans une userform.
    Bonne soirée

    Edit
    Déclare Check as control

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Suggestions...

    no 1:
    Moi je mettrait la valeur du bouton cliqué dans une variable globale privée.

    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
    Private ValeurOption As String
     
    Private Sub OptionButton1_Click()
        ValeurOption = OptionButton1.Caption
    End Sub
     
    Private Sub OptionButton2_Click()
        ValeurOption = OptionButton2.Caption
    End Sub
     
    Private Sub OptionButton3_Click()
        ValeurOption = OptionButton3.Caption
    End Sub
     
    Private Sub MonBouton_Click()
        Select Case ValeurOption
          Case "Yeux bruns"
            ' Dis bonjour
          Case "Cheveux courts"
            ' Un petit shampoing suffit...
          Case "Porte des lunettes"
            ' Écris plus gros
          Case Else
            ' Si aucun, va faire un tour...
        End Select
    End Sub
    Et s'il y a plus que trois ou quatre boutons d'option, j'opterais pour une ListBox à choix unique (valeur par défaut de la propriété Multiselect qui est 0 - fmMultiSelectSingle). La valeur de l'item d'une ListBox étant plus facile à attraper.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub MonBouton_Click()
        Select Case ListBox1.Text  ' Grosse différence !
          Case "Yeux bruns"
            ' Dis bonjour
          Case "Cheveux courts"
            ' Un petit shampoing suffit...
          Case "Porte des lunettes"
            ' Écris plus gros
          Case Else
            ' Si aucun, va faire un tour...
        End Select
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello zaza, 'a te fais rien que je retienne ton idée, mais en modifiant un peu ?

    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
    Private Sub OptionButton1_Click()
    macro ActiveControl.Name
    End Sub
     
    Private Sub OptionButton2_Click()
    macro ActiveControl.Name
    End Sub
     
    Private Sub OptionButton3_Click()
    macro ActiveControl.Name
    End Sub
     
    Private Sub OptionButton4_Click()
    macro ActiveControl.Name
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub macro(LeCheck As String)
        Select Case True
            Case Me.Controls("OptionButton1")
                MsgBox "OptionButton1"
            Case Me.Controls("OptionButton2")
                MsgBox "OptionButton2"
            Case Me.Controls("OptionButton3")
                MsgBox "OptionButton3"
            Case Me.Controls("OptionButton4")
                MsgBox "OptionButton4"
        End Select
    End Sub
    Mais on devrait pouvoir simplifier si les optionbuttons étaient dans un cadre (frame) non ?
    Bonne journée
    (dis donc, tu te lèves bien tôt pour un dimanche ! )

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. Réponses: 6
    Dernier message: 07/05/2014, 09h04
  3. [WD-2003] Case à cocher et Bouton d'option
    Par Xorbane dans le forum Word
    Réponses: 8
    Dernier message: 18/05/2010, 23h39
  4. [MFC] bouton avec option "accept files"
    Par bigboomshakala dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2004, 16h15
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

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