Excel VBA probleme variable Range fonction
Résolu
alkoyaya
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Excel VBA probleme variable Range fonction
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Fonction moyenne excel - Guide
- Déplacer colonne excel - Guide
4 réponses
Bonjour,
je pense que tu veux définir la plage de Y à Z.
Si c'est ça fais :
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 Functioneric
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
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
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
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