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 :

Liste Combobox d'après une autre combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut Liste Combobox d'après une autre combobox
    Bonjour à tous

    Je cherche à alimenter un combobox suivant le choix d'une première combobox

    1) dans Usf_initialize j'alimente la première comboxbox avec une plage de cellules fixes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maplage = "User_Prog!E38:E42"
        ComboBox1.RowSource = maplage
     
    ComboBox1.Style = fmStyleDropDownList
    ComboBox1.ListIndex = 0
    2) toujours dans Usf_initialize j'alimente la deuxième comboxbox depuis une base de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim i As Integer
     
    For i = 15 To Sheets("B&D").Range("T65000").End(xlUp).Row
      ComboBox2 = Sheets("B&D").Range("T" & i)
      If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("B&D").Range("T" & i)
    Next i
     
    ComboBox2.Style = fmStyleDropDownList
    ComboBox2.ListIndex = 0
    Jusqu’ici tout va bien

    3) dans ComboBox1_Change

    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
     
     
    Dim Comb1 As Variant
    Comb1 = ComboBox1.Value  'je récupère la valeur de la combobox1
     
     
     
    If Comb1 = "Années" Then
     
    Dim i As Integer
     
    For i = 15 To Sheets("B&D").Range("T65000").End(xlUp).Row
      ComboBox2 = Sheets("B&D").Range("T" & i)
      If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("B&D").Range("T" & i)
    Next i
    ComboBox2.Style = fmStyleDropDownList
    ComboBox2.ListIndex = 0
    Ensuite je souhaiterais faire de même pour le moi, le jour etc (sélectionnable dans la combo1) mais le problème c'est que j'ai une erreur 380
    "Impossible de définir la propriété Value. Valeur de propriété non valide"
    Qui pointe sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox2 = Sheets("B&D").Range("T" & i)
    Si quelqu'un avais une idée car j'ai testé différente possibilités qui soit me provoque une erreur 380 ou bien une erreur 70 "Accès refusé"

    Cordialement Eric

  2. #2
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

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

    Je vois plusieurs problèmes probables avec ce genre de manipulation, notamment dans ta ligne que tu indiques en erreur :

    - L'utilisation de "ComboBox2" devrait être suivi de ".value", ".list", ou autre selon ce que tu veux en faire
    - L'utilisation d'un range à la place d'une valeur de cellule peut poser problème. Si tu tentes d'accéder à la valeur de la cellule (et non pas à ta cellule complète, comprenant sa valeur, ses méthodes et ses paramètres), je te conseille très fortement d'utiliser ".value" ou ".text" selon ce que tu souhaites récupérer

    Cdt,

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut Précisions
    Sans tester, je dirai ceci :
    La propriété par défaut d'un objet Combo doit être Value.
    Ici tu veux utiliser la méthode AddItem (que tu utilises bien sur la ligne en dessous).
    Donc précise la méthode :
    ComboBox2.AddItem Sheets("B&D").Range("T" & i)

    De manière générale, il est plus propre (plus lisible et moins source de souci) de préciser la propriété et la méthode, même si ce sont celles par défaut.

    Autre point : la plage de sheets("B&D") qui s'étend de T15 à Range("T65000").End(xlUp) contient-elle des cellules vides ?
    Sinon, remplace : Sheets("B&D").Range("T65000").End(xlUp).Row
    par : Sheets("B&D").Range("T15").End(xldown)

Discussions similaires

  1. [PowerShell] Combobox modifiée par une autre Combobox
    Par ptit_poulet dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 23/02/2015, 09h38
  2. Remplir une comboBox à partir d'une autre combobox
    Par karnass dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 13/03/2013, 15h22
  3. Combobox qui définit une autre combobox
    Par veriecherie dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 06/06/2009, 03h44
  4. Réponses: 4
    Dernier message: 04/05/2009, 12h12
  5. ADO remplir combobox d'aprés une autre combobox
    Par frack dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/02/2008, 02h29

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