Le 12/06/2010 00:19, Pascal Chantriaux a écrit :
Bonjour,

Avec votre code, j'ai testé ces deux cas :

cas 1 : je définis Engins2 en tant que fonction comme vous l'avez fait
puis je définis

sub test
dim e as variant
e = Engins2
end sub

et j'exécute test

cas 2 : je définis Engins2 en tant que sub comme vous l'avez fait puis
je définis

sub test
Engins2
end sub

et j'exécute test

Dans les deux cas il se passe exactement la même chose : la coloration
en rouge sombre de la cellule B2.

Où y a-t-il un problème ?
Que voulez-vous dire par "j'appelle cette fonction depuis une cellule" ?
J'appelle la fonction depuis une cellule du tableur :
 Si je suis dans A1, j'y écris, =Engins2(2)

Je vais tester la remarque de laurent sur le retour de la fonction que j'avais zappé.

xavier

Pascal


xavier roguiez a écrit :
Bonjour

Je dois passer à quelque chose d'évident, c'est pourquoi je viens
chercher une explication rationnelle..

Je voulais naïvement créer une fonction qui en fonction d'un paramètre
me change la couleur de la cellule (pour l'instant nombre de ne sert à
rien, c'est pour illustrer l'ECM.

function Engins2(nombre as integer) as variant
Dim oDocument as object, oFeuilles as object
Dim oFeuille as object, oCell as object, oZone as object
oDocument = thisComponent
oFeuilles = oDocument.Sheets
oFeuille = oFeuilles.getByName("Feuille1")
oCell=oFeuille.getCellByPosition(1,1)
oCell.CellBackColor=RGB(150,0,0)
end function

Si j'appelle cette fonction depuis une cellule elle est sans effet,
oCell contient bien les valeurs proprement dite, mais les affectations
ne sont pas faites.

sub Engins2()
Dim oDocument as object, oFeuilles as object
Dim oFeuille as object, oCell as object, oZone as object
oDocument = thisComponent
oFeuilles = oDocument.Sheets
oFeuille = oFeuilles.getByName("Feuille1")
oCell=oFeuille.getCellByPosition(1,1)
oCell.CellBackColor=RGB(150,0,0)
end sub

Par contre, ce codage fonctionne, si j'affecte la macro à un bouton ou
je la lance via le lanceur de macros...

Quelle est l'explication de ce comportement ? On ne peut pas créer de
fonction qui utilise l'API ?

D'avance merci pour toute information
xavier

---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org




---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org



---------------------------------------------------------------------
To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org
For additional commands, e-mail: prog-h...@fr.openoffice.org

Répondre à