Macro : Copie d'une feuille vers une autre

Bonjour à tous,

Voilà quelques jours, Je vous demandais comment récupérer le contenu de
cellule via une macro.
Aujourd'hui, mon projet avance bien grâce à vous mais j'aimerais aller
encore plus loin !

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.

Si cela peut vous aider, j'ai récupéré le nom de l'onglet dans une ce
cellule grâce à la formule
: =DROITE(CELLULE("filename");NBCAR(CELLULE("filename"))-CHERCHE("$";CELLULE("filename")))&T(ALEA())

Merci par avance de votre aide.

Bonne fin de journée.

Cordialement,

Philippe

Bonjour Philippe,

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 :slight_smile:

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,