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écupérer l'OptionButton validé dans un UserForm [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut Récupérer l'OptionButton validé dans un UserForm
    Salut,

    Je pense que la question est élémentaire, mais j'ai beau cherché je ne trouve pas, ou alors je suis mauvais

    A partir de mon fichier excel, je lance une macro qui me génère un mail de status .... ca ca marche
    je voudrais en fait rajouté un prompt au lancement de cette macro pour proposer trois options, que je gèrerai ensuite pour générer un mail différent.

    J'ai créé un UserForm, dont l'image est en pièce pour vous donner une idée, c exactement ce que je veux, mais je ne sais pas comment le gérer en fait.

    Pas de soucis pour monter la fenêtre au lancement de ma macro:

    SubKSelection.Show

    mais aprés je bloque

    J'ai essayé des choses comme cela sur le bouton "valid":
    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 ValidChoice_Click()
     
        Dim choice As String
     
        If AF_Option.value = True Then
            choice = AF
        Else
        If AUK_Option.value = True Then
            choice = AUK
        Else
        If AD_Option.value = True Then
            choice = AD
        End If
        End If
        End If
     
        SubKSelection.Hide
     
    End Sub
    mais je ne suis pas sur, comment est-ce que ensuite je récupère cette valeur "choice" dans ma macro initiale qui a ouvert le user form?

    par avance merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu dois déclarer que ta variable choice est publique.

    Dans un module standard (Modules / Module1),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public choice As String
    Sub Test()
        SubKSelection.Show
        MsgBox "Votre choix : " & choice
    End Sub
    Dans le module de SubKSelection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ValidChoice_Click()
        If AF_Option.Value = True Then
            choice = "AF"
        Else
            If AUK_Option.Value = True Then
                choice = "AUK"
            Else
                If AD_Option.Value = True Then
                    choice = "AD"
                End If
            End If
        End If
        SubKSelection.Hide
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut
    merci pour ta réponse, j'avais effectivement zappé l'aspect "Public" de la déclaration de ma variable.

    J'ai modifié mon code suite à tes suggestions, et à chaque fois que remonte la MsgBox, le choix est " ", vide donc.
    Je pense que j'ai du louper autre chose

    pourtant j'ai bien vérifié les (name) de mes OptionButton et cela correspont bien au: AF_Option, AUK_Option et AD_Option

    je ne vois pas où j'ai pu manquer qqc!

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Tu n'as pas oublié d'enlever la déclaration de choice dans la procédure ValidChoice_Click() ?

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut
    Non, j'ai vérifié, elle n'est pas déclaré en double.

    J'ai en double cliquant sur le boutton Valid:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ValidChoice_Click()
        If AF_Option.value = True Then
            choice = "AF"
        Else
            If AUK_Option.value = True Then
                choice = "AUK"
            Else
                If AD_Option.value = True Then
                    choice = "AD"
                End If
            End If
        End If
        SubKSelection.Hide
    End Sub
    et dans mon module où je lance la macro de génération de mail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public choice As String
     
    Sub CreateSubKReportMail()
    'create the weekly report mail for the SubK
     
        SubKSelection.Show
        If choice = "AF" Then
        MsgBox "Votre choix : " & choice
        Else
    ......
    j'ai même rajouté un test pour afficher ou non le message, et quand je choisis AF, il n'apparait jamais.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Par défaut
    j'ai plus ou moins trouvé pourquoi ca plante

    en fait, je préparais une version de mon fichier pour l'attacher, j'ai donc enlever bcp de chose, et en essayant de reproduire avant de l'attacher, ça a fonctionné.

    J'ai remarqué en fait que dans mon module initial où je lance la génération du mail, j'ai plusieurs sub. En résumé, mon code se présente sous la forme:
    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
     
    Public choice As String
     
    Sub Toto ()
    ...
    End Sub
     
    Sub Titi()
    ...
    End Sub
     
    Sub CreateSubKReportMail()
    'create the weekly report mail for the SubK
    '- mandatory step before: Click on "Ungroup charts/pivot tables" button
     
        SubKSelection.Show
        If choice = "AF" Then
        MsgBox "Votre choix : " & choice
        Else
    ...
    End sub
    Quand j'enlève Titi et Toto, ça fonctionne correctement.

    Mais je ne sais pas pourquoi
    Ces deux sub n'appellent pas la variable choice pourtant. Est-ce que la déclaration doit être différente dans ce cas?

    Par avance merci

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

Discussions similaires

  1. Validation de choix dans un Userform et limitation du nombre de ces choix
    Par Cdandelion dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/03/2012, 07h55
  2. [XL-2007] récupérer une variable dans un userform
    Par danonino dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/06/2010, 09h02
  3. récupérer données table access dans userform word
    Par fixounete dans le forum VBA Word
    Réponses: 1
    Dernier message: 25/10/2009, 17h27
  4. Réponses: 0
    Dernier message: 10/08/2008, 19h05
  5. Réponses: 3
    Dernier message: 30/06/2008, 10h49

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