Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[MAC] Bug des macros excel 4 dans excel 2004

1 réponse
Avatar
Georges Schell
Bonjour et bonnes fêtes à tous !

J'ai des macros Excel 4 qui fonctionnent parfaitement en OS 9.
Le fonctionnement en OS X (Excel 2004) est des plus aléatoires ; par contre,
si je lance ma macro en pas à pas, elle fonctionne, de nouveau, correctement
; en l'occurrence, la macro teste une valeur sur une feuille de calcul ; en
fonctionnement normal, le résultat du test est complètement faux ; en pas à
pas, aucun pb.
Autre exemple, je lance une macro de 4 lignes :
=ACTIVATE("feuille")
=SI(SOMME(!$6:$6 !FIN) > 0 ; RETOUR())
Variable= FAUX
=RETOUR()
Si je lance cette macro, j'ai le message "Fonctions RETOUR() ou ARRETER()
introuvables sur la feuille macro" ; et pourtant, vous êtes comme moi, vous
n'avez pas la berlue !
Pas de pb en pas à pas ; enfin, presque, car si le fonctionnement est
correct, lorsque l'exécution est terminée, c'est la feuille macro qui est
activée (cochée dans le menu déroulant Fenêtres).

C'est à n'y rien comprendre.

Connaissez-vous une solution à ce pb ?

Georges

Note : Pour m¹écrire directement, supprimer un des deux tirets dans mon
adresse !


Georges

Note : Pour m¹écrire directement, supprimer un des deux tirets dans mon
adresse !

1 réponse

Avatar
Michel Gaboly
Bonjour,

Peux-tu donner le code de la macro que tu évoques ?

Puisque tu dis "autre exemple" avant d'indiquer tes 4 lignes de code, je suppose que la macro évoquée au début
correspond à autre chose ques ces 4 lignes.

Sinon, quelques éléments :

Quand tu insères une feuille macro, il y a 2 options :

Macro intl MS Excel 4.0
Macro Microsoft Excel 4.0

Une fois la feuille créée, quelle que soit l'option choisie, le rés ultat apparaît identique.

Toutefois, la différence est immédiatement perceptible quand on essay e d'executer le code ou quand on lance la commande
Insérer / Fonction...

Dans "Macro intl MS Excel 4.0", "intl" signifie "internationale". Elle es t prévue pour pouvoir fonctionner directement
(ou moyennant des adaptations relativement simples) quelle que soit la la ngue de la version d'excel utilisée pour la
lancer. Tous les noms de fonctions doivent être en anglais. En outre, t outes les références à des plages de cellules
(sauf pour les plages nommées) doivent utiliser "R" comme "Row" pour le s lignes. Le séparateur d'arguments est la virgule.

Au contraire les "Macro Microsoft Excel 4.0" utilisent les noms de foncti ons dans la langue de la version d'Excel. Idem
pour les références, où avec une version française, il faut utili ser "L" pour les lignes. Le séparateur d'arguments est
en principe le point-virgule avec une version française.

Dans tes 4 lignes de code, il y a un mélange des 2 langues, cela ne peu t pas marcher ;-(((. Ce code a peut-être été
obtenu en en entrant manuellement une partie en français sur une macro internationale et en le complétant en insérant
une fonction (ACTIVATE() au lieu de ACTIVER()).

Si c'est le cas, le code entré manuellement a dû l'être directement en majuscules, car dans une macro internationale,
une fonction en français n'étant pas reconnue n'est pas convertie aut omatiquement en majuscules.

Astuce : je te conseille de toujours entrer les fonctions en minuscules, leur non conversion en majuscules permet de
repérer les fautes de frappe ou la confusion entre une macro standard o u internationale.

Tu dois avoir soit une macro standard (non internationale) avec ce code :

TIVER("feuille")
=SI(SOMME(!$6:$6 !FIN) > 0 ; RETOUR())
Variable= FAUX
=RETOUR()

ou une macro internationale avec :

TIVATE("feuille")
=IF(SUM(!$6:$6 !FIN) > 0, RETURN())
Variable= FALSE
=RETURN()

D'autre part, le Copier-Coller entre 2 feuilles macro de type différent entraîne la traduction du code, A CONDITION que
les fonctions soient au départ dans la bonne langue :

=RETOUR() sur une feuille standard, collé sur une feuille internation ale devient RETURN()

Mais =RETOUR() sur une feuille internationale, collé sur une feuille standard reste RETOUR(), mais n'ayant pas été une
fonction valide dans la feuille d'origine ne l'est pas plus dans la feuil le standard. Pour que la fonction soit
reconnue, il faut cliquer dans la barre de formules, et revalider. (comme avec un nombre considéré comme texte dans une
feuille de calcul).

C'est ce qui peut expliquer le message "Fonctions RETOUR() ou ARRETER() i ntrouvables sur la feuille macro", qui peut
également résulter bien sûr de l'emploi de RETOUR() en français s ur une feuille macro internationale.


Le seul point surprenant dans ce que tu décris, est que du code ne marc he qu'en pas à pas.


Joyeux Noël ;-((



Bonjour et bonnes fêtes à tous !

J'ai des macros Excel 4 qui fonctionnent parfaitement en OS 9.
Le fonctionnement en OS X (Excel 2004) est des plus aléatoires ; par contre,
si je lance ma macro en pas à pas, elle fonctionne, de nouveau, corre ctement
; en l'occurrence, la macro teste une valeur sur une feuille de calcul ; en
fonctionnement normal, le résultat du test est complètement faux ; en pas à
pas, aucun pb.
Autre exemple, je lance une macro de 4 lignes :
TIVATE("feuille")
=SI(SOMME(!$6:$6 !FIN) > 0 ; RETOUR())
Variable= FAUX
=RETOUR()
Si je lance cette macro, j'ai le message "Fonctions RETOUR() ou ARRETER ()
introuvables sur la feuille macro" ; et pourtant, vous êtes comme moi , vous
n'avez pas la berlue !
Pas de pb en pas à pas ; enfin, presque, car si le fonctionnement est
correct, lorsque l'exécution est terminée, c'est la feuille macro q ui est
activée (cochée dans le menu déroulant Fenêtres).

C'est à n'y rien comprendre.

Connaissez-vous une solution à ce pb ?

Georges

Note : Pour m¹écrire directement, supprimer un des deux tirets dans mon
adresse !


Georges

Note : Pour m¹écrire directement, supprimer un des deux tirets dans mon
adresse !





--
Cordialement,

Michel Gaboly
www.gaboly.com