Difference de CONTEXT MACRO / MACRO FONCTION [EXPERT] [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010
-
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010
-
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

Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010

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.
Messages postés
28853
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 juillet 2020
332
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
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010

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
Messages postés
7
Date d'inscription
mercredi 16 octobre 2002
Statut
Membre
Dernière intervention
6 août 2010

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.