Sélectionner un range espacé de plusieurs lignes
Bonjour à tous,
Depuis ce matin je galère à trouver un code qui me sélectionne tous les ranges ci dessous espacés de 4 lignes par exemple:
For i =4 to derlgn step 4
.Range ( cells(i,3),cells(i,dercol)).select
Next
J'ai essayé avec une boucle, mais pas concluant
J'ai aussi essayé avec un filtre, pas concluant non plus
Sheets("Feuil1").Range("B1").AutoFilter Field:=2, Criteria1:="Echange"
Set tbl = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible)
numRows = tbl.Rows.Count
numColumns = tbl.Columns.Count
tbl.Resize(numRows - 1, numColumns - 2).Select
Selection.Name = "LstFC"
ActiveSheet.AutoFilterMode = False
Je voudrais avoir en sélection ce range : " .Range ( cells(i,3),cells(i,dercol)).select" toutes les 4 lignes et à partir de la ligne 4 jusqu'à derlgn. Pour par la suite nommer cette sélection.
Dans mon 2eme essai, j'ai fait un filtre car mon critère "Echange" apparait toutes les 4 lignes ( 4,8,12,16,20...)
Est que quelqu'un à une idée ?
Merci à vous
Bonjour,
Deux possibilités s'offrent à toi, la première est limitée par le nombre de caractères maxi que peut prendre une adresse pour un Range (255 caractères), 123 plages dans mon test :
Sub Test1()
'ici, la chaine ne peut pas dépasser 255 caractères
Dim I As Long
Dim Chaine As String
For I = 4 To 123 Step 4
Chaine = Chaine & Range(Cells(I, 3), Cells(I, 10)).Address(0, 0) & ","
Next
Chaine = Left(Chaine, Len(Chaine) - 1)
'Range(Chaine).Select'<--- soit avant...
ThisWorkbook.Names.Add "MaPlageAMoi", Range(Chaine)
Range("MaPlageAMoi").Select '<--- soit après
End Sub
La seconde, qui permet un bien plus grand nombre de plages (jai testé jusqu'à 10000) mais qui oblige 'dinitialiser la première plage avant la boucle :
Sub Test2()
'ici, j'ai testé jusqu'à 10000
Dim Plage As Range
Dim I As Long
Dim Chaine As String
'il faut initialiser une première plage...
Set Plage = Range(Cells(4, 3), Cells(4, 10))
'et commencer à 8
For I = 8 To 1000 Step 4
Set Plage = Union(Plage, Range(Cells(I, 3), Cells(I, 10)))
Next
'Plage.Select '<--- soit avant...
ThisWorkbook.Names.Add "MaPlageAMoi", Plage
Range("MaPlageAMoi").Select '<--- soit après
End Sub
Dans les deux proc, j'ai nommé la plage "MaPlageAMoi", adaptes. Tu doit aussi adapter les variables !
Super, merci à toi je vais réussir à l'adapter.
Bonne journée