[Résolu] [Calc] Fermer le classeur contenant la macro qui s'exécute

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

[Résolu] [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par bonsaiko »

Bonjour à tous,

Je travaille sur une macro qui se charge d'ouvrir un modèle et de générer un fichier.
A la fin, il faut que le fichier généré reste ouvert, mais que le fichier de départ, c'est à dire celui qui lance la macro, se ferme.

Ce que j'ai fait c'est que j'identifie mon tableur courant en début d'exécution, comme ceci :

Code : Tout sélectionner

' Déclaration de la variable globale
Global currentDocument As Object

' Initialisation
currentDocument = ThisComponent
Et à la fin, une fois que le fichier a correctement été généré, je fais ceci :

Code : Tout sélectionner

currentDocument.Close(True)
Et lorsque je fais ça, tout se ferme, y compris le fichier calc qui a été généré...
Alors que si je commente cette instruction, tout reste ouvert, y compris le fichier généré.

Je ne comprends pas pourquoi le fichier généré se ferme alors que je demande juste la fermeture du fichier principal.

Est-ce qu'il y a quelque chose que je fais mal ou que j'aurais mal compris ?

Merci par avance de votre aide...
Dernière modification par bonsaiko le 29 nov. 2023 19:05, modifié 1 fois.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25965
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par Dude »

Salut,
bonsaiko a écrit : 29 nov. 2023 09:10Je travaille sur une macro qui se charge d'ouvrir un modèle et de générer un fichier.
Pas besoin de macro pour ça : un modèle s'enregistre au format OTS.
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par bonsaiko »

Je comprends pas ta remarque.
La macro ne fait pas "que" ça. Elle ouvre une fenêtre pour saisie de dates, ouvre le modèle, va taper dans une base de données pour chercher les infos selon les dates données, puis enregistre le modèle sous. Enfin bref, j'ai pas détaillé parce qu'on s'en fout, c'était pas le propos de ma question.

Je ne comprends pas pourquoi tu sembles toujours si agressif dans tes réponses.
Jusqu'alors je n'ai rien dit car je suis très content de trouver de l'aide quand je viens sur ce forum.
Mais c'est pas une raison pour parler de haut tout le temps comme ça. A la fin c'est pénible.

Il y a plein d'autres personnes qui aident et qui sont sympas, c'est vraiment pas incompatible.

D'ailleurs je me demande bien pourquoi tu viens aider si c'est pour être désagréable avec les gens.

Bref, entre temps j'ai trouvé la solution et je la mets ici, des fois que ça puisse aider d'autres personnes débutantes en LO comme moi.

Voici mon code :

Code : Tout sélectionner

' En début de la fonction je mets ça pour identifier le classeur en cours
currentDocument = ActiveWorkBook

' Après il y a ouverture d'autres fichiers, blabla

' Et à la fin je peux fermer le tout premier classeur
currentDocument.Close(True)
Voila. Merci à tous et bonne soirée.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25965
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par Dude »

bonsaiko a écrit : 29 nov. 2023 19:04 Je comprends pas ta remarque.
Tu devrais juste dire ça au lieu de dire que ma réponse était agressive.
Si j'avais voulu l'être, j'aurais mentionné de ne pas faire le boulet.
Donc reste humble d'autant que tu factures un client avec l'aide gratuite de ce forum.


Effectivement à ne pas donner toutes les informations :
bonsaiko a écrit : 29 nov. 2023 19:04 parce qu'on s'en fout
montre à quel point tu estimes ceux qui te consacrent du temps.
Ne t'étonnes pas alors d'avoir des réponses laconiques.
Néanmoins, si tu avais pris la peine de tester, tu aurais vu qu'un OTS fait le job.
exemple.ots


Un autre point qui m'apparaît important de souligner

Code : Tout sélectionner

currentDocument = ActiveWorkBook
Cette fonction est liée à l'interpréteur VBA et n'est donc pas du Basic.
Et il faut donc utiliser ThisComponent mais en faisant attention où on l'exécute.
https://wiki.openoffice.org/wiki/Curren ... e_document
Tu aurais fourni un document comme je viens de le faire, il aurait été simple d'analyser la cause de ton plantage.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Résolu] [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par bonsaiko »

Si je ne fournis pas toutes les infos, c'est justement parce que je respecte le temps de ceux qui me lisent, et que je ne vais pas donner des informations inutiles pour leur faire perdre du temps.

Je ne suis pas le seul à te trouver agressif sur ce forum.

J'ai toujours respecté les gens ici, y compris toi.
Je ne vois pas en quoi je ne suis pas "humble".
Ce n'est pas parce que, pour une fois, je te dis ce que je pense de ton attitude, que je ne suis pas humble. Je suis tout simplement franc et direct.

Et le fait que je facture ou non un client n'a rien à voir avec mon humilité ni ton agressivité, bref, tu mélanges tout.

Mais je ne crois pas que ce soit le lieu pour ce genre d'échanges car cela n'apporte rien à la communauté.

Une fois encore, je remercie tout ceux qui m'ont aidé par le passé mais je continue à trouver que tu n'es pas sympa, j'ai le droit.
Tout comme tu as le droit de trouver que je suis un boulet.

Je pense qu'il est préférable d'en rester là, par respect pour les autres.
Si tu veux qu'on continues l'échange, on peut le faire par mail ou téléphone, aucun souci pour moi.
Libre Office 7.6.2.1 Windows Server
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25965
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu] [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par Dude »

bonsaiko a écrit : 30 nov. 2023 15:22Je ne suis pas le seul à te trouver agressif sur ce forum.
Bientôt 18 ans que je suis sur ce forum, y-a forcément des grincheux.
bonsaiko a écrit : 30 nov. 2023 15:22 Je pense qu'il est préférable d'en rester là, par respect pour les autres.
Le respect, c'est de fournir une vraie solution pour la communauté. Merci de joindre un document comportant la macro.
bonsaiko
Membre OOrganisé
Membre OOrganisé
Messages : 61
Inscription : 12 oct. 2023 14:37

Re: [Résolu] [Calc] Fermer le classeur contenant la macro qui s'exécute

Message par bonsaiko »

Dude a écrit : 01 déc. 2023 08:10 Bientôt 18 ans que je suis sur ce forum, y-a forcément des grincheux.
Tu pourrais y être depuis 2 siècles, c'est pas pour ça que tu es bienveillant.
A chaque fois que tu interviens tu prends les gens de haut, j'en ai un exemple tout récent avec quelqu'un qui voulait m'aider et tu as été très désagréable avec lui alors s'il te plait arrête tes salades. Je ne pense pas être le seul à t'avoir fait la remarque.
S'il y a bien un grincheux ici, c'est toi.
Dude a écrit : 01 déc. 2023 08:10 Le respect, c'est de fournir une vraie solution
C'est ce que j'ai fait, mais apparemment elle n'était pas bonne.
Elle a fonctionné pour moi mais en effet c'est du VBA que j'ai réussi à intégrer dans mon code et qui m'a permis de me sortir d'affaire.
Dude a écrit : 01 déc. 2023 08:10 Merci de joindre un document comportant la macro
Tu crois que tu es qui pour me dire ce que je dois faire ?? J'ai déjà donné une solution tout en exprimant ma gratitude aux personnes qui m'ont aidées, ce qui est tout à fait normal. Je ne vois pas en quoi l'intégralité de la macro apporterait un plus et surtout, je ne suis pas un toutou à qui on donne des ordres.

Je te ferais bien une réponse à la "Elon Musk" mais je suis quelqu'un de poli donc je m'abstiendrai (pourtant le coeur y est).
La modération vous a écrit: Merci de joindre un document exposant votre solution.
Vous semblez réfractaire à l'idée de partager vos connaissances. Comme on vous l'a expliqué par MP, ce n'est pas pour vous mais pour ceux qui tomberont sur ce fil et qui n'auront rien à exploiter de votre part.

Libre Office 7.6.2.1 Windows Server