Microsoft 365 Nombre d'arguments dans un Array

Jojo973

XLDnaute Occasionnel
Supporter XLD
Bonjour,
Je dois trouver des plages de cellules bien précises lorsque l'on clique sur la feuille.
Il y a 11 colonnes et 120 lignes réparties sur 8 plages. Cela fait 88 arguments dans le array et cela ne passe pas
Je dépasse le nombre d'argument dans un tableau ou alors je pense qu'il est mal organisé :
VB:
plage = Array([D20:D50], [D51:D80], [D81:D92], [D93:D104], [D105:D113], [D114:D122], [D123:D131], [D132:D140], [E20:E50], [E51:E80], [E81:E92], [E93:E104], [E105:E113], [E114:E122], [E123:E131], [E132:E140], [F20:F50], [F51:F80], [F81:F92], [F93:F104], [F105:F113], [F114:F122], [F123:F131], [F132:F140], [G20:G50], [G51:G80], [G81:G92], [G93:G104], [G105:G113], [G114:G122], [G123:G131], [G132:G140], [I20:I50], [I51:I80], [I81:I92], [I93:I104], [I105:I113], [I114:I122], [I123:I131], [I132:I140], [J20:J50], [J51:J80], [J81:J92], [J93:J104], [J105:J113], [J114:J122], [J123:J131], [J132:J140], [K20:K50], [K51:K80], [K81:K92], [K93:K104], [K105:K113], [K114:K122], [K123:K131], [K132:K140], [L20:L50], [L51:L80], [L81:L92], [L93:L104], [L105:L113], [L114:L122], [L123:L131], [L132:L140], [M20:M50], [M51:M80], [M81:M92], [M93:M104], [M105:M113], [M114:M122], [M123:M131], [M132:M140], [N20:N50], [N51:N80], [N81:N92], [N93:N104], [N105:N113], [N114:N122], [N123:N131], [N132:N140])

Et il me manque encore les plages de la colonnes H

Il y a t il un moyen de ne pas rentrer autant d'arguments ou de tous les placer ?

Merci à vous.
 

piga25

XLDnaute Barbatruc
Bonjour,
peut être de cet façon :
VB:
Sub SimplifyRange()
    Dim plages As Collection
    Set plages = New Collection
    
    Dim cols As Variant
    cols = Array("D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N")
    
    Dim i As Integer
    Dim col As Variant
    For Each col In cols
        For i = 20 To 140
            Select Case i
                Case 20 To 50
                    plages.Add Range(col & "20:" & col & "50")
                Case 51 To 80
                    plages.Add Range(col & "51:" & col & "80")
                Case 81 To 92
                    plages.Add Range(col & "81:" & col & "92")
                Case 93 To 104
                    plages.Add Range(col & "93:" & col & "104")
                Case 105 To 113
                    plages.Add Range(col & "105:" & col & "113")
                Case 114 To 122
                    plages.Add Range(col & "114:" & col & "122")
                Case 123 To 131
                    plages.Add Range(col & "123:" & col & "131")
                Case 132 To 140
                    plages.Add Range(col & "132:" & col & "140")
            End Select
        Next i
    Next col
    
    ' Exemple de comment utiliser les plages
    Dim plage As Range
    For Each plage In plages
        ' Faites quelque chose avec chaque plage
        Debug.Print plage.Address
    Next plage
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Si vous tenez à un array unidimensionnel de range :
VB:
Sub test()
Const colonnes = "D E F G H I J K L M N"
Const lignes = "20:50 51:80 81:92 93:104 105:113 114:122 123:131 132:140"
Dim lesCols, lesLigs, i&, j&, n&, x
   lesCols = Split(colonnes): lesLigs = Split(lignes)
   ReDim plages(0 To (UBound(lesCols) + 1) * (UBound(lesLigs) + 1) - 1): n = -1
   For j = 0 To UBound(lesCols)
      For i = 0 To UBound(lesLigs)
         n = n + 1
         plages(n) = lesCols(j) & lesLigs(i)
         plages(n) = Replace(plages(n), ":", ":" & lesCols(j))
         Set plages(n) = Range(plages(n))
      Next i
   Next j
End Sub
 

Statistiques des forums

Discussions
313 317
Messages
2 097 119
Membres
106 844
dernier inscrit
mikael.barbeau