Bonjour,
Si la concaténation de tes adresses risques de dépasser 255 caractères (virgules comprises), l'utilisation de "Range()" générera une erreur alors que l'union de plage te permet d'aller beaucoup plus loin mais il faut faire une boucle.
Voir ce post :
https://forum.excel-pratique.com/excel/selectionner-un-range-espace-de-plusieurs-lignes-t101871.html
Un petit test avec Join() (qui, en passant, est une très bonne idée de h2so4 que je salut au passage de même que MFerrand) :
Sub Test()
Dim I As Long
Dim J As Long
Dim Chaine As String
Dim T
For I = 4 To 228 Step 4 '227<--- avec 227; pas d'erreur
Chaine = Chaine & Cells(I, 3).Address(0, 0) & ","
Next
Chaine = Left(Chaine, Len(Chaine) - 1)
MsgBox Len(Chaine)
T = Array(Chaine)
Range(Join(T, ",")).Select
End Sub
Le code avec l'union de plages:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range
Dim Tbl
Dim I As Long
Tbl = Array("B6", "D6", "F6", "H6", "J6", "B10", "D10", "F10", "H10", "J10")
'initialiser la plage
Set Plage = Range(Tbl(0))
For I = 1 To UBound(Tbl): Set Plage = Union(Plage, Range(Tbl(I))): Next I
If Not Application.Intersect(Target, Plage) Is Nothing Then MsgBox "OK !"
End Sub