[EXCEL] evaluation à l'ouverture d'excel
rof
-
ze_rof Messages postés 8 Statut Membre -
ze_rof Messages postés 8 Statut Membre -
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
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:
- [EXCEL] evaluation à l'ouverture d'excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
4 réponses
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
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
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.
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.
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.
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.