Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais toujours 1, or il y a bien deux lignes :
'------------------------------- Sub test0() Dim x As Long
x = Range("Limite").Rows.Count Debug.Print "Lignes = " & x
End Sub '-------------------------------
Merci.
Bonjour,
Sub test()
Dim A As Range, Ctr As Long
For Each A In [Limite].Areas
Ctr = Ctr + A.Rows.Count
Next A
Debug.Print "Lignes : " & Ctr
End Sub
Cordialement.
Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais
toujours 1, or il y a bien deux lignes :
'-------------------------------
Sub test0()
Dim x As Long
x = Range("Limite").Rows.Count
Debug.Print "Lignes = " & x
Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais toujours 1, or il y a bien deux lignes :
'------------------------------- Sub test0() Dim x As Long
x = Range("Limite").Rows.Count Debug.Print "Lignes = " & x
End Sub '-------------------------------
Merci.
Patrick
Bonjour,
est ce un bug ou pas ?
Patrick
"DanielCo" a écrit dans le message de news: mci6so$ju4$
Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais toujours 1, or il y a bien deux lignes :
'------------------------------- Sub test0() Dim x As Long
x = Range("Limite").Rows.Count Debug.Print "Lignes = " & x
End Sub '-------------------------------
Merci.
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
Bonjour,
est ce un bug ou pas ?
Patrick
"DanielCo" <dcolardelleZZZ@free.fr> a écrit dans le message de news:
mci6so$ju4$1@speranza.aioe.org...
Bonjour,
Sub test()
Dim A As Range, Ctr As Long
For Each A In [Limite].Areas
Ctr = Ctr + A.Rows.Count
Next A
Debug.Print "Lignes : " & Ctr
End Sub
Cordialement.
Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais
toujours 1, or il y a bien deux lignes :
'-------------------------------
Sub test0()
Dim x As Long
x = Range("Limite").Rows.Count
Debug.Print "Lignes = " & x
End Sub
'-------------------------------
Merci.
---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
"DanielCo" a écrit dans le message de news: mci6so$ju4$
Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
Bonjour à tous,
J'ai la plage nommée "Limite" suivante :
þuil1!$G$13:$L$13;Feuil1!$G$17:$L$17
Quand je voudrais compter le nombre de lignes de cette plage, j'aurais toujours 1, or il y a bien deux lignes :
'------------------------------- Sub test0() Dim x As Long
x = Range("Limite").Rows.Count Debug.Print "Lignes = " & x
End Sub '-------------------------------
Merci.
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
DanielCo
? Daniel
Bonjour,
est ce un bug ou pas ?
Patrick
"DanielCo" a écrit dans le message de news: mci6so$ju4$
Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
?
Daniel
Bonjour,
est ce un bug ou pas ?
Patrick
"DanielCo" <dcolardelleZZZ@free.fr> a écrit dans le message de news:
mci6so$ju4$1@speranza.aioe.org...
Bonjour,
Sub test()
Dim A As Range, Ctr As Long
For Each A In [Limite].Areas
Ctr = Ctr + A.Rows.Count
Next A
Debug.Print "Lignes : " & Ctr
End Sub
Cordialement.
Daniel
"DanielCo" a écrit dans le message de news: mci6so$ju4$
Bonjour, Sub test() Dim A As Range, Ctr As Long For Each A In [Limite].Areas Ctr = Ctr + A.Rows.Count Next A Debug.Print "Lignes : " & Ctr End Sub Cordialement. Daniel
DanielCo
Et on peut faire plus complet si les plages distinctes risquent d'avoir des lignes communes. Daniel
Et on peut faire plus complet si les plages distinctes risquent d'avoir
des lignes communes.
Daniel
C'est écrit comme ça dans le marbre de l'aide VBA ;-) Donc, c'est pas un bug, c'est une remarque dans l'aide. Daniel
Je me disais quen en sélectionnant le range "limite" et demandant rows.count ça irait , mais non ...
c'est pourquoi je demande si c'est un bug ?
"DanielCo" a écrit dans le message de news: 54eca88a$0$2994$
Et on peut faire plus complet si les plages distinctes risquent d'avoir des lignes communes. Daniel
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
GL
Le 24/02/2015 17:18, Patrick a écrit :
Bonjour,
est ce un bug ou pas ?
Patrick
Un bug de plus ? Microsoft vous expliquera que non, c'est une /feature/.
Cependant : Range("$G$13:$L$13,$G$17:$L$17").Rows est une collection d'objets Range qui contient deux éléments (comme on peut le voir avec un For Each par exemple), par conséquent :
Range("$G$13:$L$13,$G$17:$L$17").Rows.Count
devrait renvoyer le nombre l'éléments de la collection (à savoir 2).
C'est le design même d'Excel qui est en cause : l'objet Range étant une merde absolue (désolé pour les 5 lettres, mais c'est mérité), l'objet Range(...).Rows
est en fait l'objet Range(...) agrémenté d'un flag "Rows" qui sera interprété différemment selon que le contexte est .Count, For Each etc.
En principe, Range(...).Rows devrait être l'objet Range avec des Areas re-dessinnée de sorte que chaque Area soit une ligne. Mais ce n'est évidemment pas le cas (pour des raisons, sans doute, d'optimisation, car, comme on sait, VBA, c'est tellement ultra rapide... no comment).
Cordialement.
Le 24/02/2015 17:18, Patrick a écrit :
Bonjour,
est ce un bug ou pas ?
Patrick
Un bug de plus ? Microsoft vous expliquera que non, c'est une /feature/.
Cependant : Range("$G$13:$L$13,$G$17:$L$17").Rows est une collection
d'objets Range qui contient deux éléments (comme on peut le voir avec
un For Each par exemple), par conséquent :
Range("$G$13:$L$13,$G$17:$L$17").Rows.Count
devrait renvoyer le nombre l'éléments de la collection (à savoir 2).
C'est le design même d'Excel qui est en cause : l'objet Range étant une
merde absolue (désolé pour les 5 lettres, mais c'est mérité), l'objet
Range(...).Rows
est en fait l'objet Range(...) agrémenté d'un flag "Rows" qui sera
interprété différemment selon que le contexte est .Count, For Each etc.
En principe, Range(...).Rows devrait être l'objet Range avec des Areas
re-dessinnée de sorte que chaque Area soit une ligne. Mais ce n'est
évidemment pas le cas (pour des raisons, sans doute, d'optimisation,
car, comme on sait, VBA, c'est tellement ultra rapide... no comment).
Un bug de plus ? Microsoft vous expliquera que non, c'est une /feature/.
Cependant : Range("$G$13:$L$13,$G$17:$L$17").Rows est une collection d'objets Range qui contient deux éléments (comme on peut le voir avec un For Each par exemple), par conséquent :
Range("$G$13:$L$13,$G$17:$L$17").Rows.Count
devrait renvoyer le nombre l'éléments de la collection (à savoir 2).
C'est le design même d'Excel qui est en cause : l'objet Range étant une merde absolue (désolé pour les 5 lettres, mais c'est mérité), l'objet Range(...).Rows
est en fait l'objet Range(...) agrémenté d'un flag "Rows" qui sera interprété différemment selon que le contexte est .Count, For Each etc.
En principe, Range(...).Rows devrait être l'objet Range avec des Areas re-dessinnée de sorte que chaque Area soit une ligne. Mais ce n'est évidemment pas le cas (pour des raisons, sans doute, d'optimisation, car, comme on sait, VBA, c'est tellement ultra rapide... no comment).
Je me disais quen en sélectionnant le range "limite" et demandant rows.count ça irait , mais non ...
c'est pourquoi je demande si c'est un bug ?
"DanielCo" a écrit dans le message de news: 54eca88a$0$2994$
Et on peut faire plus complet si les plages distinctes risquent d'avoir des lignes communes. Daniel
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
DanielCo
Le code "à l'épreuve des balles" serait donc (sous réserve) : Sub test2() With [Limite] For i = .Areas(1).Row To .Areas(.Areas.Count).Row + .Areas(.Areas.Count).Rows.Count - 1 If Not Intersect([Limite], Rows(i)) Is Nothing Then Ctr = Ctr + 1 End If Next i End With Debug.Print "Lignes : " & Ctr End Sub Daniel
Le code "à l'épreuve des balles" serait donc (sous réserve) :
Sub test2()
With [Limite]
For i = .Areas(1).Row To .Areas(.Areas.Count).Row +
.Areas(.Areas.Count).Rows.Count - 1
If Not Intersect([Limite], Rows(i)) Is Nothing Then
Ctr = Ctr + 1
End If
Next i
End With
Debug.Print "Lignes : " & Ctr
End Sub
Daniel
Le code "à l'épreuve des balles" serait donc (sous réserve) : Sub test2() With [Limite] For i = .Areas(1).Row To .Areas(.Areas.Count).Row + .Areas(.Areas.Count).Rows.Count - 1 If Not Intersect([Limite], Rows(i)) Is Nothing Then Ctr = Ctr + 1 End If Next i End With Debug.Print "Lignes : " & Ctr End Sub Daniel
DanielCo
Bonsoir Isabelle, Ca te donne le nombre de sous-plages, pas forcément le nombre de lignes : Sheets("Feuil1").Range("$G$13:$L$13,$G$17:$L$18").Name = "Limite" Range("Limite").Select Debug.Print Selection.Areas.Count Daniel
Je me disais quen en sélectionnant le range "limite" et demandant rows.count ça irait , mais non ...
c'est pourquoi je demande si c'est un bug ?
"DanielCo" a écrit dans le message de news: 54eca88a$0$2994$
Et on peut faire plus complet si les plages distinctes risquent d'avoir des lignes communes. Daniel
--- L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast. http://www.avast.com
Bonsoir Isabelle,
Ca te donne le nombre de sous-plages, pas forcément le nombre de lignes
:
Sheets("Feuil1").Range("$G$13:$L$13,$G$17:$L$18").Name = "Limite"
Range("Limite").Select
Debug.Print Selection.Areas.Count
Daniel
Bonsoir Isabelle, Ca te donne le nombre de sous-plages, pas forcément le nombre de lignes : Sheets("Feuil1").Range("$G$13:$L$13,$G$17:$L$18").Name = "Limite" Range("Limite").Select Debug.Print Selection.Areas.Count Daniel