OVH Cloud OVH Cloud

Dernière ligne d'une selection

9 réponses
Avatar
Gadget
Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le numéro
de la dernière ligne d'une selection (qu'elle soit continue ou discontinue),
genre Application.Selection.Lastrow, ou faut-il le créer ?

Merci de vos réponses.

9 réponses

Avatar
anonymousA
bonjour,

non , ca n'existe pas. D'ailleurs, que veut exactement dire la dernière
ligne d'une selection discontinue p.e ?
Je m'explique. Si je prends une plage discontinue A1:C10 et D1:E2
selectionnée avec la 1ere plage en D1:E2. LA dernière ligne selectionnée
est-elle la ligne 10 ou la ligne 2 ?

A+


Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le numéro
de la dernière ligne d'une selection (qu'elle soit continue ou discontinue),
genre Application.Selection.Lastrow, ou faut-il le créer ?

Merci de vos réponses.





Avatar
ChrisV
Bonjour Gadget,

La question est effectivement ambiguë...

Si, comme je crois comprendre, il s'agit du numéro de ligne max parmi une ou
plusieurs sélections...

Sub zaza()
Set nbZn = Selection
For Each Zn In nbZn.Areas
With Zn.Range("A1")
derL = Zn.Row + Zn.Rows.Count - 1
End With
If maxL < derL Then _
maxL = derL
Next Zn
MsgBox maxL
Set nbZn = Nothing
End Sub

S'il s'agit du numéro de la dernière ligne de la sélection active

Sub zaza()
With ActiveCell
MsgBox .Row + Selection.Rows.Count - 1
End With
End Sub


ChrisV


"Gadget" a écrit dans le message de news:
42bfd39b$0$18572$
Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le
numéro de la dernière ligne d'une selection (qu'elle soit continue ou
discontinue), genre Application.Selection.Lastrow, ou faut-il le créer ?

Merci de vos réponses.




Avatar
Gadget
Merci Chris. C'est effectivement ce que je cherchais

Ne peut-on pas faire plus court sur ta première proc :

Sub Zaza()
derL = 0
For Each Zn in Selection.Areas
derL=iif((Zn.Range("A1").Row + Zn.Rows.count-1)>derL ; _
ZnRange("A1").Row + Zn.Rows.count - 1 ; derL)
Next Zn
Msgbox derL
End Sub

Ou quelque chose comme ça. Je ne l'ai as essayé, je ne sais pas si les
références à la même variable des deux côtés du signe = pose problème.

Gadget.



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

Bonjour Gadget,

La question est effectivement ambiguë...

Si, comme je crois comprendre, il s'agit du numéro de ligne max parmi une
ou
plusieurs sélections...

Sub zaza()
Set nbZn = Selection
For Each Zn In nbZn.Areas
With Zn.Range("A1")
derL = Zn.Row + Zn.Rows.Count - 1
End With
If maxL < derL Then _
maxL = derL
Next Zn
MsgBox maxL
Set nbZn = Nothing
End Sub

S'il s'agit du numéro de la dernière ligne de la sélection active

Sub zaza()
With ActiveCell
MsgBox .Row + Selection.Rows.Count - 1
End With
End Sub


ChrisV


"Gadget" a écrit dans le message de news:
42bfd39b$0$18572$
Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le
numéro de la dernière ligne d'une selection (qu'elle soit continue ou
discontinue), genre Application.Selection.Lastrow, ou faut-il le créer ?

Merci de vos réponses.









Avatar
ChrisV
Re,

Ne peut-on pas faire plus court sur ta première proc :


