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 :

Afficher la description de chaque valeur d'une liste box en fonction d'une base de donnée [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Afficher la description de chaque valeur d'une liste box en fonction d'une base de donnée
    Bonjour à tous,

    Je suis bloqué sur une maccro et souhaite avoir de l'aide.

    Pour résumer, j'ai une maccro qui va tester le contenu d'une cellule sur une base de donnée en feuille 3, ouvrir une fenêtre et afficher en list_box les occurences se rapprochant de la valeur saisie.

    Jusqu'ici tout va bien. Puis lorsque je sélectionne une des valeurs proposées en liste box, la description correspondante s'affiche dans un champs (qui correspond à la colonne 2 de la base de donnée).

    Ma maccro tourne bien mais le souci, c'est qu'elle recherche à chaque fois à partir de la première ligne. Ors, je peux avoir des valeurs identique avec une description différente.

    Exemple:

    Base de donnée:

    (Valeur) Colonne A: A - B - C - D - C - E - C - C

    (Description) Colonne B: 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8

    Si je cherche la valeur "C", elle m'affichera toujours la description '3'

    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
    18
    19
     
     
    Private Sub LtBx_Liste_Change()
     
    Dim CEL As Range
     
    For Each CEL In Sheets("Database").Range("A1:A" & Sheets("Database").Range("A65536").End(xlUp).Row)
     
                If LtBx_Liste.Value = CEL.Value Then
     
                    Rech_Coulee.TtBx_Description.Value = CEL.Offset(0, 1).Value
     
                Else
     
                End If
     
    Next CEL
     
    End Sub
    Je ne sais pas tourner mon code pour qu'il reprenne la recherche à la ligne suivante et non du début.

    Merci à tous par avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour moh2ss,

    Je ne visualise pas exactement le fonctionnel de ton application.
    1. Souhaites-tu avoir la liste des valeurs correspondantes dans ton UserForm directement ?
    2. Souhaites-tu pouvoir passer à la description suivante dès qu'une première occurrence est trouvée ?

    Pour le premier cas, je te propose de lire ce sujet dans lequel je propose la fonction "FindAll" du net => http://www.developpez.net/forums/d14...m/#post8069132
    Pour le second cas, je te propose d'utiliser la fonction Find en effectuant une recherche selon la dernière cellule trouvée.

    N'hésite pas à revenir vers moi.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour Kimy_Ire,

    Merci pour ta réponse ,

    Ma macro se découpe en deux phases:

    - 1: Après double clic sur la cellule X, si la valeur exacte n'est pas trouvée dans "Database", le userform s'ouvre et ajoute toute les occurrences se rapprochant dans la liste box.

    - 2: Si je sélectionne une des occurrences de la liste box, la description doit s'afficher dans un champs description

    le soucis, c'est que les occurrences peuvent être identiques avec des descriptions différentes.

    Ma deuxième idée:

    Faire une deuxième liste box description (invisible) où j'ajoute la description en même temps que les occurrences trouvées.

    Puis j'affiche la description correspondante (LtBx_Liste.selected(i) ===> LtBx_Description.item(i))

    Mais là encore, je bloque sur la gestion des numéros d'item ou index.

    Un exemple du code testé:

    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
    rivate Sub LtBx_Liste_Change()
     
    'Dim i, Nb_Liste As Integer
     
    Nb_Liste = LtBx_Liste.ListCount
     
    For i = 0 To Nb_Liste
     
        If LtBx_Liste.Selected(i) = True Then
     
            Rech_Coulee.TtBx_Description.Value = LtBx_Description.Item(i).Value
     
        Else
        End If
     
    Next i

    Désoler pour le flou occasionné

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bingo!

    J'ai corrigé mon erreur.
    Ma deuxième idée a l'air de fonctionner même si c'est pas forcément la meilleur:

    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
    18
    Private Sub LtBx_Liste_Change()
    Dim CEL As Range
     
    Nb_Liste = LtBx_Liste.ListCount
     
    For i = 0 To Nb_Liste
     
         If LtBx_Liste.Selected(i) = True Then
     
            Rech_Coulee.TtBx_Description.Value = LtBx_Description.List(i)
     
         Else
     
         End If
     
    Next i
     
    End Sub
    Mon erreur:LtBx_Description.Item(i) au lieu de LtBx_Description.List(i)


    Merci encore!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/01/2015, 18h14
  2. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  3. Réponses: 2
    Dernier message: 25/05/2012, 20h55
  4. Afficher une liste déroulante en fonction d'une autre liste
    Par infoges dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/04/2010, 12h59
  5. Réponses: 12
    Dernier message: 17/08/2009, 06h27

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