J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre
auto.
Quand je fais Range("A1").currentregion.specialcells(xltypelastcell) , VBA
me renvoie la dernière cellule de la table, et non pas la dernière cellule
visible.
J'ai fais
Set cellule = target.Offset(-1, 0)
While cellule.EntireRow.Hidden = True
Set cellule = cellule.Offset(-1, 0)
Wend
mais je suppose qu'il y a plus simple et surtout plus rapide si ma première
ligne visible se trouve 65000 lignes plus haut.
J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre auto.
Sub zzzz() Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row, Cells.Find("*", , , , 1, 2).Column)) MsgBox plg(plg.Count).Address End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec le type "xlCellTypeLastCell" Elle réserve bien des surprises car elle considère comme non vide les cellules formatées autrement que par défaut et mémorise les précédentes saisies/formatages mêmes s'ils ont été supprimés
Pour le fun : Sub zzz2() x StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address) y = """" & x & """" MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y & ")+1)"))) End Sub
AV
J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre
auto.
Sub zzzz()
Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row, Cells.Find("*", , ,
, 1, 2).Column))
MsgBox plg(plg.Count).Address
End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec le
type "xlCellTypeLastCell"
Elle réserve bien des surprises car elle considère comme non vide les cellules
formatées autrement que par défaut et mémorise les précédentes
saisies/formatages mêmes s'ils ont été supprimés
Pour le fun :
Sub zzz2()
x StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address)
y = """" & x & """"
MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y &
")+1)")))
End Sub
J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre auto.
Sub zzzz() Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row, Cells.Find("*", , , , 1, 2).Column)) MsgBox plg(plg.Count).Address End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec le type "xlCellTypeLastCell" Elle réserve bien des surprises car elle considère comme non vide les cellules formatées autrement que par défaut et mémorise les précédentes saisies/formatages mêmes s'ils ont été supprimés
Pour le fun : Sub zzz2() x StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address) y = """" & x & """" MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y & ")+1)"))) End Sub
AV
CAP2
Salut,
c'est normal puisque SpecialCells(xlCellTypeVisible) renvoie la plage des cellules visibles. Il faut donc que tu continues avec :
merci pour la remarque, j'en prends bonne note ;o))
CAP2
Philippe Muniesa
Génial,
Merci AV ( et presque AV César :-))))
Mais ça necessite quelques explications ????
La syntaxe de find est expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Mais
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça m'évitera de copier bêtement.
Je pense que je comprendrais le
cells.find("*",,,,2,2) .Column :-))))
Merci d'avance
Philippe
"AV" a écrit dans le message de news:
J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre
auto.
Sub zzzz() Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row, Cells.Find("*", , ,
, 1, 2).Column)) MsgBox plg(plg.Count).Address End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec le
type "xlCellTypeLastCell" Elle réserve bien des surprises car elle considère comme non vide les cellules
formatées autrement que par défaut et mémorise les précédentes saisies/formatages mêmes s'ils ont été supprimés
Pour le fun : Sub zzz2() x > StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address
)
y = """" & x & """" MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y &
")+1)"))) End Sub
AV
Génial,
Merci AV ( et presque AV César :-))))
Mais ça necessite quelques explications ????
La syntaxe de find est
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection,
MatchCase, MatchByte, SearchFormat)
Mais
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule
non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça
m'évitera de copier bêtement.
Je pense que je comprendrais le
cells.find("*",,,,2,2) .Column :-))))
Merci d'avance
Philippe
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de
news:uw2gLXz5EHA.924@TK2MSFTNGP14.phx.gbl...
J'essaie d'atteindre la dernière Ligne visible d'une table en mode
filtre
auto.
Sub zzzz()
Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row,
Cells.Find("*", , ,
, 1, 2).Column))
MsgBox plg(plg.Count).Address
End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec
le
type "xlCellTypeLastCell"
Elle réserve bien des surprises car elle considère comme non vide les
cellules
formatées autrement que par défaut et mémorise les précédentes
saisies/formatages mêmes s'ils ont été supprimés
Pour le fun :
Sub zzz2()
x >
StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address
)
y = """" & x & """"
MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y
&
La syntaxe de find est expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Mais
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça m'évitera de copier bêtement.
Je pense que je comprendrais le
cells.find("*",,,,2,2) .Column :-))))
Merci d'avance
Philippe
"AV" a écrit dans le message de news:
J'essaie d'atteindre la dernière Ligne visible d'une table en mode filtre
auto.
Sub zzzz() Set plg = Range("A1", Cells(Cells.Find("*", , , , 2, 2).Row, Cells.Find("*", , ,
, 1, 2).Column)) MsgBox plg(plg.Count).Address End Sub
PS : Je te déconseille fortement d'utiliser la méthode "SpecialCells" avec le
type "xlCellTypeLastCell" Elle réserve bien des surprises car elle considère comme non vide les cellules
formatées autrement que par défaut et mémorise les précédentes saisies/formatages mêmes s'ils ont été supprimés
Pour le fun : Sub zzz2() x > StrReverse(Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Address
)
y = """" & x & """" MsgBox StrReverse(Left(x, Evaluate("find(""$""," & y & ",find(""$""," & y &
")+1)"))) End Sub
AV
AV
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça m'évitera de copier bêtement.
Il s'agit simplement du remplacement d'une constante vba par son index Exemple avec l'argument "SearchOrder" : 2 choix possibles xlByColumns ou xlByRows Si tu mets 1 ça signifiera xlByColumns et pour 2 ce sera xlByRows Etc...
AV
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule
non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça
m'évitera de copier bêtement.
Il s'agit simplement du remplacement d'une constante vba par son index
Exemple avec l'argument "SearchOrder" :
2 choix possibles xlByColumns ou xlByRows
Si tu mets 1 ça signifiera xlByColumns et pour 2 ce sera xlByRows
Etc...
cells.find("*",,,,2,2) .row , qui retourne la ligne de la dernière cellule non vide, je vois pas bine comment ça fonctionne. Si tu peux expliquer, ça m'évitera de copier bêtement.
Il s'agit simplement du remplacement d'une constante vba par son index Exemple avec l'argument "SearchOrder" : 2 choix possibles xlByColumns ou xlByRows Si tu mets 1 ça signifiera xlByColumns et pour 2 ce sera xlByRows Etc...