Optimiser traitement VBA avec les tableaux

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 !

nougitch

XLDnaute Occasionnel
Bonjour,

Je souhaite utiliser des tableaux pour le traitement suivant :

Faire le recapitulatif d'un tableau. Pour cela, les books qui auront un montant different de 0 seront copies dans un autre tableau (nom du book + montant associe).

Ensuite, c'est plutot pour des raisons d'optimisation... Quelle est la meilleure methode pour faire la meme chose, mais avec deux colonnes en plus ? La premiere sera une donnee commune a tous les books et la seconde, sera une colonne reprenant le total + les interets (prenons 5% par exemple).
Pour cette deuxieme question, je sais le faire en faisant un for each mais c'est tres long dans mon cas reel qui comporte bien plus de donnes.

Cela peut paraitre complique mais le fichier joint est tres clair.

Merci par avance pour votre aide.
Cdt,
 

Pièces jointes

Re : Optimiser traitement VBA avec les tableaux

Bonsoir,

Voir PJ

Code:
Sub Essai()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("b5", [b65000].End(xlUp))
    If c.Offset(0, 1).Value <> 0 Then mondico(c.Value) = c.Offset(0, 1)
  Next c
  a = mondico.keys
  b = mondico.items
  ligne = 17
  col = 11
  For i = LBound(b) To UBound(b)
    Cells(i + ligne, col) = "x"
    Cells(i + ligne, col + 1) = a(i)
    Cells(i + ligne, col + 2) = b(i)
    Cells(i + ligne, col + 3) = b(i) * 1.05
   Next i
End Sub


JB
 

Pièces jointes

Re : Optimiser traitement VBA avec les tableaux

Au départ, je pensais qu'il y avait des doublons:


Code:
Sub Essai1()
  ligne = 17
  col = 11
  For Each c In Range("b5", [b65000].End(xlUp))
    If c.Offset(0, 1).Value <> 0 Then
      Cells(ligne, col) = "x"
      Cells(ligne, col + 1) = c
      Cells(ligne, col + 2) = c.Offset(0, 1)
      Cells(ligne, col + 3) = c.Offset(0, 1) * 1.05
      ligne = ligne + 1
    End If
  Next c
End Sub

JB
 
Re : Optimiser traitement VBA avec les tableaux

En VBA Excel,le temps d'accès aux cellules est important.
Si les champs traités sont très importants,il peut être intéressant de lire les champs dans des tableaux en mémoire et d'effectuer les traitement sur ces tableaux.
Sur cet exemple,je ne pense pas que ce soit nécessaire.

Les tableaux

JB
 
- 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
Retour