Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Range Union

vgendron

XLDnaute Barbatruc
Bonjour

j'ai un souci que je ne m'explique pas lorsque je selectionne une plage contigue ou pas

dans l'exemple ci joint
je set une plage simple (la plage Jaune)
je la selectionne (.select)
je vérifie le nombre de ligne (rows.count)
jusque la . ok

maintenant, si je set une plage avec la méthode union.. (la plage verte)
je selectionne la plage==> OK
MAIS le nombre de lignes m'indique que seule la première partie est prise en compte
qu'est ce qui cloche??
l'idée au final serait de pouvoir boucler sur les 7 lignes qu'est censée contenir cette plage fractionnée..
 

Pièces jointes

  • UnionRange.xlsm
    14.6 KB · Affichages: 3
Solution
Bonsoir vgendron, le fil

Et comme ceci
Code:
Sub test_ii()
Dim ZoneFractionnée As Range, lig%
With ActiveSheet
Set ZoneFractionnée = Union(.Range("A9:A11"), .Range("C2:C5"))
For i = 1 To ZoneFractionnée.Areas.Count
lig = lig + ZoneFractionnée.Areas(i).Rows.Count
Next
End With
MsgBox "La zone fractionnée contient: " & lig & " lignes.", vbInformation
End Sub

Staple1600

XLDnaute Barbatruc
Bonsoir vgendron, le fil

Et comme ceci
Code:
Sub test_ii()
Dim ZoneFractionnée As Range, lig%
With ActiveSheet
Set ZoneFractionnée = Union(.Range("A9:A11"), .Range("C2:C5"))
For i = 1 To ZoneFractionnée.Areas.Count
lig = lig + ZoneFractionnée.Areas(i).Rows.Count
Next
End With
MsgBox "La zone fractionnée contient: " & lig & " lignes.", vbInformation
End Sub
 

vgendron

XLDnaute Barbatruc
hello @Staple1600 et merci

ok.. je retrouve bien toutes les lignes
et ca veut donc dire que par défaut.. si on ne précise pas le areas, il prend la première
ca veut donc dire aussi que si je veux parcourir toutes les lignes, je ne peux pas avec une simple boucle..
il me faut une seconde boucle pour acceder aux Areas...
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

C'est exactement ce que dit l'aide de Microsoft : https://learn.microsoft.com/fr-fr/office/vba/api/excel.range.rows

En particulier :
 

patricktoulon

XLDnaute Barbatruc
bonjour
union n'est pas forcement nécessaire pour une selection multiple
VB:
Sub test()
    Dim ZoneSimple As Range
    Dim ZoneFractionnée As Range
    Dim lig&, nbcel&, Area As Range

    With ActiveSheet
        Set ZoneSimple = .Range("A2:A8")
        ZoneSimple.Select
        MsgBox "nb de ligne de la zone simple:" & ZoneSimple.Rows.Count

        Set ZoneFractionnée = .Range("A9:A11,C2:C5")
        With ZoneFractionnée
            '.Select
            texte = .Address(0, 0) & vbCrLf & .Areas.Count & " areas" & vbCrLf
            For Each Area In .Areas
                lig = lig + Area.Rows.Count
                nbcel = nbcel + Area.Cells.Count
            Next
            texte = texte & lig & " lignes selectionnées" & vbCrLf & nbcel & " cellules"
        End With
    End With
    MsgBox texte

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…