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

XL 2019 Range Union

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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
 
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...
 
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 :
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
711
Réponses
12
Affichages
1 K
Réponses
7
Affichages
672
Réponses
7
Affichages
992
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…