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
| Option Explicit
Option Base 1
Public Sub recherche_colonnes()
Dim T As Single
T = Timer
Dim derlign_b As Integer
With Worksheets("Données_brutes")
derlign_b = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
Dim dercol_d As Byte
Dim k As Byte
Dim lechamp As String
Dim tblo_ordre() As Variant
Dim ub As Byte
'Recherche de chaque champ de la feuille "Dest" dans la ligne 1 de la feeuille "Données_brutes"
With Worksheets("Dest")
dercol_d = .Cells(1, .Columns.Count).End(xlToLeft).Column
For k = 1 To dercol_d
ReDim Preserve tblo_ordre(1 To k)
'Debug.Print .Cells(1, k)
lechamp = .Cells(1, k).Value
With Worksheets("Données_brutes")
tblo_ordre(k) = Application.Match(lechamp, .Range("A1", .Cells(1, derlign_b)), 0)
'Debug.Print tblo_ordre(k)
End With
Next k
End With
ub = UBound(tblo_ordre)
Dim i As Integer, j As Byte
Dim tblo() As Variant
'Alimentation de la feuille de destination "Dest" dans l'ordre des colonnes
For i = 1 To derlign_b
For j = 1 To dercol_d
ReDim Preserve tblo(1 To j)
tblo(j) = Worksheets("Données_brutes").Cells(i, tblo_ordre(j))
Debug.Print tblo(j)
Next j
Worksheets("Dest").Range("A" & i).Resize(1, ub).Value = tblo
Erase tblo
Next i
Debug.Print "Temps écoulé : " & Int((Timer - T) + 0.5) & " seconde(s)."
End Sub |
Partager