Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Userform Filtres ne fonctionne pas

  • Initiateur de la discussion Initiateur de la discussion jcf6464
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jcf6464

XLDnaute Impliqué
Bonjour à vous toutes et tous,

Je désire un éclaircissement sur le pourquoi le userform filtres ne fonctionne pas ,

Détail ; j'ai récupérer un classeur de (Partick toulon) je les mis à mon gout tout fonctionne ah j'ai mis dans le userform avec une listview à la place d'une listBox plus agréable à la vue,
Pour Patrick quand on valide une ligne de la listview normalement la cellule index ce met en jaune les premières jusqu’à 21 cela est aléatoire soit cet sur la date ou une autre cellule,

Notre amis ChTi160 à créer un code pour les filtres sur un autre classeur sur l’autre tout fonctionne,
Post :https://excel-downloads.com/threads/filtre-avec-userform-sur-tableau-structure.20086946/

J'ai voulu le transposer sur le nouveau classeur avec ses modules et là il ne fonctionne plus, dans les modules j'ai changer le nom du tableau et de la feuille,

Bonne soirée bon WE jcf6464
 

Pièces jointes

Dernière édition:
Attention avec .DataBodyRange, s'il n'existe pas il créera un bug, pour l'éviter on peut utiliser :
VB:
    With [Tbl_ListBowling].ListObject
        If .DataBodyRange Is Nothing Then .Range(2, 1) = " "
        TabBDD = .DataBodyRange
    End With
Par ailleurs il faudrait éviter aussi l'erreur de compilation dans Module_ControlScroll sur :
VB:
Private Classe_ControlScroll As New Classe_ControlScroll
 
re
Gérard ,
Je suis allé voir le Fichier source que j'ai fourni à jcf6464 et j'y fait ceci .
VB:
With Range("T_Base").ListObject 'Avec le Tableau de la base de Données
         If Not (.DataBodyRange Is Nothing) Or .ListRows.Count = 0 Then  'Si Non Vide
                  If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData 'On supprime les filtres eventuels
               '******
               '******
         End If 'Not (.DataBodyRange Is Nothing) Or .ListRows.Count = 0
 End With 'Range("T_Base").ListObject
Une habitude Lol !
Bonne fin de Soirée
Jean marie
 
Bonjour jean marie et le forum,
Merci
J'ai modifier les lignes cela fonctionne avec le formatage de la colonne comme je l'avais fait ( Columns(3).NumberFormat = "dd/mm/yyyy")

Je voie que cela à discuter ce WE merci à vous tous,

Tout fonctionne reste à voir si Patrick passe par là
pour Pour Patrick quand on valide une ligne de la listview normalement la cellule index ce met en jaune les premières jusqu’à 21 cela est aléatoire soit cet sur la date ou une autre cellule,

Bonne semaine jcf6464
 
Bonjour le Fil ,
Bonjour à jcf6464
tu dis :
quand on valide une ligne de la listview normalement la cellule index ce met en jaune les premières jusqu’à 21 cela est aléatoire soit cet sur la date ou une autre cellule,
Parles tu de la procédure du Bouton "Enregistrer" ?
Bonne Journée
Jean marie
 
Bonjour le Fil ,
Bonjour à jcf6464
tu dis :

Parles tu de la procédure du Bouton "Enregistrer" ?
Bonne Journée
Jean marie
Bonjour jean marie et le forum,

Non ce que je veut dire c'est quand tu sélectionne une ligne dans la listview (pour supprimer ou modifier) sur la base normalement cela met en jaune le numéro index de la ligne sélectionner,
une anomalie sur le classeur (attention classeur récupère de Patrick Toulon), cela ne gêne en rien le fonctionnement du classeur c'est juste un repère visuel,

merci
bonne journée jcf6464
Je joint une photo

 
Dernière édition:
Re
regarde ce que cela donne chez moi .
J'ai modifié quelques choses : j'ai supprimé la Colonne des Index qui ne me sert pas ! j'ai optimisé l'utilisation du Tableau structuré "Tbl_ListBowling" je continue à faire quelques trucs et je poste le Fichier des que Possible!
Quelle est l'utilité de mettre une cellule en couleur alors qu'on a les données de la ligne affichées sur le userform ?
Bonne fin de Journée
Cordialement
Jean marie
 

Pièces jointes

  • TestColorLigne-1.gif
    726.7 KB · Affichages: 13
Dernière édition:
Bonjour,

