Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1321 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2256228
Astro-Pepi​to
Posté le 20-04-2015 à 22:48:27  profilanswer
 

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:

mood
Publicité
Posté le 20-04-2015 à 22:48:27  profilanswer
 

n°2256232
patrice337​40
Avec la réponse, c'est facile.
Posté le 20-04-2015 à 23:35:32  profilanswer
 

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
n°2256259
Astro-Pepi​to
Posté le 21-04-2015 à 10:01:33  profilanswer
 

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.

n°2256261
Marc L
Posté le 21-04-2015 à 10:44:12  profilanswer
 

 
           Bonjour, bonjour !
 
           Une fonction personnalisée peut modifier uniquement la cellule appelante …
 
           Voilà, voilà !
 
 
           ____________________________________________________________________
           Je suis Charlie   -   Je suis Bardo
  

n°2256309
Astro-Pepi​to
Posté le 21-04-2015 à 21:17:44  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Base de donnéeVBA EXCEL impossible de modifier le contenu d'une cellule
VBA EXCEL exportation de donnée vers une BDEXCEL VBA Liaison Excel Base de donnée toute simple
récupération donnée dans des paquet UDPFormalisation donnée
Aide:extraire un groupe de données depuis un groupe de fichiersModif couleur cellule active Excel
[VBA] Inserer des caractères en décaler dans une cellule 
Plus de sujets relatifs à : Comment écrire une donnée dans une cellule passée en argument ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR