Comment écrire une donnée dans une cellule passée en argument ? - VB/VBA/VBS - Programmation
Marsh Posté le 20-04-2015 à 23:35:32
Sans le code, on peut hasarder :
- macro_test est-elle déclarée Function (et non Sub) ?
- macro_test est-elle dans un module classique (pas dans un module de feuille) ?
- macro_test est-elle déclarée Public ?
- ...
Marsh Posté le 21-04-2015 à 10:01:33
Voilà le bout de code, qui est placé dans un module classique (tout le code du module est affiché) :
Code :
|
Quand j'appelle la fonction test, j'ai bien la valeur attendue en A3. Quand j'appelle macro_test depuis la cellule A2 avec =macro_test(A1;A3), j'ai un #VALEUR dans A2 et rien ne se passe en A3. Si je mets un point d'arrêt sur la première ligne de la macro, je vais bien jusqu'à la ligne de remplissage de Premiere_Cellule mais l'exécution de cette ligne ne se fait pas bien : la macro s'arrête dès que je repars avec F5 ou F8. Le fait de rajouter As Double à la fin de la déclaration de macro_test ne résoud pas le problème.
Il doit bien y avoir un truc simple que je loupe, mais j'ai beau chercher je ne vois pas/plus la connerie que j'ai dû faire...
A noter que les données écrites sont un poil plus complexes dans mon cas réel mais ça n'a pas d'intérêt ici, ça ne fonctionne même pas avec des données aussi simples que celles présentées.
Marsh Posté le 21-04-2015 à 10:44:12
Bonjour, bonjour !
Une fonction personnalisée peut modifier uniquement la cellule appelante …
Voilà, voilà !
____________________________________________________________________
Je suis Charlie - Je suis Bardo
Marsh Posté le 21-04-2015 à 21:17:44
Ah ? Dommage, c'est une belle limitation
Je suis finalement passé par un bouton appelant une macro de type Sub et qui fait tout ce que je veux (comme la macro test du code précédent). C'est dommage car ça me force à passer les paramètres directement dans le code en utilisant des Range donnant accès aux cellules contenant les paramètres, mais au moins ça fonctionne.
Pas optimal mais bon, si c'est la seule solution je ferai comme ça !
Merci pour ton retour
Marsh Posté le 20-04-2015 à 22:48:27
Je bosse en VBA sous Excel 2007 et j'ai dans la cellule A2 la formule suivante : =macro_test(A1;A3). La macro macro_test a pour but d'écrire dans la cellule passée en deuxième argument (ici A3) un texte déduit de la valeur écrite dans la cellule passée en premier argument (ici A1). Cela fonctionne bien si j'appelle macro_test depuis une autre macro. Toutefois, quand il s'agit d'appeler la macro directement dans la cellule A2, j'obtiens un #VALEUR.
Auriez-vous donc une méthode qui me permette d'écrire un texte dans une cellule passée en argument de la macro lorsque celle-ci est appelée par une cellule ? Je n'ai pas le code testé sous la main mais je peux vous fournir ça demain.
Merci d'avance pour votre aide