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 :

Listes dépendantes dans ComboBox de Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Bonjour à tous!

    Je suis en train de développer (dans la limite de mes capacités) une interface Userform pour la saisie de données dans une table excel.

    Je voudrais faciliter et en même temps contrôler cette saisie au maximum. MEs utilisateurs doivent localiser chacune des entrées en selectionant le Pays, puis la Region, puis le District, etc. dans lequel ils se situent.

    J'aimerai donc créer des listes dependantes d'un ComboBox à l'autre faisant référence à des listes standard préétablie et stocker dans une des feuilles de mon fichier xls.

    De sorte que si l'utilisateur choisi "France", seules les regions de France lui soient proposées dans le deuxième ComboBox.

    Je ne sais pas si j'ai été clair...?

    Merci en tous cas à ceux qui pourront m'aider!

    Alors.

    J'ai fais en sorte que la valeur choisie ("France") dans le ComboPays soit inscrite dans un range défini "Admin1_Dep_List".

    J'ai ensuite tenté de réutiliser cette valeur dans une formule OFFSET destinée a définir la liste des Régions ayant pour Pays "France", formule que j'ai placée dans le RowSource du ComboRegion:

    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OFFSET(lev1top,MATCH("Admin1_Dep_List").Value,lev1,0),1,COUNTIF(lev1, countif("Admin1_Dep_List").Value,1)
    Et plusieurs autres variantes sans succès...

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    C'est beaucoup plus simple que ça...du moins si tes listes sont bien structurées.
    L'idée, tu nomme ta liste de pays "MesPays" et dans RowSource de ta combobox tu mets MesPays.
    Tu nommes également toutes tes listes de régions, communautés, etc selon leur pays.
    Il te reste à mettre un évènement sur Change de ta combobox pays pour adapter la rowsource que, pour l'exemple ci-dessous, j'ai nommé CBSousPays, le userform etant USpays et la combo qui récupère le pays CBpays.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CBpays_Change()
     
    UFpays.CBsousPays.RowSource = CBpays.Value
     
    End Sub
    J'espère avoir été clair...sinon voici un tout petit fichier exemple.

    A+

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Salut Fvandermeulen et merci pour ta réponse!

    L'idée est excellente mais me pose un problème: je tente en effet d'automatiser au maximum le fonctions (l'outil étant destiné à des utilisateur très peu formés) et ne peux créer par avance toutes ces listes

    Serait-il possible selon toi de structurer une liste de type:

    Pays A --> District AA --> Sous-district AAA --> Village AAAA...
    Pays A --> District AB
    Pays A --> District AC
    Pays B --> District BA

    Etc.

    ... (puisque c'est sous cette forme que je les trouve habituellement) de manière automatique, pour atteindre le résultat que tu proposes?

    Il m'est malheureusement impossible d'effectuer cette structuration en amont et pour l'ensemble des pays concernés...

    Si cela pouvait être fait automatiquement, je serai ensuite en mesure d'automatiser le reste en suivant l'exemple que tu m'as donné!

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Dans ce cas il faudra alors adapter les lignes de début et de fin de la RowSource selon les pays, ç'est un peu moins simple mais ça doit le faire, je penche d'ores et déjà pour la méthode .Find
    Essaie de ton côté (du moins si je suis clair) je reviens vers toi dès que possible.
    A+

  5. #5
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Après reflexion ça me parait très compliqué, parce que je ne peux pas non plus connaitre par avance le nombre de district, sous districts, etc. dans chaque cas...

    Voila en fichier attaché la manière dont le problème avait été résolu sur Excel.


    Edit: messages croisés, je vais me pencher sur ce que tu proposes déjà.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Voici ce qu'on peut avoir avec les données de ton fichier à toi de voir sur base du "nouveau"

    Par contre la liste Sat n'a pas l'air complète...

    A+

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 51
    Par défaut
    Alors je reviens aux nouvelles.

    J'ai défini le RowSource de mon Combobox_Région a l'aide de cette formule et ça marche !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RowSource = OFFSET(lev1top,MATCH(Admin1_Dep_List,lev1,0),1,COUNTIF(lev1,Admin1_Dep_List),1)
    Par contre (ca paraissait trop beau ), la formule ne s'applique que lors de la première selection. Si je change mon entrée pays, le liste des région reste celle précédemment "calculée".

    Y'a-t-il une fonction "Refresh" ou quelque chose du style à y associer?

    NB: j'ai aussi essayé d'insérer cette formule dans la partie Combobox.Pays puis Combobx.Region Change () du programme --> mais ça me retourne un message d'erreur...

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2011, 14h59
  2. Réponses: 2
    Dernier message: 15/09/2006, 19h03
  3. [VBA E] ajout conditionnel dans la liste d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2006, 20h28
  4. [vba-e] Liste de choix dans ComboBox
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/07/2006, 15h53
  5. Réponses: 4
    Dernier message: 17/03/2006, 14h39

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