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



Répondre à