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 61
| Type StructData
NomFeuille As String
Tbl() As Variant
End Type
Sub aa()
Dim S As Worksheet
Dim var
Dim i&
Dim j&
Dim k&
Dim myData(1 To 3) As StructData
Dim Cpt&(1 To 3)
'---
'--- On monte toutes les données d'un seul coup ---
Set S = Sheets("Sources")
var = S.[a1].CurrentRegion
'--- On les attribue aux différents tableaux (Tbl) selon le cas ---
For i& = 1 To UBound(var, 1)
Select Case var(i&, 3)
Case "Dispatch1"
myData(1).NomFeuille = "Reponse1"
Cpt&(1) = Cpt&(1) + 1
ReDim Preserve myData(1).Tbl(1 To UBound(var, 2), 1 To Cpt&(1))
For j& = 1 To UBound(var, 2)
myData(1).Tbl(j&, Cpt&(1)) = var(i&, j&)
Next j&
'---
Case "Dispatch2"
myData(2).NomFeuille = "Reponse2"
Cpt&(2) = Cpt&(2) + 1
ReDim Preserve myData(2).Tbl(1 To UBound(var, 2), 1 To Cpt&(2))
For j& = 1 To UBound(var, 2)
myData(2).Tbl(j&, Cpt&(2)) = var(i&, j&)
Next j&
'---
Case "Dispatch3"
myData(3).NomFeuille = "Reponse3"
Cpt&(3) = Cpt&(3) + 1
ReDim Preserve myData(3).Tbl(1 To UBound(var, 2), 1 To Cpt&(3))
For j& = 1 To UBound(var, 2)
myData(3).Tbl(j&, Cpt&(3)) = var(i&, j&)
Next j&
End Select
Next i&
'--------------------------------------------------------
'on peut faire des traitements sur chaque myData.Tbl
'ATTENTION : les lignes sont en colonnes et vice versa
'--------------------------------------------------------
'--- Inscription dans les feuilles de destination (ici à partir de A1 mais à vous de voir ) ---
For i& = 1 To UBound(myData)
Set S = Sheets(myData(i&).NomFeuille)
'--- On inscrit à partir de A1 ---
S.Range(S.Cells(1, 1), S.Cells(UBound(myData(i&).Tbl, 2), UBound(myData(i&).Tbl, 1))) = _
Application.WorksheetFunction.Transpose(myData(i&).Tbl)
Next i&
End Sub |
Partager