Connaître le "nouveau numéro de ligne" après filtrage

Bonjour à tous !

Avant de rentrer dans le vif du sujet, je tenais à dire que ce site est tout simplement FORMIDABLE !!!

J'ai commencé le VBA sur excel il y à seulement 2 semaines et j'ai quasiment terminé mon projet de vidéothèque.

Bref... Jusque là, j'ai toujours trouvé la réponse à mes problèmes en cherchant sur internet, mais là j'avoue que je sèche !

Je vais donner un exemple pour que ce soit plus parlant :

Dans la colonne A j'ai 200 lignes dans un tableau

Je sélectionne la ligne 100

Je filtre la Colonne A et je me retrouve avec 8 résultats

Ma sélection est toujours à la ligne 100 mais visuellement elle se trouve à la 5ème ligne de mon tableau sur les 8 filtrées

J'arrive à compter le nombre de ligne visible avec ça :

Application.Subtotal(103, Columns("A")) -1

ou ça :

Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count

Mais je n'arrive pas à trouver la valeur 5 (5ème ligne de mon tableau après filtre) qui correspond à ma sélection

En fait, j'ai une listbox dans un UserForm et une fois le filtre activé je voudrais que sur les 8 résultats affichés il me sélectionne la 5ème ligne

ListBox1.ListIndex = ???

Sans filtre ça fonctionne très bien avec :

ListBox1.ListIndex = ActiveCell.Row - 2

Voilà... quelqu'un à une idée ?

Merci d'avance

Bonjour et bienvenue sur le forum

Si tu fournissais tu fichier, il serait plus facile de chercher une solution.

Bye !

Bonjour,

Pas sûr d'avoir compris la question.

=SOUS.TOTAL(103;A:A)-SOUS.TOTAL(103;A2:$A$60000)

à voir si toujours ok dans vba

eric

Merci pour vos réponses

Je vais joindre un fichier exemple pour mieux comprendre car je suis contient que c'est un peut tordu :

76test.xlsm (28.81 Ko)

En gros si je sélectionne dans mon tableau Excel le film "American Psycho" qui se trouve à la ligne 15, quand j'execute ma macro il est déjà sélectionné dans ma listebox1 grâce à :

ListBox1.ListIndex = ActiveCell.Row - 2

Maintenant, quand je fais une recherche (dans TextBox1) en tapant "Ame" je voudrais qu'il reste sélectionné dans ma listeBox.

Le problème c'est que en utilisant ListBox1.ListIndex = ActiveCell.Row - 2 on utilise le numéro de ligne de la sélection or je voudrais utiliser le numéro de la ligne visible qui est sélectionnée.

Je sais pas si vous me suivez

Voici le code :

Sub Refresh_ListBox1() 'Modifi ListBox1 selon les filtres
    ListBox1.Clear
    If Application.Subtotal(103, Columns("A")) > 1 Then 'Si la colone "A" à plus de 0 valeur, alors
        cpt = 0
        For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
            UserForm1.ListBox1.AddItem
            UserForm1.ListBox1.List(cpt, 0) = Cel
            cpt = cpt + 1
        Next
            Nb_de_resultat = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count
            Label2.Caption = Nb_de_resultat & " Films" 'Afficher le nombre de films
        Else
            Label2.Caption = " 0 Film"
    End If

End Sub

Private Sub ListBox1_Click()
    Cells.Find(ListBox1.Text, SearchOrder:=xlByRows).Activate 'Sélectionne la ligne dans le tableau
End Sub

Private Sub TextBox1_Change()
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="=*" & TextBox1.Value & "*" 'Filtre la colone1 du Tableau1 grâce à une recherche partielle
    Refresh_ListBox1

        If Application.Subtotal(103, Columns("A")) > 1 Then
            ListBox1.ListIndex = 0 'Ici j'ai mi "0" en attendant de trouver la bonne formule
        End If
End Sub

Private Sub UserForm_Initialize()
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1 'Reset filtre
    Refresh_ListBox1
    ListBox1.ListIndex = ActiveCell.Row - 2

End Sub

Encore merci pour votre aide !!!

Bon finalement à tête reposé je viens de trouver la solution qui était toute bête

ListBox1.ListIndex = Range("A2:A" & ActiveCell.Row).SpecialCells(xlCellTypeVisible).Count

Merci quand même d'avoir prit le temps de regardé

A bientot car je pense que c'est pas fini

Rechercher des sujets similaires à "connaitre nouveau numero ligne filtrage"