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 :

Changer La liste d'un combobox avec OptionButton


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
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 112
    Par défaut Changer La liste d'un combobox avec OptionButton
    Je m'explique j'ai une liste qui se définit avec un userform_initialize avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
    Me.ComboBox1.RowSource = ("Analyse!A5:A6518")
    Référence.Image1.Picture = LoadPicture("D:\Users\s580385\Documents\My Pictures\Snecma.jpg")
    End Sub
    Par la suite j'ai mis deux OptionButton, afin de modifier la liste. la liste est définit dans une autre feuille donc j'ai mis ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub OptionButton1_Click()
     
    Dim DernLign As Long
     With Sheets("List Réf")
      plage = Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row).Address
     End With
    Me.ComboBox1.RowSource = ("List Réf!" & plage)
    End Sub
    Je voudrais que lorsque je clique sur ce bouton la liste se modfie. Je ne sais pas si il faut décharger l'ancienne avant mais je n'arrive pas a la modifier !
    J'ai le message d'erreur suivant : Erreur de compilation : Membre de méthode ou données introuvable
    Quelqu'un aurait il une idée ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 112
    Par défaut
    A priori le problème venais du nom de ma page. Car en rentrant le range manuellement, j'ai réussi.
    Par contre j'ai toujours le soucis au niveau de ma plage ...
    Je penses un problème de définition de variable !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Private Sub OptionButton1_Click()
    Dim DernLign As Long
    Dim plage As Range
     With Sheets("List_Réf")
      plage = Range("A3:A" & .Range("A" & Rows.Count).End(xlUp).Row)
     End With
    Me.ComboBox1.RowSource = ("List_Réf!" & plage)
    End Sub
    Qu'en pensez vous ?

  3. #3
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour,

    Très bonne idée le With pour indiquer la feuille mais si tu ne mets pas de .Range(), mais juste Range, le With est inutile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("List Réf")
      plage = .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row).Address
    End With
    De plus,
    plage = va être une valeur
    Set plage = va être une plage (Range)

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 112
    Par défaut
    Effectivement petite erreur de ma part merci antony !
    Cependant j'ai rajouté le set plage mais il me sort toujours un incompatibilité de type ...
    A tu une idée ?

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Question, plage c'est quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage = Range("A3:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    Si tu trouve la réponse tu solutionne ton problème

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 112
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage = Range("A3:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    C'est la nouvelle plage que je veux définir en tant que nouvelle liste de mon combobox

    Bonjour Marcel,

    Merci pour tes conseils, je suis un peu débutant en la matière et j'apprend au fur et a mesure et beaucoup grace aux personnes de ce forum +++
    J'ai essayé ton code cependant j'obtiens toujours un incompatibilité de type sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.RowSource = plage

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    J'ai bien compris.

    Je ne l'ai pas testé mais as-tu essayé le code proposé?

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2016
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 112
    Par défaut
    Oui je l'ai essayé et j'obtiens la même erreur, incompatibilité de type.

    Merci de ton aide

  9. #9
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Il est tout de même important d'avoir les bases du dev pour se lancer....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.RowSource = plage
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.RowSource = plage.Address

  10. #10
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut et Bonjour au Forum,

    Je crans qu'il y ait redondance.

    Essaie plutôt (avec plus de rigueur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim DernLign As Long
    Dim plage As Range
     
    With ThisWorkbook.Worksheets("List Réf")
            DernLign = .Cells(.Rows.Count, 1).End(xlUp).Row
            Set plage = .Range("A1:A" & DernLign)
    End With
    ComboBox1.RowSource = plage
    'libération de la variable
    Set plage = Nothing
    Un conseil, nomme les contrôles de ton formulaire en les préfixant (Cbx_, Txt_...)

    exemple : Cbx_macombo

    Et n'hésite pas revenir

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

Discussions similaires

  1. VBNet : Remplir combobox avec liste fichier
    Par biquet dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/01/2011, 16h18
  2. changer la liste de combobox en fonction de la précedente
    Par amine2613 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2009, 16h14
  3. Réponses: 1
    Dernier message: 18/01/2007, 00h28

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