Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nombres de lignes dans une plage non-contigües

33 réponses
Avatar
Apitos
Bonjour =E0 tous,

J'ai la plage nomm=E9e "Limite" suivante :

=3DFeuil1!$G$13:$L$13;Feuil1!$G$17:$L$17



Quand je voudrais compter le nombre de lignes de cette plage, j'aurais touj=
ours 1, or il y a bien deux lignes :

'-------------------------------
Sub test0()
Dim x As Long

x =3D Range("Limite").Rows.Count
Debug.Print "Lignes =3D " & x

End Sub
'-------------------------------


Merci.

3 réponses

1 2 3 4
Avatar
DanielCo
Oui mais les sous-plages (Areas) peuvent se recouvrir.



C'est son problème. Elle a deux plages apparemment distinctes.
Daniel
Avatar
Apitos
Bonjour,

J'ai essayé un cas avec le dernier exemple de Daniel, et là j'ai une li gne de trop :

Sub test2()
Dim A As Range, Ctr As Long, Lignes As Long
'Set Limite = Range("A10:C10,A1:C3")
Set Limite = Range("A10:C10,C2:C12")
Limite.Select
For Each A In [Limite].Areas
Ctr = Ctr + 1
Lignes = Lignes + A.Rows.Count
Debug.Print "Zone " & Ctr & " contient " & A.Rows.Count&; " ligne(s )"
'"Lignes : " & A.Rows.Count
Next A
Debug.Print "la plage Limite contient " & Lignes; " lignes au total"
End Sub
Avatar
DanielCo
Bonjour,
tu as deux sous plages de 1 et 11 lignes. S'il s'agit de copier les
sous-plages, qu'est-ce que tu as de trop ? Qu'est-ce que tu veux copier
?
Daniel


Bonjour,

J'ai essayé un cas avec le dernier exemple de Daniel, et là j'ai une ligne de
trop :

Sub test2()
Dim A As Range, Ctr As Long, Lignes As Long
'Set Limite = Range("A10:C10,A1:C3")
Set Limite = Range("A10:C10,C2:C12")
Limite.Select
For Each A In [Limite].Areas
Ctr = Ctr + 1
Lignes = Lignes + A.Rows.Count
Debug.Print "Zone " & Ctr & " contient " & A.Rows.Count&; " ligne(s)"
'"Lignes : " & A.Rows.Count
Next A
Debug.Print "la plage Limite contient " & Lignes; " lignes au total"
End Sub
1 2 3 4