Difference de CONTEXT MACRO / MACRO FONCTION [EXPERT]

Résolu
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010 - 5 août 2010 à 13:56
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010 - 6 août 2010 à 09:23
Bonjour,

Je me suis remis au VBA depuis peu. J'ai besoin de faire un petit outil qui permettent de lire et écrire une cellule depuis une macro fonction.

Mon problème réside dans l'accès aux cellules depuis un macro fonction.

1er cas: Qui fonctionne !

sub Test() ' Macro défini dans un module
Activesheet.range("A1").formula = "TOTO" ' La cellule est mise à jours par le lancement de la macro depuis excel.
end sub

2eme cas: Qui fonctionne pas :)

La cellule A1 a une formule égale à "=ReTest(A2)"

function ReTest(str As String) as string ' Fonction défini dans un module
Test ' La cellule n'est mise à jours par la fonction et le code ne va pas plus loin.
ReTest = str + "TATA"
end function

J'ai l'impression que le contexte en mode macro me permet l'accès au objet excel en écriture/lecture, alors que le contexte en mode macro me donne acces qu'en lecture.

Est ce que quelqu'un pourrait m'expliquer brièvement les différences des deux contexte d'exécution.

Merci,

Zyxxx75

4 réponses

cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010
6 août 2010 à 09:23
Après avoir parcouru les forum de long en large, la seul information que j'ai pu trouver pour expliquer mon problème, est que les fonctions personnalisée ne peuvent pas modifier d'autre cellule que celle ou elle sont insérée en tant que formule.

Voila, le point est clos.
3
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
5 août 2010 à 15:11
Bonjour,
il n'y a pas de souci de "droit" pour l'utilisation de fonctions personnalisées dans vos classeur.
Votre fonction Retest marche très bien chez moi.

Par contre, il se peut que la MAJ du calcul ne se fasse pas automatiquement (essayez de faire 'F9' dans votre feuille pour voir si le calcul se met à jour).
Vous pouvez également regardez du côté des instructions :
application.Calculate et Application.Volatile

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010
5 août 2010 à 16:35
Merci pour votre réponse, a priori je ne vois pas de problème de droit.
J'ai activé les macros sans conditions, et donnée les droit au VBA pour l'acces au objet Excel.
Auriez-vous une idée sur des droits qui serait appliqué uniquement au funtion VBA et non au macro.

Pour le moment je sèche sur ce point! la macro Test appelée directement fonctionne mais quand elle est appelée par la fonction ReTest il semble que les l'objet Range soit inaccessible en écriture, la lecture fonctionne correctement.

Merci,

Zyxxx75
0
cs_zyxxx75 Messages postés 7 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 6 août 2010
5 août 2010 à 17:41
Re,

J'ai fait un test en créant un objet excel.application puis un workbook pour accéder a ma feuille excel depuis la fonction ReTest, cela semble fonctionner.

J'ai l'intuition que la fonction ne récupère pas complètement le contexte de l'application Excel courante.

Voila, pour le moment.

Zyxxx75.
0
Rejoignez-nous