Bonjour,
Je reprend le basic en ce moment et j'ai quelques trous...(ça fait 10
ans que je n'ai pas codé avec ce langage)
Je fais actuellement un module avec plusieurs traitements dans un
fichier tableur et je définie un ensemble de procédures qui ont besoins
d'accéder aux objets de mon classeur.
J'ai donc voulu mettre en public mes objets qui sont figés et connus dès
le départ (document et feuilles) au début de mon module de la manière
suivante :
(pour ne pas avoir à les déclarer à chaque procédure)
/*
Public oDocument as object
Public oFeuille1 as object
Public oFeuille2 as object*/
Puis au départ de la procédure main j'ai initialisé mes objets de la
manière suivante sans que cela me génère d'erreur
/*Sub main
set oDocument = ThisComponent
set oFeuille1 = oDocument.Sheets.getByName ("Feuille1")
set oFeuille2 = oDocument.Sheets.getByName ("Feuille2")
[...]
call sousproc
end sub*/
Par contre lorsque je veux utiliser dans une procédure appelé par mon
main l'objet oFeuille1,
Pour l'activer par exemple par la ligne suivante :
/*Sub sousproc
[...]
oDocument.CurrentController.ActiveSheet = oFeuille1
end sub*/
J'ai le message d'erreur suivant/* Variable d'objet non définie.*/
Si je laisse dans la procédure sousproc
/* oDocument = ThisComponent
oFeuille1 = oDocument.Sheets.getByName ("Feuille1")
oDocument.CurrentController.ActiveSheet = oFeuille1
*/Je n'ai aucun message d'erreur.
Je ne comprend pas ce que j'ai mal fait.
[...]
Erreur de débutant ...
Après une petite pause j'ai trouvé la solution tout seul... :-)
Mais je publie tout de même l'explication qui est pourtant simple...ça
permettra peut être à d'autre de ne pas chercher...
Il ne faut pas laissé trainer de /*Dim oFeuille1 as objet */dans la sous
procédure car celui-ci est prioritaire et aucune erreur de compilation
n'indique le double déclaration.
A+
Samuel