Synthèse avec un variables tableaux

knaekes

XLDnaute Occasionnel
Bonjour,

je souhaite réaliser une synthèse en utilisant les variables tableaux. Pour le moment j'arrive à lister les données de références (abscisses, ordonnées) mais je n'arrive pas à remplir le tableau en utilisant les variables tableau. Dans mon cas le tableau source est bien plus grand que dans le fichier exemple (en pièce jointe), d'où mon souhait de passer par des variables tableau au lieu de faire une série de boucles.

Merci d'avance pour votre aide :)
 

Pièces jointes

  • Synthèse.xlsm
    19.3 KB · Affichages: 29
  • Synthèse.xlsm
    19.3 KB · Affichages: 20

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Synthèse avec un variables tableaux

Bonsoir,

Code:
Sub SousTotalNonTrié()
  Set f1 = Sheets("données")
  Set f2 = Sheets("synthèse")
  fin = f1.[a65000].End(xlUp).Row
  a = f1.Range("A1:M" & fin)
  Set d1 = CreateObject("Scripting.Dictionary")
  j = 0
  For i = 2 To UBound(a)
    If Not d1.exists(a(i, 1)) Then j = j + 1: d1(a(i, 1)) = j
  Next i
  Dim b(): ReDim b(0 To d1.Count, 1 To 5)
  For ligne = 2 To UBound(a)
    p = d1(a(ligne, 1))
    b(p, 1) = a(ligne, 1)
    For k = 1 To 4: b(p, k + 1) = b(p, k + 1) + a(ligne, (k - 1) * 3 + 2): Next k
  Next ligne
  For k = 1 To 4: b(0, k + 1) = a(1, (k - 1) * 3 + 2): Next k
  f2.[I10].Resize(UBound(b) + 1, UBound(b, 2)) = b
End Sub

Cf Indexation tableau 2D par un dico

JB
 

Pièces jointes

  • Synthèse.xlsm
    19.8 KB · Affichages: 62
  • Synthèse.xlsm
    19.8 KB · Affichages: 58
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Synthèse avec un variables tableaux

bonjour knaekes , BOISGONTIER :):)

une facon un peu differente

Code:
Sub es()
   Dim t(), i As Long, m As Object, c As Byte
   Set m = CreateObject("Scripting.Dictionary")
   t = Feuil1.Range("a2:k" & Feuil1.Cells(Rows.Count, 1).End(3).Row)
   For i = 1 To UBound(t)
   t(i, 3) = t(i, 5): t(i, 4) = t(i, 8): t(i, 5) = t(i, 11)
   If m.Exists(t(i, 1)) Then
   For c = 2 To 5:  t(m(t(i, 1)), c) = t(m(t(i, 1)), c) + t(i, c): Next c
   Else
   x = x + 1
   For c = 1 To 5: t(x, c) = t(i, c): Next c:   m(t(i, 1)) = x
   End If
   Next i
   Feuil2.[a3].Resize(x, 5) = t
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 551
Membres
103 246
dernier inscrit
blablasss