Comment passer une référence à une cellule ou objet Range en argument d'une fonction
Bonjour!
Je voudrais écrire une fonction (f1) qui prenne en argument la référence à une cellule et qui soit ensuite appelée dans une autre fonction (f2) en tant qu'argument.
Le pb que je rencontre c que je n'arrive pas réutiliser cette cellule dans la fonction f2 car je ne sais pas si je doit déclarer cette cellule comme un objet Range, ou en tant que chaîne de caractère (référence) . En gros, la fonction f2 doit pouvoir utiliser cette cellule car je voudrais me déplacer dans les cellules voisines. Il faut absolument que je passe en argument une référence à une cellule car je manipule des formules de maths derrière.
Pouvez-vous m'aider svp?
Merci de votre aide.
multiselection ds champ de page d un tableau croisé dynamique
Bonjour
Tout d'abord, merci de vos réponses.
Je vais reformuler ce que je veux faire, cela vous aidera à comprendre ma démarche.
1.Je manipule une feuille de calcul excel, dans laquelle je commence par écrire dans la première cellule une formule qui appelle une fonction f1 en VB. Cette fonction f1 prend en argument l'adresse (ou référence) de la cellule courante.
2.Cette fonction f1 effectue un certain nombre de calculs... et appelle une fonction f2 dans son code, qui elle va utiliser l'adresse de la cellule que j'avais passée en argument à f1. La fonction f2 utilise en faite cette adresse de cellule pour ajouter des résultats de calculs dans les cellules voisines (à la cellule passée en argument).
3. Je fais ensuite un autofill que me remplit la formule écrite en 1. à toute la colonne.
En résumé, lorsque mon code s'exécute dans l'ordre:
J'écris la formule dans la première cellule appellant la fonction f1; f1 appelle à son tour la fonction f2. Le autofill que j'ai fait m'assure qu'il va me faire cela sur toutes les cellules de ma colonne.
Code simplifié:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Sub Initialisation()
' Ecriture de la formule dans la première cellule
MaFeuille.Range("A1") = "Prime de l'option"
Range("A2").Select
ActiveCell.Formula = "=f1('$A2 ')"
'Remplissage des formules dans toute la colonne
Dim fin As String
Dim MonTab() As String
Dim MaPlagePremium As Range
Range("A1").Select
Selection.End(xlDown).Select
fin = ActiveCell.Address
MonTab = Split(fin, "$")
Set MaPlagePremium = ActiveSheet.Range("A3:S" & MonTab(2))
MaPlagePremium.Formula = MaPlagePremium.Cells(1).Formula
End sub
Function f1(cellule as Range)
Dim delta
....
....
delta=...
f2(cellule, delta)
End Function
Function f2(cellule As Range, Valeur as Double)
cellule.Select
ActiveCell.Offset(0, 1).Value = Valeur
End Sub |
N'hésitez pas si vous avez des questions.
Merci de votre aide.