Sélection de gammes multiples à partir d'une string de plages

J'essaie de sélectionner plusieurs plages en même time. C'est à dire. B2: C2, B12: C12, B14: C14.

Code mis à jour

Sub MarkForDMSLookup() Dim MarkingSsortingng As Ssortingng Dim MarkingRange As Ssortingng j = 0 For i = 3 To 20 'LastRow() If Cells(i, 5) = "Yes" Then j = j + 1 MarkingRange = "B" & i & ":C" & i 'MsgBox MarkingRange If j = 1 Then MarkingSsortingng = MarkingRange If j > 1 Then MarkingSsortingng = MarkingSsortingng & ", " & MarkingRange If Cells(i, 5) = "No" Then Cells(i, 5).EntireRow.Hidden = True End If Next i 'MsgBox MarkingSsortingng Union(MarkingSsortingng).Select End Sub 

La balise Union me donne une inadéquation de type . Toute aide à l'alignment des types serait grandement appréciée.

En limitant la boucle pour passer de 2 à 20, je peux utiliser la balise Range au lieu de Union .

Je voudrais simplement utiliser un autofilter au lieu de boucler:

 Sub MarkForDMSLookup() Dim j As Long j = 0 With Range("E2:E" & LastRow()) .AutoFilter field:=1, Criteria1:="Yes" On Error Resume Next .Resize(.Rows.Count - 1).Offset(1, -3).Resize(, 2).SpecialCells(xlCellTypeVisible).Select On Error GoTo 0 End With End Sub Function LastRow() LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row End Function 
 Sub MarkForDMSLookup() Dim MarkingSsortingng As Ssortingng, _ MarkingRange As Ssortingng, _ FirstRun As Boolean, _ RgMarking As Range, _ RgTotal As Range, _ CounT As Long, _ ToTaL As Long FirstRun = True CounT = 0 ToTaL = 0 Set RgTotal = Nothing For i = 3 To LastRow If Cells(i, 5) <> "Yes" Then If Cells(i, 5) = "No" Then Cells(i, 5).EntireRow.Hidden = True Else MarkingRange = "B" & i & ":C" & i CounT = CounT + 1 ToTaL = ToTaL + 1 If FirstRun Then MarkingSsortingng = MarkingRange FirstRun = False Else MarkingSsortingng = MarkingSsortingng & ", " & MarkingRange End If If CounT <> 20 Then Else On Error GoTo ErrHandler Set RgMarking = Range(MarkingSsortingng) Set RgTotal = Union(RgTotal, RgMarking) On Error GoTo 0 MarkingSsortingng = vbNullSsortingng FirstRun = True CounT = 0 End If End If Next i Set RgTotal = Union(RgTotal, RgMarking) RgTotal.Select Exit Sub ErrHandler: MsgBox Err.Description & vbCrLf & Err.Number Resume Next End Sub