VBA : Calcul dans une colonne mois par mois

Bonjour à tous,

Dans mon fichier, il y a la colonne L appelé : Rendement composés titres. Ces rendements sont exprimés jour par jour pendant 3 ans de mars 2000 à mars 2003.

Mon objectif est celui ci (a afficher dans la colonne O) : Faire une moyenne des rendements mois par mois grâce à la formule =Moyenne

Les dates à prendre en compte sont dans la colonne A ou E ( elle sont strictement pareil )

Par exemple :

Dans la cellule O2, j'aimerais une moyenne des rendements du 3 au 31 mars 2000

Dans la cellule O3, j'aimerais une moyenne des rendements du 1 er au 28 avril 2000

Dans la cellule O"x", j'aimerais une moyenne des rendements du 1er au 28 fevrier 2002.

J'aimerais donc faire un code VBA a partir de ca, mais je n'ai absolument aucune idée sur la facon de procéder !

le fichier est disponible à cette adresse, : https://www.cjoint.com/c/CChn4AWQREy

Merci à tous ceux qui m'aideront !

Jeanluc

Salut Jean-Luc,

Dans le fichier ci-joint tu as une macro qui calcule la moyenne mensuelle dans la colonne O. J’ai ajouté en plus le total en colonne P et le nombre de jours en colonne Q, mais ces deux dernières données sont inutiles pour le calcul en colonne O, on pourrait donc très bien les supprimer.

Cordialement.

200jean-luc.xlsm (100.17 Ko)
Yvouille a écrit :

Salut Jean-Luc,

Dans le fichier ci-joint tu as une macro qui calcule la moyenne mensuelle dans la colonne O. J’ai ajouté en plus le total en colonne P et le nombre de jours en colonne Q, mais ces deux dernières données sont inutiles pour le calcul en colonne O, on pourrait donc très bien les supprimer.

Cordialement.

Yvouille je te remercie, cela fonctionne parfaitement. Est il possible d'affecter la macro sur tous le classeur sans utiliser les boutons ?

Salut,

Pas la peine de reprendre tout mon message dans le tien

jeanluc17 a écrit :

Est il possible d'affecter la macro sur tous le classeur

Que veux-tu dire ? Tu as plusieurs fichiers avec la même construction et tu désirerais utiliser ma macro dans tous ceux-ci ? Si c'est bien ça, il faudrait t'expliquer comment tu dois t'y prendre afin de copier-coller la macro ? Ou tu parles de plusieurs feuilles d'un même fichier ?
jeanluc17 a écrit :

.........sans utiliser les boutons ?

Et que veux-tu dire par là ? A quel autre moment que lorsque tu cliques sur le bouton voudrais-tu que se déclenche la macro ?

A te relire.

Salut Yvouille,

Je voulais appliquer la macro à toutes les feuilles d'un meme fichier sans passer par les boutons ! Mais c'est ok j'ai réussi !

Bonne journée et merci

jeanluc17 a écrit :

Bonjour Yvouille,

Je reviens vers toi car tu m'as aidé il y a quelques temps sur ce sujet :

https://forum.excel-pratique.com/excel/vba-calcul-dans-une-colonne-mois-par-mois-t37526.html

j'aimerais faire quelque chose de sensiblement pareil mais je n'y arrive vraiment pas.

Le but est de calculer mois par mois, le rendement logarithmique brut grâce à la formule :

Ln(dernier jour du mois / premier jour du mois ) par exemple, comme dans le code que tu avais écris : Dans la cellule O22 j'aimerais que la formule appliquée soit : ln(F22/F2).

Pourrais tu m'aider ?

Jean luc

Salut Jean-Luc,

Merci de rester sur ton fil pour continuer la discussion.

Dans le fichier ci-joint, j'ai ajouté un calcul dans la colonne R. Dans la cellule R22 par exemple, j'y effectue le calcul F22/F2. Est-ce bien ce que tu désirais ?

Cordialement.

130jean-luc-v2.xlsm (101.70 Ko)

Bonjour Yvouille,

Pas de soucis je continue ici.

Merci c'était exactement ça.

J'ai également voulu faire la même procédure par année cette fois, toutefois VBA me dit " Incompatibilité de type", le "Year" pose problème.

Sub lnannuel()
Dim Première_Ligne As Integer, Dernière_Ligne As Integer, i As Integer
Application.ScreenUpdating = False
Retour:
Première_Ligne = ActiveCell.Row
Do Until Year(ActiveCell.Offset(1, 0)) <> Year(ActiveCell)
    If ActiveCell = "" Then Exit Sub
    ActiveCell.Offset(1, 0).Activate
Loop
Dernière_Ligne = ActiveCell.Row

Cells(Dernière_Ligne, 22) = Application.WorksheetFunction.Ln(Cells(Dernière_Ligne, 6) / Cells(Première_Ligne, 6))
ActiveCell.Offset(1, 0).Activate

GoTo Retour
End Sub

Merci,

Jean luc

Tu as mal recopié mon code Il manque la ligne

Range("E2").Activate

Cordialement.

Bien vu de ton côté et mal du mien

Merci et très bonne journée.

Rechercher des sujets similaires à "vba calcul colonne mois"