OVH Cloud OVH Cloud

Position première ligne filtrée

9 réponses
Avatar
Pascal
Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB

9 réponses

Avatar
MichDenis
Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message de news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB
Avatar
JB
Bonjour,

Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Cells(1,
1).Select

JB

Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message de news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB


Avatar
Pascal
Je n'utilise pas un filtre automatique mais un filtre élaboré avec filtrage
sur place...

Cette macro ne fonctionne donc pas...

--
PB



Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message de news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB





Avatar
MichDenis
| Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Cells(1,1).Select

Ceci s'applique seulement le demandeur veut sélectionner la première cellule
(ligne d'étiquette du filtre) et dans ce cas, seulement ceci aurait suffit :
Range("_FilterDataBase")(1,1).select

Si le demandeur veut avoir la première ligne de résultats du filtre auto. ce n'est
pas cette ligne de code qui va lui donner.
Avatar
MichDenis
Sur ta plage où tu as exécutée ton filtre élaboré :

Exemple :

With Range("A1:G50")
For Each r In .SpecialCells(xlCellTypeVisible).Rows
If r.Row <> 1 Then
If r.EntireRow.Hidden = False Then
r.Cells(1, 1).Select
Exit For
End If
End If
Next
End With




"Pascal" a écrit dans le message de news:

Je n'utilise pas un filtre automatique mais un filtre élaboré avec filtrage
sur place...

Cette macro ne fonctionne donc pas...

--
PB



Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message de news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB





Avatar
JB
ligne = 2
Do While Range("_FilterDataBase").Rows(ligne).Hidden
ligne = ligne + 1
Loop
Range("_FilterDataBase").Cells(ligne, 1).Select

http://cjoint.com/?lronEKym0s

JB


Je n'utilise pas un filtre automatique mais un filtre élaboré avec fi ltrage
sur place...

Cette macro ne fonctionne donc pas...

--
PB



Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message d e news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comme nt
positionner la cellule active sur la première ligne filtrée ?
--
PB







Avatar
JB
Cette macro positionne également sur la ligne de titre:

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next

JB




| Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Cells(1,1).Sel ect

Ceci s'applique seulement le demandeur veut sélectionner la première cellule
(ligne d'étiquette du filtre) et dans ce cas, seulement ceci aurait suf fit :
Range("_FilterDataBase")(1,1).select

Si le demandeur veut avoir la première ligne de résultats du filtre a uto. ce n'est
pas cette ligne de code qui va lui donner.


Avatar
MichDenis
| Cette macro positionne également sur la ligne de titre:

| For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
| If c.Row <> 1 Then
| c.Select
| Exit For
| End If
| Next

Si la ligne d'étiquette du filtre auto ne se situe pas sur la première ligne
de la feuille, il faut adapter la procédure de cette manière :
'-----------------------------------
Dim A As Long
With Range("_FilterDataBase")
A = .Cells(1, 1).Row
On Error Resume Next
With .SpecialCells(xlCellTypeVisible)
For Each r In .Rows
If r.Row <> A Then
r.Cells(1, 1).Select
exit for
End If
Next
End With
End With
'-----------------------------------
Avatar
Pascal
Merci à tous les 2.

J'ai appliqué la réponse de JB, c'est parfait !
--
PB



ligne = 2
Do While Range("_FilterDataBase").Rows(ligne).Hidden
ligne = ligne + 1
Loop
Range("_FilterDataBase").Cells(ligne, 1).Select

http://cjoint.com/?lronEKym0s

JB


Je n'utilise pas un filtre automatique mais un filtre élaboré avec filtrage
sur place...

Cette macro ne fonctionne donc pas...

--
PB



Sur une plage filtré (filtre automatique)

For Each c In Range("_FilterDataBase").SpecialCells(xlCellTypeVisible)
If c.Row <> 1 Then
c.Select
Exit For
End If
Next




"Pascal" a écrit dans le message de news:

Bonjour,

En VBA, après filtrage d'un tableau (code VBA déjà écrit) comment
positionner la cellule active sur la première ligne filtrée ?
--
PB