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 :

Correspondance ligne sélectionnée dans une Listbox -> ligne dans feuille de calcul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut Correspondance ligne sélectionnée dans une Listbox -> ligne dans feuille de calcul
    Bonjour,

    J'ai adapté à mes besoins la base d'un fichier exemple de J.Boisgontier , cela afin de faire des recherches par mot clef dans une base.


    Le mode de recherche fonctionne parfaitement, dans le formulaire un Label est utilisé pour renvoyer la valeur LRow qui correspond à la ligne que sélectionne l'utilisateur dans la Listbox.



    Dans mon fichier ci-joint, je n'arrive pas retourner / afficher le numéro de la ligne dans l'onglet ("BD) correspondante au choix de l'utilisateur cliqué dans la Listbox.

    Par exemple, si l'utilisateur cherche 'chat' alors LRow devrait afficher : 4 mais rien ne s'affiche


    J'ai besoin de récupérer le numéro de la ligne de la sélection faite par l'utilisateur dans la Listbox, cela afin de pouvoir modifier les données directement depuis les textboxes du formulaire.

    Pouvez vous m'aider svp ?

    Merci à vous,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, le numéro de ligne ne s'affiche pas car la ligne "LRow.Caption = L.Row" est placée à l'intérieur de la boucle "Do While" qui recherche des correspondances entre les données des textboxes et celles de la colonne correspondante dans "Tableau1". Si aucune correspondance n'est trouvée, la boucle se poursuit jusqu'à la fin des données de la colonne, mais dans ce cas, la ligne "L" sera Nothing et la ligne "LRow.Caption = L.Row" ne sera pas exécutée.Donc tu sors LRow.Caption = L.Row de la boucle et tu le places juste après Loop While...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Salut,

    Au lieux d'utiliser Excel pour ce qu'il ne sais pas faire (base de données), es-tu au courrant que tu peux créer une base de données MS Access via ADO ?

    Meme si la creation de la base / tables / relations est un petit peut casse-bonbons, je te garantie que son exploitation sera autrement plus simple que les tableaux structurés.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Salut,

    Au lieux d'utiliser Excel pour ce qu'il ne sais pas faire (base de données), es-tu au courrant que tu peux créer une base de données MS Access via ADO ?

    Meme si la creation de la base / tables / relations est un petit peut casse-bonbons, je te garantie que son exploitation sera autrement plus simple que les tableaux structurés.
    Encore faut-il savoir s'en servir
    Pour un petit projet pas trop complexe Excel fait très bien l'affaire.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 122
    Par défaut
    Bonjour Franc
    Dans ta procédure Listbox_body_Click supprime le Else et ton numero de ligne s'affichera

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Citation Envoyé par Franc Voir le message
    Encore faut-il savoir s'en servir
    Pour un petit projet pas trop complexe Excel fait très bien l'affaire.
    Entre:
    1) La gestion des clefs / relations sous Excel, c'est casse-couilles
    2) La création des tables / relations via ADO, c'est casse-couilles (mais c'est du one-shot).

    Pas convaincu qu'une solution pure Excel soit avantageuse.

    Et pour être franc, développer, c'est aussi ne pas rester sur ses acquis.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    Voici mon fichier j'avais oublié de l'attacher lors de mon précédent post.

    Pour l'instant la correspondance entre la ligne sélectionnée dans la Listbox et la ligne correspondante dans la feuille de calcul ("BD") ne fonctionne pas.


    Je vous remercie pour votre aide,
    Fichiers attachés Fichiers attachés

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    Citation Envoyé par Franc Voir le message
    Salut, le numéro de ligne ne s'affiche pas car la ligne "LRow.Caption = L.Row" est placée à l'intérieur de la boucle "Do While" qui recherche des correspondances entre les données des textboxes et celles de la colonne correspondante dans "Tableau1". Si aucune correspondance n'est trouvée, la boucle se poursuit jusqu'à la fin des données de la colonne, mais dans ce cas, la ligne "L" sera Nothing et la ligne "LRow.Caption = L.Row" ne sera pas exécutée.Donc tu sors LRow.Caption = L.Row de la boucle et tu le places juste après Loop While...
    J'ai fait ceci :
    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
    20
    21
    22
                Do
                    'Me.TextBox2.Text = UCase(Cells(L.Row, "A"))
                    'If Cells(L.Row, "B") <> TextBox3.Text Or Cells(L.Row, "C") <> TextBox4.Text Or Cells(L.Row, "D") <> TextBox5.Text Or Cells(L.Row, "E") <> TextBox6.Text Or Cells(L.Row, "F") <> TextBox7.Text Then
     
                    If Cells(L.Row, "B") <> TextBox3.Text Or Cells(L.Row, "C") <> TextBox4.Text Or Cells(L.Row, "D") <> TextBox5.Text Or Cells(L.Row, "E") <> TextBox6.Text Then
     
                        Set L = .FindNext(L)
     
                        Else
     
    '                    LRow.Caption = L.Row
    '                    ligne_recherchée = L.Row
                        Exit Sub
     
                    End If
     
                Loop While Not L Is Nothing And L.Address <> Deb
     
                LRow.Caption = L.Row
                ligne_recherchée = L.Row
     
            End If

    L'affichage de la ligne est effectivement présent mais la valeur retournée est parfois erronée :





    Si on cherche "chien" alors 3 lignes de resultat sont proposées, les 2 premieres qui contientent le mot chien retournent LRow = 3 alors que ce n'est vrai que pour l'une d'elle.

    Le code n'a pas détecté que le 1er premier résultat attendu était en ligne n°2


    Comment cela se fait il que lorsque je reste sur le code d'origine ( LRow.Caption = L.Row dans le Else ) le résultat ne s'affiche pas alors que les résultats sont pourtant bien présents et corrects dans la Listbox ?
    je ne l'explique pas.

Discussions similaires

  1. Nombre éléments sélectionnés d'une listbox
    Par greg26 dans le forum VB.NET
    Réponses: 5
    Dernier message: 20/01/2019, 10h38
  2. [XL-2010] Liste des Items sélectionnés d'une ListBox dans un MsgBox
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2015, 15h36
  3. Comment récupérer les élements sélectionnés d'une ListBox ?
    Par Bleuarff dans le forum Composants VCL
    Réponses: 11
    Dernier message: 23/02/2013, 06h36
  4. [VBA-E] Récupérer le nombre d'élément sélectionné d'une Listbox ?
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/01/2007, 17h31
  5. [VBA-E]récupérer le nom des lignes sélectionnées d'une listbox
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/06/2006, 11h28

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