Synthèse avec un variables tableaux

  • Initiateur de la discussion Initiateur de la discussion knaekes
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

Dernière édition:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
742
Retour