Excel VBA probleme variable Range fonction [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
26 décembre 2012
-
Messages postés
23475
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 septembre 2020
-
Bonjour à vous,
Je suis étudiant et je galère pour réaliser une fonciton avec un range pour variable.
Apres de nombreux essais en tout genre suite à la lecture des forums je viens vers vous:
Voici mon probleme:
Je veux tout simplement faire un calcul grace a une fonction VBA que voici:


Public Function beta1an(Y As Range, Z As Range)

Dim Plage_calcul As Range


Set Plage_calcul = Range("Y" & ":" & "Z")

beta1an = WorksheetFunction.Average(Plage_calcul)

End Function



Dois-je initialiser les ranges? est ce un probleme de syntaxe de declaraton de variables?
Merci pour votre aide, je m'arrache un peu les cheveux depuis quelques heures!!

Alkoyaya

4 réponses

Messages postés
23475
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 septembre 2020
6 342
Bonjour,

je pense que tu veux définir la plage de Y à Z.
Si c'est ça fais :
Public Function beta1an(Y As Range, Z As Range)
    Dim Plage_calcul As Range
    Set Plage_calcul = Range(Y.Address & ":" & Z.Address)
    beta1an = WorksheetFunction.Average(Plage_calcul)
End Function
eric
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
9
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
26 décembre 2012

Eh bien, si j'avais su que c'etait si simple....
Merci beaucoup, ca fonctionne parfaitement!

Pourrais-je cependant avoir une precision s'il vous plait:
Comment faire pour que le range selectionné ainsi soit fixe. Je me precise.

Je cherche à faire une opération sur le meme range (A1:A30) avec tout les jours l'insertion d'une ligne en haut de feuille, le range A1:A30 restant fixe(calcul de moyenne sur 1mois glissant). Or, et c'est logique, Excel decale automatique le Range en (A2:A31).
Derniere precision de taille: mettre des "$" ne change rien malheureusement!
En vous remerciant a nouveau, la encore jai perdu quelques cheveux!!!

Alkoyaya
Messages postés
23475
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 septembre 2020
6 342
Comme tu dis : c'est logique...
Si c'est tjs la même plage pourquoi lui passer en paramètre la zone (en 2 variables en plus) et ne pas la mettre en dur dans la macro ?

Et d'ailleurs pourquoi faire une fonction personnalisée qui n'apporte aucune plus-value à la fonction moyenne() ?

Sinon pour fixer ta plage tu peux utiliser indirect :
=beta1an(INDIRECT("A1");INDIRECT("B5"))

eric
Messages postés
9
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
26 décembre 2012

Decidement on dirait que tu viens de me sauver par 2 fois la mise, Eric!
Donc merci beaucoup une fois de plus.
Pourquoi creer une fonction personalisee? et bien car je ne connaissais pas du tout le "indirect" qui du coup me simplifie completement la vie!
Merci encore a toi!

Emilien
Messages postés
23475
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
12 septembre 2020
6 342
Ah ben tant mieux.... :-)
Bonne continuation
eric