Copier coller dans un onglet caché

Bonjour,
J’utilise une macro pour copier/coller et tout fonctionne très bien.
Mais lorsque je masque une feuille, le copier coller va plutot se faire dans la premiere feuille qui est visible.
Très bizarre.
Voici le code utiliser. La feuille que je masque est “D”.
dim document as object
dim dispatcher as object

oDoc = thisComponent
oRange = oDoc.Sheets.getByName(“DI”).getCellRangeByName("$B$4:$P$99")
oDoc.CurrentController.select(oRange)
aCopier = oDoc.CurrentController.getTransferable()
oRange = oDoc.Sheets.getByName(“D”).getCellRangeByName("$A$2")
oDoc.CurrentController.select(oRange)
oDoc.CurrentController.insertTransferable(aCopier)

2e question: Est-il possible de faire un copier/coller en macro même si notre feuille est protégé ?

Merci!

Bonjour,
Joignez un exemple de votre fichier, cela nous évitera de fabriques un exemple pour tester.
Bonne journée,
JM

Voici le fichier.
Il est complexe mais fonctionne bien.
Je voudrais cacher les onglets D;L;M;W;J;V;et S
La macro est CC qui prend des données de DI; LU etc… vers les onglets D; L etc…
Ca fonctionne bien lorsque les onglets sont visible mais lorsqu’on cache les onglets D à S,
ca ne marche plus.
TEST pour JM (LO).ods (231.9 KB)

Bonjour @Golderock

Ce que tu décris n’est pas bizarre mais normal car, pour coller, tu utilises la méthode insertTransferable de l’objet CurrentController. Ce dernier fait (en gros) référence à la vue active du classeur. Si la feuille est masquée, la vue change et CurrentController fait de nouveau référence à la vue active.

Il est possible de copier-coller dans une feuille masquée,

  1. soit via la propriété DataArray (récupérant les données) :
oPlageSource = oFeuilleSource.getCellRangeByName("C3:D4")
oPlageDestination = oFeuilleDestination.getCellRangeByName("C3:D4")
oPlageDestination.DataArray = oPlageSource.DataArray
  1. soit via la méthode copyrange
oFeuilleArr.copyrange(oCellArr.cellAddress, oPlageDep.rangeAddress)

Noter les paramètres : on colle une plage dont on donne l’adresse, à une adresse de cellule.

Pour ce qui est de la protection… son but étant de protéger, il faudra déprotéger dans la macro avant le copier-coller puis re-protéger.

Cordialement

Merci PYS
J’essaie cette méthode !