Autres Xl07 : transformation dimensions tableau

erics83

XLDnaute Impliqué
Bonjour,

(j'ai préféré faire des petits dessins pour essayer que ce soit clair... (car j'ai toujours du mal à expliquer....

J'ai un Tblo :
1637331525974.png


J'aimerai le transformer à partir de la valeur tblo(x,1) pour obtenir ça :
1637331798292.png


La manipulation est :
1637332241991.png


aujourd'hui, je fais :

VB:
Sub es()

'creation tblo

tblo = Feuil1.Range("AC2:AJ" & Feuil1.Range("AJ" & Rows.Count).End(xlUp).Row)



'ce que je fais actuellement, mais qui n'est pas très rapide car 200000 lignes...

Set F = Feuil1

For i = 2 To F.Range("AC" & Rows.Count).End(xlUp).Row 'boucle

 

        tbl(F.Cells(i, 29), F.Cells(i, 30), 1) = F.Cells(i, 31)

        tbl(F.Cells(i, 29), F.Cells(i, 30), 2) = F.Cells(i, 32)

        tbl(F.Cells(i, 29), F.Cells(i, 30), 3) = F.Cells(i, 33)

        tbl(F.Cells(i, 29), F.Cells(i, 30), 4) = F.Cells(i, 34)

        tbl(F.Cells(i, 29), F.Cells(i, 30), 5) = F.Cells(i, 35)

        tbl(F.Cells(i, 29), F.Cells(i, 30), 6) = F.Cells(i, 36)

       

Next



End Sub

Mais je pense qu'il doit y avoir plus rapide.....

Merci pour votre aide,
 

Pièces jointes

  • Classeurtest.xlsm
    13.7 KB · Affichages: 4
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Comme ça peut être :
VB:
Sub es()
   Dim TDon(), Tblo(), N As Long, M As Long, L As Long, C As Long
   TDon = Feuil1.Range("AC2:AJ" & Feuil1.Range("AJ" & Rows.Count).End(xlUp).Row)
   ReDim Tblo(1 To WorksheetFunction.Max(WorksheetFunction.Index(TDon, 0, 1)), _
              1 To WorksheetFunction.Max(WorksheetFunction.Index(TDon, 0, 2)), _
              1 To 6)
   For L = 1 To UBound(TDon, 1)
      M = TDon(L, 1): N = TDon(L, 2)
      For C = 1 To 6: Tblo(M, N, C) = TDon(L, C + 2): Next C, L
   Stop
   End Sub
 

Discussions similaires

  • Question
Microsoft 365 ListBox TextBox
Réponses
5
Affichages
1 K

Statistiques des forums

Discussions
298 013
Messages
1 965 133
Membres
200 858
dernier inscrit
Unclebens