Excel VBA probleme variable Range fonction

Résolu/Fermé
alkoyaya Messages postés 8 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 26 décembre 2012 - 8 juin 2008 à 14:18
eriiic Messages postés 24467 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 1 décembre 2022 - 8 juin 2008 à 17:33
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

eriiic Messages postés 24467 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 1 décembre 2022 7 143
8 juin 2008 à 15:05
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
alkoyaya Messages postés 8 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 26 décembre 2012
8 juin 2008 à 15:43
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
0
eriiic Messages postés 24467 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 1 décembre 2022 7 143
8 juin 2008 à 17:06
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
0
alkoyaya Messages postés 8 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 26 décembre 2012
8 juin 2008 à 17:26
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
0
eriiic Messages postés 24467 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 1 décembre 2022 7 143
8 juin 2008 à 17:33
Ah ben tant mieux.... :-)
Bonne continuation
eric
0