Bonne idée...
(d'après ta proposition)

Sub zaza()
derL = 0
For Each Zn In Selection.Areas
derL = IIf((Zn.Range("A1").Row + Zn.Rows.Count - 1) > derL, _
Zn.Range("A1").Row + Zn.Rows.Count - 1, derL)
Next Zn
MsgBox derL
End Sub


ChrisV

"Gadget" a écrit dans le message de news:
42c0118d$0$18876$
Merci Chris. C'est effectivement ce que je cherchais

Ne peut-on pas faire plus court sur ta première proc :

Sub Zaza()
derL = 0
For Each Zn in Selection.Areas
derL=iif((Zn.Range("A1").Row + Zn.Rows.count-1)>derL ; _
ZnRange("A1").Row + Zn.Rows.count - 1 ; derL)
Next Zn
Msgbox derL
End Sub

Ou quelque chose comme ça. Je ne l'ai as essayé, je ne sais pas si les
références à la même variable des deux côtés du signe = pose problème.

Gadget.



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

Bonjour Gadget,

La question est effectivement ambiguë...

Si, comme je crois comprendre, il s'agit du numéro de ligne max parmi une
ou
plusieurs sélections...

Sub zaza()
Set nbZn = Selection
For Each Zn In nbZn.Areas
With Zn.Range("A1")
derL = Zn.Row + Zn.Rows.Count - 1
End With
If maxL < derL Then _
maxL = derL
Next Zn
MsgBox maxL
Set nbZn = Nothing
End Sub

S'il s'agit du numéro de la dernière ligne de la sélection active

Sub zaza()
With ActiveCell
MsgBox .Row + Selection.Rows.Count - 1
End With
End Sub


ChrisV


"Gadget" a écrit dans le message de news:
42bfd39b$0$18572$
Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le
numéro de la dernière ligne d'une selection (qu'elle soit continue ou
discontinue), genre Application.Selection.Lastrow, ou faut-il le créer ?

Merci de vos réponses.













Avatar
AV
Ne peut-on pas faire plus court


Sub zz_L()
For Each c In Selection
If c.Row > x Then x = c.Row
Next: MsgBox x
End Sub

AV

Avatar
Gadget
Ah oui effectivement, j'ai écrit la proc sans la copier sur VBA, alors les ;
à la place des , - et le point oublié... Pas vu.

Gadget.
"ChrisV" a écrit dans le message de news:

Re,

Ne peut-on pas faire plus court sur ta première proc :


Bonne idée...
(d'après ta proposition)

Sub zaza()
derL = 0
For Each Zn In Selection.Areas
derL = IIf((Zn.Range("A1").Row + Zn.Rows.Count - 1) > derL, _
Zn.Range("A1").Row + Zn.Rows.Count - 1, derL)
Next Zn
MsgBox derL
End Sub


ChrisV

"Gadget" a écrit dans le message de news:
42c0118d$0$18876$
Merci Chris. C'est effectivement ce que je cherchais

Ne peut-on pas faire plus court sur ta première proc :

Sub Zaza()
derL = 0
For Each Zn in Selection.Areas
derL=iif((Zn.Range("A1").Row + Zn.Rows.count-1)>derL ; _
ZnRange("A1").Row + Zn.Rows.count - 1 ; derL)
Next Zn
Msgbox derL
End Sub

Ou quelque chose comme ça. Je ne l'ai as essayé, je ne sais pas si les
références à la même variable des deux côtés du signe = pose problème.

Gadget.



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

Bonjour Gadget,

La question est effectivement ambiguë...

Si, comme je crois comprendre, il s'agit du numéro de ligne max parmi
une ou
plusieurs sélections...

Sub zaza()
Set nbZn = Selection
For Each Zn In nbZn.Areas
With Zn.Range("A1")
derL = Zn.Row + Zn.Rows.Count - 1
End With
If maxL < derL Then _
maxL = derL
Next Zn
MsgBox maxL
Set nbZn = Nothing
End Sub

S'il s'agit du numéro de la dernière ligne de la sélection active

Sub zaza()
With ActiveCell
MsgBox .Row + Selection.Rows.Count - 1
End With
End Sub


ChrisV


"Gadget" a écrit dans le message de news:
42bfd39b$0$18572$
Salut à tous.
Y a-t-il un moyen déjà implémenté dans VBA permettant de connaître le
numéro de la dernière ligne d'une selection (qu'elle soit continue ou
discontinue), genre Application.Selection.Lastrow, ou faut-il le créer
?

Merci de vos réponses.

















Avatar
isabelle
bonjour Gadget,

Ne peut-on pas faire plus court sur ta première proc :


Sub PlusCourt()
derL = Selection.Areas(Selection.Areas.Count)(Selection.Areas(Selection.Areas.Count).Count).Address
End Sub

isabelle

Avatar
AV
Hum...hum...
;-)
AV
Avatar
Gadget
Wow!

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

bonjour Gadget,

Ne peut-on pas faire plus court sur ta première proc :


Sub PlusCourt()
derL =
Selection.Areas(Selection.Areas.Count)(Selection.Areas(Selection.Areas.Count).Count).Address
End Sub

isabelle