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 :

Filtrer valeurs ListBox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut Filtrer valeurs ListBox
    Bonsoir à tous et à toutes

    Je sèche sur le sujet suivant.

    Peut être que j'aurai pu attendre quelques semaines car je viens de m'inscrire pour 2 journées de formation VBA

    Je souhaite filtrer les données apparaissant dans la listbox

    Cette listbox présente 2 colonnes

    Je souhaite que les données soient filtrées selon le critère suivant : seules apparaissent les lignes où le dernier caractère de la 2e colonne est un "D"


    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 UserForm_Initialize()
     
    Dim fichier As String
    Dim LastLig As Long
     
    fichier = "e:\MaterBAse.xls"
     
    Set Wbk = Workbooks.Open(fichier)
     
    With Sheets("BASEliste").Range("AL3")
                 Me.ListBox1.RowSource = Range(.Cells, .End(xlDown)(1, 2)).Address(External:=True)
    End With
     
     
    End Sub
    Merci pour votre aide

    Daniel S

  2. #2
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Peut etre en faisant une boucle sur les ligne de ton fichier?
    Je n'ai pas excel sous la main, donc je ne peux pas tester mon code... Mais je pense que ca peux t'aider.
    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
    Private Sub UserForm_Initialize()
     
    Dim fichier As String
    Dim LastLig As Long
    Dim i as Integer
     
    fichier = "e:\MaterBAse.xls"
     
    Set Wbk = Workbooks.Open(fichier)
    LastLig=Sheets("BASEliste").Range("AL3").End(xlDown)
     
    For i = 3 to LastLig do
        If Right(Sheets("BASEliste").Range("AL" & CStr(i)), 1)="D" then
            Me.listBox1.AddItem Sheets("BASEliste").Range("AL" & CStr(i))
        End If
    Next i
    End Sub
    Le top serait une requete classeur fermé surtout si tu ouvre juste le fichier masterBase uniquement pour charger ta liste.

    Bref,
    Bonne soirée!

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour

    Merci pour cette réponse ultra rapide

    J'ai désormais une erreur "incompatibilité de type" au chargement de l'userform

    Je cherche, mais si quelqu'un a une réponse ...

    Bon week end !

    Daniel

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Par défaut
    Bonjour à Tous, le forum
    à mon avis comme cela ce serait mieux
    a+
    papou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
     
    Dim fichier$,LastLig&,i & ,wbk as workbook
    fichier = "e:\MaterBAse.xls" 
    Set Wbk = Workbooks.Open(fichier)
    LastLig=Sheets("BASEliste").Range("AL" & rows.count).End(xlup).row
     
    For i = 3 to LastLig 
        If Right(Sheets("BASEliste").Range("AL" & i),1)="D" then
            Me.listBox1.AddItem Sheets("BASEliste").Range("AL" & i)
        End If
    Next i
    wbk.close 
    End Sub

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Si j'ai bien compris, cela devrait ressembler à 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
    23
    24
    25
    Private Sub UserForm_Initialize()
    Dim Wbk As Workbook, Fichier As String, DerLig As Long, x As Long
    Dim Col1 As String, Col2 As String
     
    Application.ScreenUpdating = False '<-- figer l'écran pour ne pas voir l'ouverture du classeur source
     
    Fichier = "e:\MaterBAse.xls"
    Col1 = "A" '<-- colonne 1 du classeur source à adapter
    Col2 = "B" 'colonne 2 du classeur source à adapter
    Set Wbk = Workbooks.Open(Fichier) '<-- ouverture du classeur source
     
    With Wbk.Sheets("BASEliste") '<-- on fait référence à la feuille "Baseliste" du classeur source
        DerLig = .Cells(Rows.Count, Col1).End(xlUp).Row '<-- recherche de la dernière ligne de la colonne 1
        For x = 1 To DerLig '<-- de la ligne 1 à la dernière ligne (ligne de départ à adapter)
            If UCase(Right(.Cells(x, Col2), 1)) = "D" Then '<--si le dernier caractère de la colonne 2 correspond à "d" ou "D"
                Me.ListBox1.AddItem .Cells(x, Col1) '<-- chargement de la première colonne de la ListBox avec la valeur de la colonne 1
                Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(x, Col2) '<-- chargement de la seconde colonne de la ListBox avec la valeur de la colonne 2
            End If
        Next
    End With
     
    Wbk.Close False '<-- fermeture du classeur source, sauvegarde = non
    Set Wbk = Nothing '<-- libération de la mémoire
    Application.ScreenUpdating = True '<-- réactivation de l'écran
    End Sub

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour à tous

    Merci à Fring et Paritec pour leurs réponses

    J'ai utilisé le code de Fring qui fonctionne parfaitement

    bonne journée !

    Daniel S

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

Discussions similaires

  1. [XL-2007] Filtrer une ListBox selon la valeur d'une ComboBox
    Par Jeromeric dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/11/2011, 23h38
  2. Réponses: 16
    Dernier message: 21/08/2008, 13h58
  3. Récupération valeur ListBox
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/01/2008, 19h08
  4. Récupération des valeurs ListBox
    Par Galaad dans le forum ASP
    Réponses: 3
    Dernier message: 13/06/2007, 11h41
  5. conserver valeur listbox
    Par crca dans le forum ASP
    Réponses: 13
    Dernier message: 29/04/2005, 09h55

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