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 :

repérer le bouton d'option activé dans un userform [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut repérer le bouton d'option activé dans un userform
    Bonjour,

    J'ai créé un userform avec des boutons d'option en nombre variable. Ils sont nommés de façon logique (optspe suivi d'un numéro renvoyant à une colonne particulière d'une feuille de mon fichier). Quand on clique sur un bouton d'option, je voudrais que le contenu d'une listbox apparaisse en fonction du bouton sélectionné. Je sais faire en sorte que, à l'ouverture, le premier bouton soit sélectionné et la listbox complétée, mais je ne sais pas comment gérer la suite. j'ai bien écrit le code suivant :
    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 l As Integer
    Dim bouton As String
     
    l = 3
    Do While Sheets("temp").Cells(4, l) <> ""
        If Sheets("temp").Cells(4, l) = 1 Then  'là, je teste une condition pour savoir quelles colonnes de mon fichier ont permis de construire un bouton d'option
            bouton = "optspe" & l  'ici, je récupère le nom du bouton d'option
            If Me.Controls(bouton) = True Then
                'remplissage d'une listbox
                Exit Do
            End If
        End If
    l = l + 1
    Loop
    le problème est que je ne sais pas où écrire ce code. il me faudrait un truc du genre "optionbutton1_Click()", mais adressé à l'ensemble des boutons d'option du formulaire. J'espère que mes explications sont assez claires et merci pour vos conseils.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Il est possible de récupérer le nom de l'élément coché avec
    et de lancer une macro à partir d'une variable string avec
    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        Dim s As String
        s = "d" & "bp(" & 4 & ")"
        Application.Run s
    End Sub
     
    Sub dbp(n As Long)
        Debug.Print "dbp " & n * 2
    End Sub
    Cordialement.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Merci pour la réponse, mais je ne suis pas sûr de bien comprendre. Ma macro permet déjà de récupérer le nom du bouton actif, c'est ce que me permettrait à priori en plus propre de faire le bout de code Me.activecontrol.name. ensuite, le code suivant me permettrait de lancer une macro dépendant du bouton d'option coché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim s As String
    s = Me.ActiveControl.Name & "Click"
    Application.Run s
    mais où dois-je écrire ce code pour qu'il se lance dès qu'un des boutons d'option est coché ? Si je le mets juste dans une macro classique, il ne se lancera pas tout seul à priori ?

    merci de me confirmer si je suis sur la bonne voie

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    J'ai l'impression que je ne comprends pas votre problème.
    Un code peut être attaché au clic de chaque bouton.
    Exemple en attaché.
    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
    Private Sub OptionButton1_Click()
        Dim myArray() As String
        myArray = Split("AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|", "|")
        ListBox1.List = myArray
    End Sub
     
    Private Sub OptionButton2_Click()
        Dim myArray() As String
        myArray = Split("GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|", "|")
        ListBox1.List = myArray
    End Sub
     
    Private Sub OptionButton3_Click()
        Dim myArray() As String
        myArray = Split("MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|", "|")
        ListBox1.List = myArray
    End Sub
     
    Private Sub UserForm_Initialize()
        Me.OptionButton1 = True
        OptionButton1_Click
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Bonjour

    Le problème de ce code (OptionButton1_Click), c'est qu'il nécessite de connaitre le nom et le nombre de boutons d'option au départ, or dans mon cas, ces deux éléments sont inconnus et dépendent de saisies précédentes et variables. J'ai bien uen solution avec un CommandButton avec la procédure suivante :
    - le formulaire est appelé et il est créé un nombre variable de boutons d'option
    - l'utilisateur clique sur un des boutons d'options
    - il clique ensuite sur le CommandButton
    - une macro repère le bouton coché et agit en conséquence

    Mais j'aurais aimé une procédure ne nécessitant pas de CommandButton avec un lancement de la macro dès qu'un bouton d'option quelconque est cliqué

  6. #6
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Dans ce cas il serait peut-être bon de passer par un module de class Perso pour la gestion des options buttons.

    Qwazerty à un billet à ce sujet : https://www.developpez.net/forums/d2...o-automatique/
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    C'est exactement cela ! Par contre, il va falloir que je m'approprie le code en y ajoutant des éléments variables, mais ça devrait pouvoir le faire normalement.
    Merci !

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Très bien. J'ajouterais cependant que comme le formulaire comportera au moins 1 bouton-option, il devrait être possible de lui donner un nom "fixe" et donc de le cliquer à l'ouverture.
    Cordialement.

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

Discussions similaires

  1. bouton enregistrer et réduire dans un userform vba
    Par manon2015 dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 25/08/2015, 17h39
  2. Réponses: 5
    Dernier message: 09/10/2014, 11h23
  3. execution et l'option réuire dans un userform
    Par adilissimo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2007, 12h18
  4. Insertion bouton d'option dans un formulaire
    Par Le Rebel dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2006, 09h36
  5. Réponses: 6
    Dernier message: 07/02/2006, 21h06

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