XL 2016 problème de filtre dans listbox

saidoush

XLDnaute Junior
Bonjour à tous !!!

J'ai fais un petit formulaire de saisie pour suivre les locations de véhicule perso.
en revanche je ne trouve pas le moyens de rajouter une fonction modifier et filtrer.

j'ai beau rajouter ce code...en vain.

Private Sub FilterListBox()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Synthèse")

Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row

Dim filterValue As String
filterValue = UCase(ComboBox4.Value)

' Supprimer tous les éléments actuels de la ListBox1
Dim i As Long
For i = ListBox1.ListCount - 1 To 0 Step -1
ListBox1.RemoveItem i
Next i

Dim rowCounter As Long
rowCounter = 0

For i = 11 To LastRow
If InStr(1, UCase(ws.Cells(i, "I").Value), filterValue) > 0 Then
ListBox1.AddItem ws.Cells(i, "A").Value
ListBox1.List(rowCounter, 1) = ws.Cells(i, "B").Value
ListBox1.List(rowCounter, 2) = ws.Cells(i, "C").Value
ListBox1.List(rowCounter, 3) = ws.Cells(i, "D").Value
ListBox1.List(rowCounter, 4) = ws.Cells(i, "E").Value
ListBox1.List(rowCounter, 5) = ws.Cells(i, "F").Value
ListBox1.List(rowCounter, 6) = ws.Cells(i, "G").Value
ListBox1.List(rowCounter, 7) = ws.Cells(i, "H").Value
ListBox1.List(rowCounter, 8) = ws.Cells(i, "I").Value
ListBox1.List(rowCounter, 9) = ws.Cells(i, "J").Value
ListBox1.List(rowCounter, 10) = ws.Cells(i, "K").Value
ListBox1.List(rowCounter, 11) = ws.Cells(i, "L").Value
rowCounter = rowCounter + 1
End If
Next i
End Sub
 

Pièces jointes

  • SUIVI LOCATIONS 2024.xlsm
    50.7 KB · Affichages: 9

job75

XLDnaute Barbatruc
J'ai revu la ListBox du fichier joint et créé cette macro :
VB:
Sub filter_data_in_listbox()
Dim x$, n&, tablo, liste(), i&, j%
With [A9].CurrentRegion
    x = UCase(ComboBox4)
    n = Application.CountIf(.Columns(9), x)
    If n = 0 Then ListBox1.Clear: Exit Sub
    tablo = .Resize(, 12)
    ReDim liste(1 To n, 1 To 12)
End With
n = 0
For i = 3 To UBound(tablo)
    If UCase(tablo(i, 9)) = x Then
        n = n + 1
        For j = 1 To 12
            liste(n, j) = tablo(i, j)
        Next j
    End If
Next i
ListBox1.List = liste
End Sub
 

Pièces jointes

  • SUIVI LOCATIONS 2024.xlsm
    52.5 KB · Affichages: 4

saidoush

XLDnaute Junior
Re
regarde la vidéo de ce qui se passe chez Moi Lol
Jean marie
oui Jean marie,

Mais à la base je voulais que la combobox4 se charge à partir de la colonne mission (11) de la listbox. Lorsque je sélectionne une "mission", la listbox doit me retourner les résultats filtrés de cette mission.


D'autre part je ne sais pourquoi mais toutes les mises en forme Majuscule, dates, etc..) que j'avais paramétrées se sont envolées LOL…

Et pas mal... ta vidéo;)
 

saidoush

XLDnaute Junior
re
une autre question
dans ta colonne "Mission" sont ce des Misions établies qui dépendent d'une Liste ou ces missions peuvent être de tout ordre ?
Jean marie
oui ces missions sont amenées à s'étendre lorsque quelqu'un d'autre effectuera une location il faudra pouvoir rajouter son nom dans la combobox4. ce qui est le cas maintenant grâce à vous 2.

désolé, mais comme je vous le disais je suis novice...
un peu de maladresse,
beaucoup de temps pour coder et donc plus pour répondre!! ;)

Bravo à vous!!!
Maintenant je m'attèle sur la partie sélection et modification.

Toute ma reconnaissance.
 

Pièces jointes

  • SUIVI LOCATIONS 2024 (1).xlsm
    62.8 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
re
Bonjour a tous
j'ai cherché mais j'ai pas trouvé un truc qui me titille

