1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
Sub Test()
Dim Plage As Range
Dim Cel As Range
Dim Tablo()
Dim Tbl
Dim I As Integer
Dim J As Long
Dim K As Integer
Dim Adr As String
'plage défini sur la colonne A à partir de A1
With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'tableau des secteurs, à adapter
Tbl = Array("a1", "a2", "a3")
'boucle sur les secteurs...
For I = 0 To UBound(Tbl)
Set Cel = Plage.Find(Tbl(I), , xlValues, xlWhole)
'si trouvé, stocke les valeurs des 18 lignes qui suivent dans un tableau
'ici, pour l'exemple, ce sont les valeurs de cinq colonnes qui sont récupérées
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
For K = 1 To 18
J = J + 1: ReDim Preserve Tablo(1 To 5, 1 To J)
Tablo(1, J) = Cel.Offset(K, 0).Value
Tablo(2, J) = Cel.Offset(K, 1).Value
Tablo(3, J) = Cel.Offset(K, 2).Value
Tablo(4, J) = Cel.Offset(K, 3).Value
Tablo(5, J) = Cel.Offset(K, 4).Value
Next K
Set Cel = Plage.FindNext(Cel)
Loop While Adr <> Cel.Address
End If
Next I
'supprime toutes les valeurs de la feuille et colle le tableau
With ActiveSheet
.Cells.Clear
.Range(.Cells(1, 1), .Cells(UBound(Tablo, 2), 5)).Value = Application.Transpose(Tablo)
End With
End Sub |
Partager