[EXCEL] evaluation à l'ouverture d'excel

Fermé
rof - 4 août 2008 à 16:03
ze_rof Messages postés 8 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 6 août 2008 - 5 août 2008 à 18:07
Bonjour,

j'ai crée une fonction personnalisée pour une feuille excel, celle ci fonctionne bien.
Mais lors de l'ouverture du fichier à la place de la valeur numérique excel me renvoie #valeur!
je double clic sur la cellule en question et il me donne la bonne valeur, ce qui prouve que la fonction marche.
ex:

dans la cellule B1 je met =mafonction(A1)
à l'ouverture j'obtiens dans B1 #valeur!
je demande une ré-évaluation de la cellule et la valeur numérique attendue apparait.

le problème à l'air de provenir du fait que dans le code de la fonction j'utilise des lignes de code de type

Sheets("feuill1").cells(ligne,colonne).value

car si je les remplace toutes j'ai le comportement voulu. Pour les remplacer j'ai pensé à mettre mes données en paramètres, mais j'ai besoin d'accéder à beaucoup de valeurs dans la feuille et je ne voudrait pas être obliger de les mettre en paramètre de ma fonction (question d'élégance).

quelqu'un aurait-il une idée??


merci d'avance
A voir également:

4 réponses

thev Messages postés 1922 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 16 décembre 2024 692
5 août 2008 à 11:30
Tu peux essayer de déclencher ta procédure à partir d'un code de ce type attaché à la feuille considérée :

Private Sub Worksheet_Change(ByVal Target As Range)
'***** code exécuté lorsqu'un événement de mofication d'une cellule de la feuille se produit

'** si la cellule modifiée est B1
If Target.Cells = Range("B1") Then
'** tu exécutes ta procédure
Call Ta_procédure
End If

End Sub
2
thev Messages postés 1922 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 16 décembre 2024 692
4 août 2008 à 17:39
D'après ce que tu exposes, ta "fonction" ressemble beaucoup plus à une procédure.
Une fonction ne fait pas appel à des valeurs fixes pour une feuille ou une cellule, elle passe par des paramètres de l'ordre de 1 à 4 en général.
Transforme donc ta fonction en procédure et appelle cette dernière à l'ouverture de ton classeur.
0
effectivement je pourrai faire une procédure et la mettre dans auto_open().
j'ai déjà essayé et cela me donne pas le résultat escompter. c'est un peu compliqué, car
la feuille excel dans laquelle je code est incluse dans une feuille de calcul Mathcad (logiciel pour faire des calculs d'ingénierie). Et j'ai besoin de faire communiquer les deux logiciels !
La procédure auto_open fonctionne mal dans ce cas la, car les valeurs doivent être mise à jour même sans ré-ouverture de la feuille excel (dans ce cas, il me faudrait une routine qui se lance à chaque modification de la feuille excel).
je pense que j'ai pas le choix que de passer de grandes zones de données en paramètres.
0
ze_rof Messages postés 8 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 6 août 2008 1
5 août 2008 à 18:07
parfait, ca a réglé mon problème merci
0