Non ce que je veut dire c'est quand tu sélectionne une ligne dans la listview (pour supprimer ou modifier) sur la base normalement cela met en jaune le numéro index de la ligne sélectionner
Une proposition de modification de ton code initial :
VB:
Private Sub ListView_List_ItemClick(ByVal Item As MSComctlLib.ListItem)
'
Dim LigneSel As Long, r, Lg

    Application.ScreenUpdating = False

    Lg = ListView_List.SelectedItem.Index

    ' *****************Alimenter les Textbox"*************************
    Me.Txt_NumC = Item                          ' Numéro Ligne
    Me.Txt_Date = Item.ListSubItems(1)          ' Date
    Me.CmbLieux = Item.ListSubItems(2)          ' Lieux
    Me.TextDepDivers = Item.ListSubItems(3)     ' Dépenses diverses
    Me.TextInscription = Item.ListSubItems(4)   ' Inscription
    Me.TextMtParties = Item.ListSubItems(5)     ' MtPartie
    Me.TextBoisson = Item.ListSubItems(6)       ' Boisson
    Me.CmbMode = Item.ListSubItems(7)           ' Mode
    Me.TextObservation = Item.ListSubItems(8)   ' Observation
    Me.TextAutre = Item.ListSubItems(9)         ' Autre
    Me.TextCompet = Item.ListSubItems(10)       ' Compet
    Me.TextPau = Item.ListSubItems(11)          ' Pau
    Me.TextQLIbre = Item.ListSubItems(12)       ' QLibre
    Me.CmbDescripCompet = Item.ListSubItems(13) ' DescripCompet

    Range("Tbl_ListBowling").ListObject.Range.Interior.Color = xlNone   ' Avec le tableau structuré

    Combo.Value = Format(ListView_List.ListItems(Lg), "0")
    LigneSel = CLng(Combo.Value)    ' ListView_List.SelectedItem
    Set r = Range("Tbl_ListBowling[Index]").Find(LigneSel)
    r.Interior.ColorIndex = 27      ' 42 est le code couleur qui permet de changer la couleur de la cellule sélectionnée

    Application.ScreenUpdating = True

End Sub


[edit]
Le classeur ci-joint fonctionnait même lors du clic sur la première ligne de la ListBox, mais maintenant ça ne marche plus pour cette première ligne... 🤪 Peut-être un bug dans l'usine à gaz qui tente de gérer la ListView ???
Si quelqu'un sait pourquoi, je suis volontiers preneur. Merci. 🙂
[/edit]
 

Pièces jointes

Dernière édition:
Bonjour TooFatBoy,Le Fil
ce que j'ai mis et qui Fonctionne . je ne passe pas par Combo ((pourquoi un Combobox d'ailleur?)
2 possibilités : (Mais y'en a peut être d'autres Lol)
VB:
    Range("Tbl_ListBowling").ListObject.Range.Interior.Color = xlNone   ' Avec le tableau structuré on efface les Couleurs
 
 LigneSel = ListView_List.ListItems(Lg).Text 'On récupére l'index de la Ligne Cible
 Range("Tbl_ListBowling").ListObject.ListRows(LigneSel).Range.Cells(1).Interior.ColorIndex = 27 'On colore la Cells(1) de la Ligne ainsi definie
 
'   Set r = Range("Tbl_ListBowling").ListObject.ListRows(LigneSel).Range.Cells(1, 1) 'On récupére la Cellule Cible
'        r.Interior.ColorIndex = 27      ' 27 est le code couleur qui permet de changer la couleur de la cellule sélectionnée

Bonne fin de Journée
Cordialement
Jean marie
 
ce que j'ai mis et qui Fonctionne .
Vu que ListView_List.SelectedItem.Index donne le rang de la ligne cliquée dans la ListView, perso j'aurais directement colorié la cellule de même rang dans la colonne Index du TS.

Je me suis donc demandé pourquoi il y avait une telle complication du code et perte de temps inutiles, et la seule raison que j'ai trouvée c'est que la ListView et le TS peuvent ne pas être dans le même ordre, ce qui oblige à rechercher dans le TS l'index inscrit sur la ligne cliquée de la ListView. 🫤
 
Re
si on filtre le Tableau : tu dis :
vu que ListView_List.SelectedItem.Index donne le rang de la ligne cliquée dans la ListView
ca donnerait quoi ?
car le Numéro de la Ligne Cible récupéré se trouve au Niveau du ListItem de la Ligne .et ne correspond pas à L'index de la ligne sélectionnée dans la LIstView ; si j'ai bien Compris ! Lol
a voir donc
Bonne fin de Journée
Jean marie
 
Personne ne sait me dire pourquoi quand je clique dans la ListView sur la ligne contenant l'index 1, c'est l'index 10 qui colorié dans le TS ?

Pourquoi la recherche me donne-t-elle la ligne 10 au lieu de 1 ?
Est-ce un problème de tous ces "Option Base 1" ou autre ???
 
Dernière édition:
Bonjour el Fil ,
les méandres de VBA ! Lol
j'ai mis :
VB:
   Combo.Value = ListView_List.ListItems(Lg)
    LigneSel = CLng(Combo.Value)  
'    Set r = Range("Tbl_ListBowling[Index]").Find(CLng(LigneSel)) 'ancienne Ligne
    Set r = Range("Tbl_ListBowling[Index]").Find(what:=CLng(LigneSel), LookIn:=xlValues, lookat:=xlWhole) 'Nouvelle Ligne
    r.Interior.ColorIndex = 27      ' 42 est le code couleur qui permet de changer la couleur de la cellule sélectionnée
et cela Fonctionne , l'ajout des deux arguments de la Fonction .Find() soit LookIn:=xlValues, lookat:=xlWhole assure la recherche de la valeur exacte et Non comme ca ce produit 10,11,00
a voir donc
Bonne fin de Journée
Jean marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2019 User Form
Réponses
9
Affichages
328
Réponses
38
Affichages
953
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
236
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…