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 :

Filtrage listbox et remplissage textbox


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
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut Filtrage listbox et remplissage textbox
    bonjour à tous,

    Je viens vers vous car je n'arrive pas à resoudre 2 problèmes.

    (1) Je dispose d'une feuille excel avec des données.

    Ces données servent à remplir une listbox par le procédure suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub creation_listeF()
    form1.listbox1.RowSource = Range("A2", Range("J65000").End(xlUp)).Address
    End Sub
    Sur chaque champ de cette listbox, je souhaite effectuer un filtrage à partir d'une textbox, dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub T_FiltreF1_Change()
    'ref
    Selection.AutoFilter field:=1, Criteria1:="*" & T_FiltreF1 & "*"
    listbox1.RowSource = Range("A2", Range("K65000").End(xlUp)).Address
    End Sub
    Le problème est que lorsqu'une occurence est trouvée, les lignes inférieures sont bien masquées mais celles placées au dessus ne le sont pas.

    Peut-être cela vient--il du End(xlUP)?

    Auriez-vous une idée?

    (2) Ensuite, de cette listbox quand je selectionne une ligne et que j'appuie sur un bouton ceci affiche un autre form avec une textbox par champ/colonne: dont voici le code:

    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
     
    Private Sub B_Consulter_Click()
         'formulaire de consultaton fiche
        Dim LigneSelectionnee As Integer
        'cherche la ligne sélectionnée:
        LigneSelectionnee = Me.listbox.ListIndex + 2
        If Me.listbox.ListCount >= 0 & LigneSelectionnee > 0 Then _
        form2.Textbox1 = feuil1.Cells(LigneSelectionnee, 1)
        form2.Textbox2 = feuil1.Cells(LigneSelectionnee, 2)
        form2.Textbox3 = feuil1.Cells(LigneSelectionnee, 3)
        form2.Textbox4 = feuil1.Cells(LigneSelectionnee, 4)
        form2.Textbox5 = feuil1.Cells(LigneSelectionnee, 5)
     
        form2.Show
    End Sub
    Alors toutes les textbox sont remplies sauf la première¿!?

    Pourquoi donc?

    Merci pour votre aide!

    Elumastebit

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    je suppose qu'il t'est venu à l'idée d'essayer de voir le pourquoi du comment, par exemple ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       '.......
        If Me.listbox.ListCount >= 0 & LigneSelectionnee > 0 Then _
        form2.Textbox1 = feuil1.Cells(LigneSelectionnee, 1)
        If trim(form2.TextBox1) = "" then
           msgbox "j'en suis à la ligne " & ligneselectionee & " dont la colonne 1 contient " & feuil1.Cells(LigneSelectionnee, 1)
        end if
       ' .... etc...
    ?

    Au passage (bien que n'ayant rien à voir, mais dont on se demande quelle peut en être la logique utile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LigneSelectionnee = Me.listbox.ListIndex + 2
        If Me.listbox.ListCount >= 0 & LigneSelectionnee > 0 Then _
    A quoi sert ce que j'ai mis en gras ?
    Ligneselectionnee (= listindex + 2) ne peut en aucun cas être <= 0 puisque sa plus petite valeur sera, lorsque RIEN N'EST SELECTIONNE : -1 + 2 = 1 ...
    vérification bien inutile, donc ...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    Bonjour,

    je suppose qu'il t'est venu à l'idée d'essayer de voir le pourquoi du comment, par exemple ainsi : "..."
    ?
    en ayant la msgbox qui s'affiche je comprend que mon erreur se situe avant mais je n'ai finalement pas bien longtemps à chercher puisque la solution est dans la seconde partie de ton post:
    Au passage (bien que n'ayant rien à voir, mais dont on se demande quelle peut en être la logique utile) :
    ...
    vérification bien inutile, donc ...
    Oui elle même plus contraignante qu'inutile puisque c'est elle qui empêchait l'affichage dans ma textbox1.

    Bien que je comprenne pourquoi elle est inutile je ne comprend pas bien pourquoi elle empêchait mon code de fonctionner, m'enfin...

    Merci beaucoup ucfoutu et si tu as une idée pour mon premier problème ce serait le bienvenu.

    A plus tard et bon dimanche

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Re...
    Regarde ce que tu avais écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.listbox.ListCount >= 0 & LigneSelectionnee > 0 Then _
    & est un opérateur de concaténation, à ne pas confondre avec l'opérateur logique And ...

    EDIT :
    Maintenant, juste pour le cas (que tes explications ne permettent pas de deviner avec précision) où ta listbox contiendrait en fait des numéros de ligne parmi lesquelles choisir :
    Je te rappelle que Listbox1.Listindex n'extrait pas un artcicle, mais l'indice dans la listbox ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.List(ListBox1.ListIndex)
    par contre, extrait le contenu de l'article d'indice ListBox1.Listindex ...

    Je te rappelle également que le contenu des listboxes est des chaînes de caractères et que, si l'on est orthodoxe et qu'un numéro de ligne est une valeur numérique, on utilise ainsi la fonction Val :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(ListBox1.List(ListBox1.ListIndex))
    Bon dimanche...

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    & est un opérateur de concaténation, à ne pas confondre avec l'opérateur logique And ...
    Bé oui suis je bête!

    Merci encore!

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Regarde donc maintenant mon EDIT (au dessus)

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2010, 08h17
  2. filtrage à partir d'un textbox
    Par maxeur dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/01/2008, 09h16
  3. ListBox multicolonne et TextBox
    Par jeanjean0403 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/12/2007, 11h48
  4. ListBox auto remplissage/postback items vide
    Par Nadjib dans le forum C#
    Réponses: 4
    Dernier message: 15/09/2007, 09h39
  5. Requête SQL sur un clic de Check Box & remplissage TextBox
    Par m3n2o dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/11/2006, 03h15

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