Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Bonjour Philippe,

Le 09/11/2018 à 18:32, Philippe BLANCHARD a écrit :

Connaissez vous le moyen de ne pas mettre le nom de la feuille en dur dans
cette formule :
oSheet = ThisComponent.Sheets.getByName("1")

En effet, dans mon projet j'ai des onglets numérotés de 1 à 26 et j'aimerai
qu'à partir du 2e onglet, la macro puisse copier des infos de l'onglet
précédent.

les feuilles sont indexées à partir de zéro dans la propriété .Sheets du document.

Donc Sheets(0) est la première feuille (à partir de la gauche), etc. Le nombre de feuilles est dans la propriété .Sheets.Count du document.

Par conséquent si i est l'index de la feuille courante (ThisComponent.Sheets(i)), tu accèdes à la précédente par i-1.

Pour connaître l'index de la feuille courante, interroge sa propriété RangeAddress.Sheet :

Dim oFeuille As Object
Dim index As Integer
oFeuille = ThisComponent.CurrentController.ActiveSheet
index = oFeuille.RangeAddress.Sheet

Pour accéder à la feuille suivante :

oFeuilleSuivante = ThisComponent.Sheets(index + 1)



Attention aux points suivants :

-- vérifier que tu peux accéder à index + 1 ou à index -1 (que ces feuilles existent bien : pas inférieur à 0 et pas supérieur à Count - 1).

-- si tu suis ce chemin, il faut t'assurer que l'utilisateur *ne peut pas* modifier l'ordre des feuilles ! Donc il faut verrouiller le classeur (Outils > Protéger le classeur).
Sans ça, cata en vue :)


Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.

Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux


--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.