Comment écrire une donnée dans une cellule passée en argument ?

Comment écrire une donnée dans une cellule passée en argument ? - VB/VBA/VBS - Programmation

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 :jap:

Reply

Marsh Posté le 20-04-2015 à 22:48:27   

Reply

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 ?
- ...


---------------
Cordialement, Patrice
Reply

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 :
  1. Public Function macro_test(Valeur_Init As Double, Premiere_Cellule As Range)
  2.     Premiere_Cellule = 12 * Valeur_Init
  3.    
  4.     macro_test = 5
  5. End Function
  6. Public Sub test()
  7.     Call macro_test(Range("A1" ).Value, Range("A3" ))
  8. End Sub

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.

Reply

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
  

Reply

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 :jap:


Message édité par Astro-Pepito le 21-04-2015 à 21:17:58
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed