XL 2016 Plages Continues et Discontinues, Areas (propriétés Count, Row, Column, Rows.Count, Columns.count)

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 !

crocrocro

XLDnaute Impliqué
Bonjour,
Les propriétés Count, Row, Column, Rows.Count, Columns.Count
d'une plage simple par exemple "$C$2:$H$14""
ou d'une plage équivalente, constituée de la concaténation de plages simples par exemple "$C$2:$D$10,$H$2:$H$14,$C$11:$D$14,$E$2:$G$14"
réservent parfois des surprises :
Contrairement à la propriété Count, les propriétés Column, Columns.Count, Row, Rows.Count sont celles de la 1ère Area de la Plage et non celles de la Plage !!!.

Le code VBA qui met cela en évidence

VB:
Sub TestPlageDiscontinue()
' Contrairement à la propriété Count,
'       les propriétés (Column, Columns.Count, Row, Rows.Count) sont celles de la 1ère Area de la Plage et non celles de la Plage !!!
' alors que les 2 plages (Plage continue et Plage Discontinue sont identiques)
    

    InfosPlageDiscontinue ActiveSheet.Range("$C$2:$H$14")
    InfosPlageDiscontinue ActiveSheet.Range("$C$2:$D$10,$H$2:$H$14,$C$11:$D$14,$E$2:$G$14") ' ici complet équivalent de "$C$2:$H$14"
    InfosPlageDiscontinue ActiveSheet.Range("$C$2:$D$10,$H$2:$H$14") ' ici 1ère aréa = $C$2:$D$10
    InfosPlageDiscontinue ActiveSheet.Range("$H$2:$H$14,$C$2:$D$10") ' ici 1ère aréa = $H$2:$H$14

End Sub

Sub InfosPlageDiscontinue(pRange As Range)
Dim MonArea As Range
Dim DerLig As Long, DerCol As Long
    DerLig = 0
    DerCol = 0
    
    Debug.Print _
        "===============================================================" & vbCrLf & _
        " Plage (pRange.) " & pRange.Address & vbCrLf & " ---> " & _
        " Count " & pRange.Count & _
        " Column " & pRange.Column & _
        " Columns.Count " & pRange.Columns.Count & _
        " Row " & pRange.Row & _
        " Rows.Count " & pRange.Rows.Count
        
    For Each MonArea In pRange.Areas
        Debug.Print _
            "---------------------" & vbCrLf & _
            " Area (MonArea.) " & MonArea.Address & vbCrLf & " ---> " & _
            " Count " & MonArea.Count & _
            " Column " & MonArea.Column & _
            " Columns.Count " & MonArea.Columns.Count & _
            " Row " & MonArea.Row & _
            " Rows.Count " & MonArea.Rows.Count
            
            DerLig = Application.Max(DerLig, MonArea.Row + MonArea.Rows.Count - 1)
            DerCol = Application.Max(DerCol, MonArea.Column + MonArea.Columns.Count - 1)
    Next MonArea
    Set MonArea = Nothing
    
    Debug.Print _
        vbCrLf & _
        "Dernière ligne   de la plage " & DerLig & vbCrLf & _
        "Dernière colonne de la plage " & DerCol & vbCrLf
End Sub

Le résultat dans la fenêtre d'exécution
===============================================================
Plage (pRange.) $C$2:$H$14
---> Count 78 Column 3 Columns.Count 6 Row 2 Rows.Count 13
---------------------
Area (MonArea.) $C$2:$H$14
---> Count 78 Column 3 Columns.Count 6 Row 2 Rows.Count 13

Dernière ligne de la plage 14
Dernière colonne de la plage 8

===============================================================
Plage (pRange.) $C$2:$D$10,$H$2:$H$14,$C$11:$D$14,$E$2:$G$14
---> Count 78 Column 3 Columns.Count 2 Row 2 Rows.Count 9
---------------------
Area (MonArea.) $C$2:$D$10
---> Count 18 Column 3 Columns.Count 2 Row 2 Rows.Count 9
---------------------
Area (MonArea.) $H$2:$H$14
---> Count 13 Column 8 Columns.Count 1 Row 2 Rows.Count 13
---------------------
Area (MonArea.) $C$11:$D$14
---> Count 8 Column 3 Columns.Count 2 Row 11 Rows.Count 4
---------------------
Area (MonArea.) $E$2:$G$14
---> Count 39 Column 5 Columns.Count 3 Row 2 Rows.Count 13

Dernière ligne de la plage 14
Dernière colonne de la plage 8

===============================================================
Plage (pRange.) $C$2:$D$10,$H$2:$H$14
---> Count 31 Column 3 Columns.Count 2 Row 2 Rows.Count 9
---------------------
Area (MonArea.) $C$2:$D$10
---> Count 18 Column 3 Columns.Count 2 Row 2 Rows.Count 9
---------------------
Area (MonArea.) $H$2:$H$14
---> Count 13 Column 8 Columns.Count 1 Row 2 Rows.Count 13

Dernière ligne de la plage 14
Dernière colonne de la plage 8

===============================================================
Plage (pRange.) $H$2:$H$14,$C$2:$D$10
---> Count 31 Column 8 Columns.Count 1 Row 2 Rows.Count 13
---------------------
Area (MonArea.) $H$2:$H$14
---> Count 13 Column 8 Columns.Count 1 Row 2 Rows.Count 13
---------------------
Area (MonArea.) $C$2:$D$10
---> Count 18 Column 3 Columns.Count 2 Row 2 Rows.Count 9

Dernière ligne de la plage 14
Dernière colonne de la plage 8
 
- 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 Programme trop lent
Réponses
12
Affichages
1 K
L
Réponses
9
Affichages
1 K
Z
Réponses
0
Affichages
554
Z
Réponses
8
Affichages
1 K
S
Réponses
13
Affichages
2 K
Stedemart
S
Réponses
1
Affichages
1 K
N
Réponses
5
Affichages
3 K
Nicocotte125
N
Retour