Macro qui adapte une formule automatiquement

Résolu/Fermé
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016 - 15 août 2016 à 11:57
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016 - 15 août 2016 à 14:02
Bonjour,

Je viens solliciter votre aide, dans un fichier excel j'ai beaucoup de donnees concernant un portefeuille, chaque jours je recois un nouveau fichier de data qui viens se coller dans mon fichier principal a l'aide d'une macro, j'ai donc des tableaux de donnees qui arrivent tous les jours et qui varient en taille.

Une de mes formules fait references a ces tableaux, comment puis je faire (par l'intermediaire d'une macro) etendre cette formule pour quelle corresponde automatiquement au bon nombre de lignes ?

ma formule : =SUMPRODUCT('PERFORMANCE EURO'!$AF$1:$DKE$1,'PERFORMANCE EURO'!AF22:DKE22)/'PERFORMANCE EURO'!$AE$1"

Vous l'aurez compris le DKE22 peux tres bien varier et se transformer en DKE450 ou plus.

Je precise ma formule fait reference a un onglet du meme fichier excel, celui ou les fameux tableaux arrivent.


D'avance, un grand merci


A voir également:

2 réponses

DjiDji59430 Messages postés 4043 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 10 mai 2024 647
15 août 2016 à 12:29
Bonjour,


=SUMPRODUCT('PERFORMANCE EURO'!$AF$1:$DKE$1,'PERFORMANCE EURO'!AF22:DKE22)/'PERFORMANCE EURO'!$AE$1"

Essaye


=SUMPRODUCT(DECALER('PERFORMANCE EURO'!$AF$1;0;0;1;EQUIV(9^9^9;1:1;1)-COLONNE('PERFORMANCE EURO'!$AF$1)+1),DECALER('PERFORMANCE EURO'!$AF$22;0;0;1;EQUIV(9^9^9;1:1;1)-COLONNE('PERFORMANCE EURO'!$AF$22)+1)/'PERFORMANCE EURO'!$AE$1"

Tu peux remplacer -COLONNE('PERFORMANCE EURO'!$AF$1)+1) par sa valeur (que je n'ai pas calculée)

Crdmt
0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
15 août 2016 à 12:52
Lorsque je rentre la formule cette derniere ne marche pas helas.

Par contre je recherche plutot une macro, un code VBA qui m'automatiserais tout ca j'ai vu qu'il etait question de xlDown mais j'ai beaucoup de mal a mettre tout ca en forme.
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
Modifié par Gyrus le 15/08/2016 à 13:53
Bonjour,

Si toutes les cellules de la plage AF1:AFx sont remplies, tu peux effectuer le comptage des lignes afin de décaler la plage au fur et à mesure du remplissage.

Pour simplifier la formule, tu crées 3 plages nommées :
Plage1 : ='PERFORMANCE EURO'!$AF$1:$DK$1
Plage2 : =OFFSET('PERFORMANCE EURO'!AF1:DK1,COUNTA('PERFORMANCE EURO'!$AF:$AF)-1,0)
Plage3 : ='PERFORMANCE EURO'!$AE$1


Résultat :
=SUMPRODUCT(Plage1,Plage2)/Plage3


et si tu veux absolument une macro (avec le résultat dans la cellule A2 de la feuille active :
Sub Test()
With Worksheets("PERFORMANCE EURO")
ActiveSheet.Range("A2") = Application.SumProduct(.Range("$AF$1").Resize(, 84), .Range("$AF$1").End(xlDown).Resize(, 84)) / .Range("$AE$1")
End With
End Sub


A+
0
Ljonnier Messages postés 31 Date d'inscription lundi 15 août 2016 Statut Membre Dernière intervention 23 novembre 2016
15 août 2016 à 14:02
C'est super ! Merci infiniement ;)
0