Localiser les param d'une fonction

H

Hichem

Guest
<HTML>Bonjour,

Je vous présente mon problème:
J'ai un add-in qui contient un certain nombre de fonctions. Je veux déterminer la position d'un paramètre donné dans la liste des paramètres d'une fonction.
Exemple : Supposons qu'on a les fonctions suivantes:
-LibélléCompte(Compte) as String : fonction qui retourne le libellé d'un compte à partir du n° du compte,
-SoldeCompte(DateSolde,Compte) as double: fonction qui retourne le solde d'un compte à une date donnée.
La fonction à développer doit :
1-chercher les cellules qui contiennent un appel à l'une de ces deux fonctions,
2- Selon la fonction et selon la position du paramètre "compte", remplacer le contenu de la cellule passée en paramètre(qui présente le compte en question) par un nouveau numéro.
Donc, dans le cas suivant : $B$1=SoldeCompte($A$1,$A$2), la fonction cherche la position du paramètre compte(2ème param pour cette fonction), prend le contenu de $A$2 et le remplace par le nouveau n° de compte.
Par conséquent, $B$1 contiendra un nouveau résultat.
Merci d'avance.
J'espère que qcq pourra m'aider.</HTML>
 
S

Stéphane

Guest
<HTML>Bonjour,

voici une solution très très bâtarde je trouve.
à retenir surtout : la boucle sur les cellules contenant les formules

attention, j'ai mis aucune gestion d'erreur là-dedans, et cela suppose que les formules sur la feuille de calcul contiennent uniquement un numéro, ce numéro ne doit pas être donné par un calcul ou une autre référence.

pour envisager de pouvoir remplacer une référence, il faudrait des variables string au lieu des variables integer


Function test(anccompte As Integer, nvcompte As Integer)
For Each cl In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
If InStr(1, cl.Formula, "LibélléCompte") > 0 Then cl.Replace What:=anccompte, Replacement:=nvcompte ', SearchOrder:=xlByColumns, MatchCase:=True
If InStr(1, cl.Formula, "SoldeCompte") > 0 Then cl.Replace What:="," & anccompte & ")", Replacement:="," & nvcompte & ")" ', SearchOrder:=xlByColumns, MatchCase:=True


Next cl
ActiveSheet.Calculate
End Function


Sub kkk()
t = test(1, 5)

End Sub


pardonnez moi si vous trouvez ça trop bâtard

bye
stephane</HTML>
 

Discussions similaires

Réponses
0
Affichages
535
Réponses
3
Affichages
187