[VBA] Sélectionner une ligne après un filtre

Résolu/Fermé
Schtroumpf_Wiki - 10 août 2011 à 16:08
 Schtroumpf_Wiki - 11 août 2011 à 15:15
Bonjour,

Je fais actuellement une appli excel qui traite des données dans un tableau de plusieurs milliers de lignes. Je dois souvent filtrer pour extraire telle ou telle ligne.
Le problème c'est qu'après un filtre, le code "Cells(3,1).Value" va me donner la valeur de la cellule A3 et non de la première cellule de la troisième ligne visible à l'écran après le filtre.

Je le faisais jusqu'à présent en bidouillant un max mais mon appli rame pas mal. Du coup je me suis dit qu'il devait y avoir un code pour directecment prendre la valeur dont j'ai besoin.

Merci pour votre aide !
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 août 2011 à 16:20
Bonjour,
ma question est la suivante : Pourquoi veux tu récupérer la valeur de la cellule 3ème ligne visible, et surtout comment sais tu que cette valeur est contenue dans cette cellule?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 août 2011 à 16:35
Un petit exemple de code qui te donne le numéro de la première ligne "visible" après filtre :
Sub test()
Dim DrLig As Long, Lig As Long
DrLig = Sheets("Feuil1").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
For Lig = 2 To DrLig
    If Rows(Lig).Hidden = False Then
        MsgBox "première ligne visible = " & Lig
        Exit For
    End If
Next
End Sub
0
Schtroumpf_Wiki
10 août 2011 à 16:51
Pour faire simple, c'est une base de données de bobinnes de film. Je filtre la base avec un type de film précis, puis je trie les différentes bobinnes avec ce type de film par longueur. Je veux alors sélectionner les deux lignes contenant les infos sur les bobinnes ayant les deux plus petites longueurs.
C'est-à-dire sélectionner des infos sur les deux première lignes visibles à l'écran. La référence de la bobinne étant sur la première colonne, Si je tape Cells(2,1).Value va me donner la ref de la première bobinne de la base de données mais pas de celle qui est visible. Ce que je cherche, je ne sais pas si ça existe, c'est un code du genre :

CellsVisible(2, 1).Value (bon celui là ne marche pas ^^)

Voilà, j'espère avoir été assez clair

Merci !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 août 2011 à 16:54
As tu essayé mon code ci-dessus?
Sub test()
Dim DrLig As Long, Lig As Long
DrLig = Sheets("Feuil1").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
For Lig = 2 To DrLig
    If Rows(Lig).Hidden = False Then
        MsgBox "première ligne visible = " & Lig
        Exit For
    End If
Next
End Sub

Après pour ta cellule suffit de l'appeler comme ceci :
Cells(Lig, 1)
Tu dis...
0
Schtroumpf_Wiki
11 août 2011 à 15:15
Effectivement ça marche ! C'est un petit plus compliqué que ce à quoi je m'attendais mais c'est déjà plus propre que ma grosse bidouille pleine de .Select partout ^^

Merci beaucoup
0