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 :

VBA - Formulaire de recherche en cascade


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
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut VBA - Formulaire de recherche en cascade
    Bonjour à tous,
    Je vous joins mon fichier test, qui contient des données non réelles (pour des raisons de confidentialités). Pour me permettre de faire la bascule entre le fichier teste et le classeur original, j'ai fait une mise en page quasi identique.

    Je des difficultés à créer un formulaire en VBA qui permettrait aux utilisateurs de trouver facilement les coordonnées d'une cellule sur les différentes feuilles de calcul de mon fichier.

    Voici comment il devra procéder :
    1. Dans le formulaire, nous aurons un premier champ de liste déroulante avec tous les N° de version. Toutefois, il faudrait que dans cette liste déroulante, il faut que chaque valeur soit unique (donc pas d'apparition de doublon).
    2. Lorsqu'on à choisi le N° de version, il faudrait une seconde liste déroulante (ou liste de choix) avec les notes de changements correspondantes aux notes de version. Par exemple :
    • Note de version 1 => A, B, C, D, E
    • Note de version 1a => F
    • Note de version 2 => A, B

    Les notes de changements sont uniques par de numéros de version. Ainsi le A de la note de version 1 est différente du A de la note de version 2.

    Une fois que ces deux variables sont connues, excel peut déterminer un numéro de ligne. Par exemple, je choisi le N° Version 1 avec la Note de Changement D = je suis sur la ligne 6.

    3. Dans une dernière liste déroulante, j'aimerais choisir une date. Il faut que la liste des dates soit l'une de celles qui sont stockées dans la ligne 2 du fichier excel. Elles sont de type jj/mm/aaaa mais j'affiche uniquement le jour sur la feuille de calcul.
    Prenons par exemple la date du 20/01/2016, nous sommes donc sur la colonne W.

    Ce que doit faire le VBA, c'est mettre en surbrillance la ligne 6 et la colonne W choisies précédemment. C'est tout

    Merci de votre aide, je reste à disposition.
    Baptiste Kerdraon.

    Mon fichier test :
    Aide_excel.xlsx

  2. #2
    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 : 67
    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
    Bonjour Horusbk,

    Bienvenu sur le Forum.

    Si j'ai bien compris
    Alimentation de listes de choix déroulantes (Combobox) en cascade. Classique.
    Recherche d'une date. Classique
    Recherche de la cellule dont la couleur de fond va changer. Possible.

    Ma question : y a-t-il un code pour cette couleur Rouge, Vert, Orange...?

    Mais avant tout, même si j'ai la solution, il serait plus constructif pour toi de chercher
    - comment alimenter des Combobox en cascade
    - comment retrouver une date (attention aux arguments Lookat, Lookin..)

    Reviens déjà avec cette base.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut
    Bonjour MarcelG,

    En effet, je pensais passer par des combobox à travers un userform pour réaliser ce formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    ComboBox1.Clear
    ComboBox1.List = Application.Transpose(Range("num_version"))
    ComboBox2.Clear
    End Sub
    Puis pour remplir la seconde combobox je mettrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change() 'Combobox numero de version
    ComboBox2.Clear
    Dim note_version As String
        ComboBox2.List = Application.Transpose(Range("note_version"))
    End Sub
    Cependant je ne sais pas comment comment :
    1. Enlever les doublons de combobox 1
    2. Lier les numéros de version aux notes de version (sachant que je voudrais quelque chose d'automatique si de nouvelles lignes devaient apparaître dans mon excel).

    Pour récupérer les dates je pensais à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Range("D2", .Cells(2, Columns.Count).End(xlToRight))
                Me.ComboBox2.AddItem
    >> A partir de D2 et pour toute la ligne il récupère les dates et les met dans combobox2

    Par contre, là où je n'en ai aucune idée c'est comment croiser les deux champs.

    Ma question : y a-t-il un code pour cette couleur Rouge, Vert, Orange...?
    C'est une mise en forme conditionnelle :
    1 = rouge
    2 = orange
    3 = vert
    Dans notre fichier ça nous permet de donner des états d'avancement à des dossiers en cours de modifications.

    Je reste à disposition, cordialement.
    Baptiste Kerdraon.

  4. #4
    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 : 67
    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
    Plouf! Plouf!

    Une chose à la fois et dans l'ordre.
    Le code que tu proposes ne correspond pas à la gestion de Combobox en cascade.

    De quoi s'agit-il?
    En fonction du choix effectué dans ta première Combobox Cbx_1, la liste des items (ou choix) de la seconde Cbx_2 sera modifiée.
    C'est ce que tu cheches. Non?
    Pour moi, la seule manière réside à ajouter dans cette dernière autant d'items "en phase" (à traduire en VBA ) avec ta 1ère Combobox.
    Pour ce faire, c'est l'évènement Change de Cbx_1 qui va gérer. Ce qui est logique.

    Sommes-nous d'accord sur ce principe?

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut
    Bonjour,

    Sommes-nous d'accord sur ce principe?
    Oui, c'est un bout de code que j'ai trouvé sur le web (le dernier) et pour les deux premiers que j'ai essayé de coder.

    En fonction du choix effectué dans ta première Combobox Cbx_1, la liste des items (ou choix) de la seconde Cbx_2 sera modifiée.
    C'est ce que tu cheches. Non?
    Tout à fait !

    à ajouter dans cette dernière autant d'items "en phase" (à traduire en VBA)
    Qu'est-ce que c'est "en phase" ?

    Merci beaucoup de ton aide. Cordialement,
    Baptiste.

  6. #6
    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 : 67
    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,

    OK
    C'est volontairement que j'ai écrit "en phase" entre cotes et "(Traduire en VBA)
    Cela signifie que
    Pour enrichir ta 2ème Combobox, tu vas considérer toutes les notes (colonne B)...
    ...qui vont correspondre au n° de version que tu auras choisi dans ta 1ère Combobox (issue de la colonne A)

Discussions similaires

  1. [AC-2013] Formulaire de recherche (VBA) basé sur plusieurs tables
    Par Defaultuser01 dans le forum IHM
    Réponses: 21
    Dernier message: 28/04/2014, 13h06
  2. [Toutes versions] Formulaire de recherche de fichier dans un dossier VBA Excel
    Par azizabdel84 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2011, 22h09
  3. Réponses: 2
    Dernier message: 19/07/2007, 10h09
  4. [SQL]vs[VBA] dans formulaire de recherche
    Par alex.a dans le forum Access
    Réponses: 3
    Dernier message: 28/07/2006, 16h20

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