Bloc Function et méthode range

ricoben

XLDnaute Nouveau
Supporter XLD
Bjr,
dans un bloc,
Public Function (param1,etc...) ...End Function

j'ai l'impression qu'on ne peut pas écrire:
si le param1=x alors worksheet(s).range("C1").value=Valeur.

les méthodes range ou cells ne peuvent pas être employées dans ce cadre?
Y a t il un autre moyen pour le faire?

Merci d'avance
 

Misange

XLDnaute Barbatruc
Re : Bloc Function et méthode range

Bonjour
Si bien sur :
Code:
Function test(ref As Range, param1 As Integer)
If param1 = 2 Then
test = ref.Value * param1
Else
test = ref.Value
End If
End Function

tu écris une valeur en A1
en A2 tu écris = test(A1;2) ou test(A1;54) et regarde ce qui se passe
 

Dranreb

XLDnaute Barbatruc
Re : Bloc Function et méthode range

Bonjour.

Si on peut. Coté VBA, ça marche très bien, si la fonction est à vocation de procédure normale appelée par du code, la valeur retournée servant juste de code retour d'erreur. Mais bien évidemment, elle restera sans effet si Excel est dans sa phase d'exécution des calculs. Il s'en suit qu'elle ne doit en aucun cas être employée dans une formule de cellule.
L'impasse faite par Excel sur toute modification de cellules pendant les calculs pourrait être contournée par l'inscription dans des variables globales de "consignes" d'exécution ultérieure, qui pourrait être exécutées par une Worksheet_Calculate.
Mais le plus souvent on peut s'en sortir en modifiant les cellules non pas dans des Function mais dans des Worksheet_Change en veillant à mettre Application.EnableEvents = False devant pour éviter un processus récursif.
 
Dernière édition:

ricoben

XLDnaute Nouveau
Supporter XLD
Re : Bloc Function et méthode range

merci pour la réponse, c'est toujours plus compliqué d'être synthétique.
En fait le changement de valeur d'une cellule dans la fonction est un élément de calcul du résultat à renvoyer par la fonction et non pas le résultat de la fonction elle même. et c'est là que ca bloque.
 

Misange

XLDnaute Barbatruc
Re : Bloc Function et méthode range

Je te fais la même réponse que dans ton autre fil : être synthétique c'est bien mais donner un exemple (un classeur !) en montrant ce dont tu pars, ce que tu voudrais passer en paramètre et ce à quoi tu voudrais aboutir, ce serait mieux.

quand tu imbriques deux fonctions d'excel, tu récupères le résultat de la première pour l'injecter dans la seconde. Tu peux faire la même chose avec des fonctions persos. Mais sans plus de précision sur ce que tu souhaites...
 

ricoben

XLDnaute Nouveau
Supporter XLD
Re : Bloc Function et méthode range

ci joint l'exemple qui est une modif. d'une autre application, donc bcp de chose non utilisée dans l'exemple.
L'idée est de passer d'un paramétrage classeur à un paramétrage ligne par ligne.
Merci pour votre aide.
 

Pièces jointes

  • PM.zip
    364.2 KB · Affichages: 23

Discussions similaires

Réponses
8
Affichages
700

Statistiques des forums

Discussions
312 654
Messages
2 090 564
Membres
104 577
dernier inscrit
GOGNAN