(puisque c'est le sujet) filtrer une listbox
Ok mais les lignes du tableau ne correspondront plus alors on fait quoi avec le bouton modifier?
quelqu'un a pensé a rajouter une colonne dans la listbox pour les index de ligne ?
punaise comme ça me titille 🤣 🤣

d'ailleurs le bouton valider et modifier il servent à quoi?
a quel moment on est en mode modif ou valider(ajout)?

punaise il y a 10/12 controls qui se battent en duel
vous pouvez pas les renommer afin qu'ils soient facilement repérables dans le module du userform

vous travailler avec un listobject le "Tableau1"
a quoi ça sert puisque vous fonctionnez comme si vous travaillez avec un range
et des .end(xlup) et tout icointi (je meurs là)

Ah non mais j'agonise là 🤣🤣

votre bidule tel que je le conçoit
vite fait en brouillon
je vire tout code de l'userform je reprends tout
comme je l'ai dit j'ajoute une colonne a ma liste(ma variable tableau) avec les indexs de ligne
comme je l'ai dit aussi je renomme les textbox et combo
je change un peu son look
comme c'est un formulaire (je suppute) d'ajout et/ou modification alors
un item sélectionné dans la listbox sera le signal pour le mode modif
le filtre a oui le filtre ben un dico sur la colonne voulue et le .list c'est le dico.keys
ah oui au fait le bouton Annuler il sert à quoi?
à marquer "ANNULER" en colonne immatriculation (comme c'est déjà le cas dans certaines lignes)
ou à annuler une action quelconque

Çà en fait des questions hein
 

saidoush

XLDnaute Junior
re
Bonjour a tous
j'ai cherché mais j'ai pas trouvé un truc qui me titille

(puisque c'est le sujet) filtrer une listbox
Ok mais les lignes du tableau ne correspondront plus alors on fait quoi avec le bouton modifier?
quelqu'un a pensé a rajouter une colonne dans la listbox pour les index de ligne ?
punaise comme ça me titille 🤣 🤣

d'ailleurs le bouton valider et modifier il servent à quoi?
a quel moment on est en mode modif ou valider(ajout)?

punaise il y a 10/12 controls qui se battent en duel
vous pouvez pas les renommer afin qu'ils soient facilement repérables dans le module du userform

vous travailler avec un listobject le "Tableau1"
a quoi ça sert puisque vous fonctionnez comme si vous travaillez avec un range
et des .end(xlup) et tout icointi (je meurs là)

Ah non mais j'agonise là 🤣🤣

votre bidule tel que je le conçoit
vite fait en brouillon
je vire tout code de l'userform je reprends tout
comme je l'ai dit j'ajoute une colonne a ma liste(ma variable tableau) avec les indexs de ligne
comme je l'ai dit aussi je renomme les textbox et combo
je change un peu son look
comme c'est un formulaire (je suppute) d'ajout et/ou modification alors
un item sélectionné dans la listbox sera le signal pour le mode modif
le filtre a oui le filtre ben un dico sur la colonne voulue et le .list c'est le dico.keys
ah oui au fait le bouton Annuler il sert à quoi?
à marquer "ANNULER" en colonne immatriculation (comme c'est déjà le cas dans certaines lignes)
ou à annuler une action quelconque

Çà en fait des questions hein
 

saidoush

XLDnaute Junior
SUPER!!!:)

La réalisation que j'ai obtenu me convient, je pense supprimer le bouton "modifier".
le bouton "annulé" sert pour supprimer l'ensemble des donnée saisies sans le supprimer 1 par 1...
(un gadget...)

Merci pour ta bonne humeur...
 

job75

XLDnaute Barbatruc
Encore une chose et ce sera ma dernière intervention.

Avec la méthode .List les formats des colonnes monétaires ne sont pas conservés.

Pour les conserver on peut revenir à la méthode .RowSource.

Mais pour cela il faut utiliser la feuille auxiliaire Filtre, voyez le fichier joint et cette macro :
VB:
Sub filter_data_in_listbox()
Dim x$, n&
Sheets("Filtre").Cells.Delete
With [Tableau1] 'tableau structuré
    x = ComboBox4.Value
    n = Application.CountIf(.Columns(9), x)
    If n = 0 Then ListBox1.RowSource = "": Exit Sub
    .ListObject.Range.AutoFilter 9, x 'filtre automatique
    .ListObject.Range.SpecialCells(xlCellTypeVisible).Copy Sheets("Filtre").[A1]
    .ListObject.Range.AutoFilter 'ôte le filtre
    ListBox1.RowSource = "Filtre!A2:L" & n + 1
End With
End Sub
 

Pièces jointes

  • SUIVI LOCATIONS 2024.xlsm
    54.5 KB · Affichages: 3

Discussions similaires

Réponses
0
Affichages
329
Réponses
1
Affichages
416

Statistiques des forums

Discussions
314 841
Messages
2 113 479
Membres
111 876
dernier inscrit
marccan