VBA - Ajustement automatique d'opérations

Bonjour à tous,

Voilà, je travaille sur un fichier qui synthétise dans un 1er onglet l'inventaire d'un portefeuille de titres ("Nom", "quantité" et "prix d'achat moyen pondéré" sont les principales colonnes). Tous les jours, des opérations d'achat et de vente sont réalisées que je rentre ligne par ligne dans le deuxième onglet "operations". Ce que je cherche à réaliser est un bouton qui permettrait, une fois les opérations rentrées dans l'onglet "opérations", d'ajuster la quantité et le prix sur le 1er onglet. C'est à dire quand il s'agit d'une vente de quantité 60 sur A, la colonne quantité du 1er onglet pour le nom A est ajustée de "-60" (inversement pour un achat: on ajoute +60).

Cependant lorsque c'est un achat, j'aimerais également pouvoir ajuster le prix (pas nécessaire lorsque c'est une vente). Et pour l'ajuster, je souhaite appliquer un prix d'achat moyen pondéré (PAMP); la formule est la suivante : PAMP= ((ancienne quantité*ancien prix) +(quantité opération*prix opération))/(quantité avant opération + quantité de l'opération)

Bien sûr, je vous ai mis un exemple du calcul et du résultat qui est beaucoup plus simple qu'il n'en a l'air.

Je cherche spécifiquement à le faire sur VBA mais je suis ouvert à d'autres solutions. J'ai déjà commencé sur VBA à réaliser mon code mais étant bloqué, je pense que de le partager embrouillerait les cerveaux si je suis dans la mauvaise direction...

Le fichier en pj,

Merci énormément!

12book1.xlsm (12.81 Ko)

Bonjour,

Je trouve ta manière de faire un peu dangereuse. Il suffit d'avoir oublié et de refaire et tout devient faux...

Pour limiter les dégâts c'est mis à jour sur un double-clic en A.
Encore pour la même raison le fond passe en jaune.
Bien entendu le nouveau PRU est recalculé puisque le nombre détenu a changé.

J'ai mis ta table en Tableau. Il suffit de démarrer une nouvelle ligne pour le tableau s'agrandisse avec la formule.

Je me permet de te signaler un logiciel simple gratuit http://sweet-bourse.fr/
Pour moi il fait exactement ce que j'ai besoin et ce que tu fais : suivre les achats/vente sans tomber dans des trucs pro plus difficile à utiliser et dépassants le besoin.

19book1.xlsm (21.22 Ko)

eric

Bonjour Eric,

C'est exactement ce que je voulais, merci beaucoup! En effet, le surlignement en jaune permettrait de voir qu'on l'a déjà fait. Je sais que c'est peut-être un peu trop demandé mais s'il y a un moyen d'intégrer le calcul de PRU directement dans le code car quand on souhaite supprimer tout, pour "nettoyer" on supprime également les formules col E.

Merci énormément en tout cas, je ne connaissais pas Sweet-Bourse mais je suis plus Excel (j'ai mes habitudes maintenant!)...

on pourrait, mais le mieux est d'apprendre à utiliser les tableaux.
Sélectionne les lignes à supprimer, même pas besoin de sélectionner tous les champs, B2:B3 suffit, clic-droit dessus et 'Supprimer / Lignes du tableau'.
Tu peux aussi amener la souris juste au-dessus d'un titre, le curseur change pour te signaler que tu peux sélectionner toute la colonne.

Tu as l'impression qu'il n'y a plus de formule en E mais excel la garde dans un coin. Il suffit de faire une saisie pour qu'elle revienne.
Idem pour les formats et MFC.
eric

Ah d'accord, c'est donc parfait! Merci encore !

Tu devrais quand même prendre 5 min pour tester Sweet bourse
En prime tu peux suivre les évolutions au jour le jour, noter les dividendes pour voir les gains réels.
Sur excel, même une gestion minimale devient une usine à gaz toujours imparfaite

Re,

Je reviens juste pour dire que en faite, il y a un petit "hic". En effet, le calcul 'PRU' dans 'operations' ne correspond pas au nom de l'opération (qu'on met en colonne A). C'est à dire lorsque l'on inscrit un achat sur E par exemple, le PRU se calcul sur les données de la 1ere ligne du tableau 'principal', soit A et non pas E!

merci!

Bonjour,

ça c'est ta fomule qui est eronée.
Je ne l'avais pas contrôlée vu que ce n'était pas l'objet de la demande.

En E3 :
=SI(B3<>"Achat";"";((RECHERCHEV([@Nom];principal!$D:$G;3;FAUX)*RECHERCHEV([@Nom];principal!$D:$G;4;FAUX))+(C3*D3))/(C3+RECHERCHEV([@Nom];principal!$D:$G;3;FAUX)))
Au passage perd cette mauvaise habitude de laisser une ligne vide en haut non justifiée.
eric

un merci aurait été bienvenu...

Merci beaucoup! J'avais peur de l'avoir trop dit déjà...

Rechercher des sujets similaires à "vba ajustement automatique operations"