Parcours plage filtrée récupérée dans variant ou Range

Bonjour,

J'ai un petit souci concernant la lecture d'une plage de filtre automatique.

Je poste le code et je m'explique:

Range("tcd").AutoFilter field:=numColDteOuvPrevue, _
                                Criteria1:=">=" & sdeb, _
                                Operator:=xlAnd, _
                                Criteria2:="<=" & sfin
        'Dans un variant
        Set vResFiltreQuestAFaire = _
            Range("tcd").SpecialCells(xlCellTypeVisible)
        'Dans un range
        Set rResFiltreQuestAFaire = _
            Range("tcd").SpecialCells(xlCellTypeVisible)  

Bon, le filtre fonctionne bien et la récupération dans la variable de type range (vResFiltreQuestAFaire ) aussi.

Sauf qu'il m'est impossible de parcourir le tableau récupéré, même quand je place ce résultat dans une variable de type range ou variant. Ce qui est bizarre c'est que quand je visualise les variables locales pendant l'exécution du code j'ai bien le bon nombre de cellules (nb de lignes filtrées x nb de cellules du tableau) mais il m'est impossible d'accéder aux lignes comme pour un range sur une feuille et

rResFiltreQuestAFaire.Rows.Count

me retourne 1 (alors qu'il y a plusieurs lignes retournées par le filtre).

Savez-vous s'il s'agit d'un comportement normal et si je dois copier le résultat du filtre sur une feuille pour travailler dessus ?

Merci d'avance si vous avez une idée.

Bonjour,

si tu veux connaitre le nombre de lignes filtrées

Dim x%
x = Application.Subtotal(3, Range("a8:a1300"))

plage à adapter

Amicalement

Claude

Bonjour,

Merci Dubois pour ta réponse.

Ce qui m'interesse en fait c'est de pouvoir manipuler l'objet Range récupéré à l'issu du filtre comme on le ferait pour un objet Range Normal, c'est à dire, par exemple, pouvoir le parcourir les lignes avec une boucle.

Je récupère donc le résultat de mon filtre avec soit:

Set rResFiltreQuestAFaire = Range("tcd").SpecialCells(xlCellTypeVisible) 

ou

Set vResFiltreQuestAFaire = Range("tcd").SpecialCells(xlCellTypeVisible)

que je place dans une variable de type Range ou dans une variable de Type Variant (Pour pouvoir au moins parcourir la plage comme un tableau à 2 dimensions).

Mais...Même si la récupération dans les variables est bonne (j'ai bien le bon nombre de cellules qui correspond au résultat du filtre => on peut voir ça soit dans la fenêtre Variable locale ou via

rResFiltreQuestAFaire.Cells.Count

il m'est impossible de parcourir ce Range pour travailler dessus.

D'ailleurs peu importe le nombre de cellules retournées,

rResFiltreQuestAFaire.Rows.count 

me renvoie toujours 1.

Bref, et désolé d'être aussi long, je n'arrive pas à accéder aux cellules contenues dans cette variable, hormis la

première ligne.

Si tu as une idée ou si quelqu'un a une idée, je suis preneur.

Bonjour

Pas sur d'avoir compris le problème et surtout le filtre et moi font 2 ennemis

Bonsoir à tous,

Tu peux boucler sur une plage filtrée,

en complément au fichier de Banzai64

Sub essai2()
Dim TCD As Range, Cel As Range
Dim Plage As Range

  Set TCD = Range("A1:B" & Range("A65536").End(xlUp).Row)
  TCD.AutoFilter Field:=1, Criteria1:="Jeudi"

  Set Plage = Range("a2:a" & Range("a65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible)

    For Each Cel In Plage
        Cells(Cel.Row, "c") = Cells(Cel.Row, "a") & " " & Cells(Cel.Row, "b")
    Next Cel
End Sub

Amicalement

Claude

Bonsoir,

Super, merci beaucoup les gars.

En effet, ça marche impeccablement alors qu'au boulot j'ai passé l'après-midi là-dessus et impossible d'obtenir un résultat sauf à créer plusieurs feuilles à la volée car j'ai une succession de filtres à faire.La différence avec mon tableau vient du fait que le range à partir duquel la méthode Autofilter est appelée est un nom dynamique et que lorsque j'affecte le résultat à la variable Range j'utilise ce nom alors que je devrais peut-être définir la plage comme le fait Dubois.

Range("a2:b" & Range("a65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible)

Sinon j'ai trois autres pistes :

1-Ma feuille à une protection et certaine cellules de la feuille sont verrouillées, peut-être que ça joue.

2-La procédure d'événement WS_SelectionChange (dans laquelle il y a du code se déclenche) lors du filtre automatique

3-Quelque chose m'échappe carrément

-- Ven Avr 08, 2011 9:59 pm --

Pour ceux à qui ça peut servir, la solution vient de la façon de parcourir les cellules.

Plage.Rows.Count

retourne visiblement toujours 1 dans ce cas.

Il ne faut donc pas itérer avec un For sur les lignes et utiliser la méthode de Dubois.

For Each Cel in Plage
Rechercher des sujets similaires à "parcours plage filtree recuperee variant range"