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 :

Contrôle Userform en variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut Contrôle Userform en variable
    bonjour à tous,

    Dans un Userform, j'ai plusieurs groupes d'option (avec boutons radio) dont je récupère l'état avec ce code :

    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
    Private Sub Btn_Validez_Click()
     
    '>> QUESTION 1 à 9
        Dim Ctrl As Control
     
        For Each Ctrl In Me.Reponse1.Controls
            If Ctrl.Value = True Then Worksheets("Feuil1").Range("B2") = Ctrl.Object.Caption
        Next Ctrl
     
        For Each Ctrl In Me.Reponse2.Controls
            If Ctrl.Value = True Then Worksheets("Feuil1").Range("B3") = Ctrl.Object.Caption
        Next Ctrl
     
     
     
    Etc......
    J'ai tenté de passer par une boucle (pour simplifier le code) pour mettre le nom du groupe d'option [Reponse] en variable tel que je l'ai réalisé ici et qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 11
            Me.Controls("Question" & i) = Worksheets("Feuil1").Range("C" & i + 1).Value
        Next i
    Et... impossible. A chaque fois, j'ai une erreur m'annonçant que ça ne fait pas partie des propriété de l'objet !!!

    Où est l'astuce ?

    Curt

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    je ne comprends pas ces 2 contradictions :
    1 -
    ...pour mettre le nom du groupe d'option [Reponse]...
    avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Me.Controls("Question" & i)..
    2-
    je l'ai réalisé ici et qui fonctionne :
    et
    ...impossible. A chaque fois, j'ai une erreur m'annonçant que ...
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  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
    et je dirais même que je comprend pas la question
    si le deuxieme code et là pour simplifier le premier, pourquoi

    se transforme-t-il en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Controls("Question" & i)

  4. #4
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonjour,

    le premier code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Ctrl In Me.Reponse1.Controls
            If Ctrl.Value = True Then Worksheets("Feuil1").Range("B2") = Ctrl.Object.Caption
        Next Ctrl
    ne fonctionne pas.... si je tente de remplacer Reponse1 par ("Reponse" & i) (bien évidemment, j'intègre celà dans une boucle). Est-ce à cause de l'utilisation de Crtl.value ou du groupe d'option ?

    Par contre, l'utilisation du second code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 11
            Me.Controls("Question" & i) = Worksheets("Feuil1").Range("C" & i + 1).Value
        Next i
    qui est là pour renseigner des cellules avec le mot Question1, Question2, etc fonctionne

    Donc la question est : Pourquoi ce qui fonctionne pour des cellule ne fonctionne pas pour un groupe d'option ?

    Bonne journée.
    Curt

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu veux utiliser le nom des farmes en incrémentant l'indice ?
    Peut être de la manière suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each Ctrl In Me.Controls("Reponse" & I).Controls
    il te faut faire une boucle supérieure pour boucler sur tes frames.

    Hervé.

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Sans me préoccuper du pourquoi et du comment, pour boucler sur tes optionButton de 1 à 13 selon une variable i :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim BoutonDoption As MSForms.OptionButton
     
    'blablabla
    For i = 1 To 13
    Set BoutonDoption = Me.Controls("Question" & i)
    'blablabla
    Next i
    EDIT : exemple à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim BoutonDoption As MSForms.OptionButton
    Dim Num As Integer
    For Num = 1 To 13
    Set BoutonDoption = Me.Controls("Question" & Num)
        BoutonDoption.Caption = "toto" & Num
    Next Num
    Set BoutonDoption = Nothing

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

Discussions similaires

  1. contrôle de de variable
    Par l.laurent60 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/07/2010, 09h12
  2. [Toutes versions] le nom de l'userform en variable
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/06/2010, 15h35
  3. userForm et variables
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2007, 14h41
  4. [Excel] - UserForm (Object variable not set)
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/02/2007, 11h10
  5. Adresser un contrôle par une variable
    Par zedude33 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/11/2006, 23h23

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