rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Excel besoin d'aide pour un tableau dynamique

Posté par noid wan, le mercredi 26 mars 2008 à 10:16:38
Bonjour,

Je nes sais pas vraiment si je poste au bon endoit, si ce n'est pas le cas je déplacerai..

Alors voilà, j'ai vraiment besoin d'aide sur cette macro, je crois que j'atteind mon seuil de compétence (apres examen de plusieurs topics, j'ai l'impression d'avoir fait tout bien,.. erf ce n'est sans doute pas le cas.)

Ma macro a pour but, a partir d'un tableau d'achat/vente de sicav, de calculer la plus-value à chaque vente, selon la méthode FIFO ou PEPS. (premier entrée premier sorti). Pour les non-familiers cela consiste a vendre les premières actions achetées avant les dernières, de manières a maximiser le profit - ah le capitalisme...

Mes en-têtes de colonnes sont : en colonne 3 se trouve la valeur de l'action et en colonne 11 le nb d'action vendues ou achetées par date.

voici la macro (j'ai essayé de commenter au maximum.)

Private Sub fifobtn_Click()

Dim x As Long, y As Long, CA As Long, NA As Long, RA As Long
Dim i As Long, j As Long, ENDT As Long, k As Integer
'declaration d'un tableau dynamique TabDyn
Dim TabDyn() As Variant, TabRow As Integer, NBVente As Long, NBVenteCalcul As Long
Dim A As Integer, B As Integer, C As Integer

'initialisation
ReDim TabDyn(0 To 0, 0 To 0)
CA = 0
NA = 0
RA = 0
B = 1
'on determine la longueur des colonnes de données a traiter
ENDT = ActiveSheet.range("D7").End(xlDown).Rows.Count

'parcours la colonne des achat/vente
For i = 0 To ENDT

'pour caque vente (valeur positive, on stocke la valeur et on calcule la + value
If Cells(11, i + 2).Value <= 0 Then NBVente = Cells(11, i + 2).Value And A = i + 2
NBVenteCalcul = NBVente
TotalGroupe = 0
TabRow = 0

While B <> 0

'on parcours le tableau en sens inverse pour déterminer quel stock doit etre vendu
While NBVenteCalcul <> 0 And C >= 0
For k = A - 1 To 0 Step -1
If Cells(11, k).Value >= 0 And NBVenteCalcul - Cells(11, k).Value <= 0 Then TabDyn(TabRow, 0) = Cells(11, k).Value And NBVenteCalcul = NBVenteCalcul - Cells(11, k).Value
If Cells(11, k).Value <= 0 Then C = 1
If Cells(11, k).Value >= 0 Then TabDyn(TabRow, 1) = Cells(3, k).Value
If NBVente - Cells(11, k).Value <= 0 Then TabDyn(TabRow, 1) = (Cells(3, k) - NBVenteCalcul) And B = 0
Next k
Wend
'on recupère la dimension de notre tableau dynamique avant de faire le total
L = UBound(TabDyn, 1)

For k = 0 To L Step 1
'l'erreur se trouve la ...mais d'ou vient-elle.. mystère
TotalGroupe = TotalGroupe + (TabDyn(k, 0) * TabDyn(k, 1))
Next k

'on reset le tableau
Erase TabDyn

Wend

'ecriture des plus-values
Cells(13, i).Value = TotalGroupe

Next i



End Sub


voila un grand merci par avance pour le temps que vous pourrez me consacrer.
Configuration: Windows XP
Internet Explorer 7.0
Répondre à noid wan  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 gbinforme, le mercredi 26 mars 2008 à 11:43:20
bonjour

Sans les données ce n'est pas facile de tout comprendre mais il me semble qu'il y a une incohérence au départ.

'on determine la longueur des colonnes de données a traiter
ENDT = ActiveSheet.range("D7").End(xlDown).Rows.Count


Ceci me paraît avoir du mal à fonctionner car en même temps tu utilises ENDT dans la variation des colonnes :
For i = 0 To ENDT

If Cells(11, i + 2).Value
Ici tu devrais inverser car tu fais progresser les colonnes et ta macro ne traite que la ligne 11.

Il me semble que c'est de là que vient le malaise ?
Toujours zen
Répondre à gbinforme
Logiciels pertinents trouvés dans les téléchargements
Télécharger Excel Viewer 2003Excel Viewer - Avec Microsoft Office Excel Viewer 2003, vous pouvez ouvrir, afficher et imprimer des classeurs Excel (fichiers XLS ), même...Catégorie: Tableur
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger MediaInfo 0.7.7.4MediaInfo - MediaInfo fournit la liste des codecs nécessaires ainsi que des informations techniques sur vos fichiers vidéo et audio. ...Catégorie: Codecs
Licence: Open Source
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Plus de logiciels gratuits sur « Excel besoin d'aide pour un tableau dynamique »