Poser votre question

Historique des modifications [retour]

cliquez pour afficher/masquer la modification 1
version initiale

Bonjour

Premier exemple pour copier la forme sélectionnée vers Feuille2.A1

sub CopierCollerSelection

dim oClasseur as object, oCopie as object, oFeuilleDest as object, oDestination as object

oClasseur = thisComponent
oCopie = oClasseur.currentController.getTransferable
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")
oClasseur.currentController.select(oDestination)
oClasseur.currentController.insertTransferable(oCopie)

end sub

Deuxième exemple pour copier toutes les formes de Feuille1 vers Feuille2.A1 (elles seront donc superposées)

sub CopierCollerSelectionToutesFormes

dim oClasseur as object, oCopie as object, oFeuilleSource as object, oFeuilleDest as object, oDestination as object
dim i as long


oClasseur = thisComponent
oFeuilleSource = oClasseur.Sheets.getByName("Feuille1")
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")    

for i = 0 to oFeuilleSource.DrawPage.count - 1
    oClasseur.CurrentController.select(oFeuilleSource.DrawPage.getByIndex(i))   
    oCopie = oClasseur.currentController.getTransferable
    oClasseur.currentController.select(oDestination)
    oClasseur.currentController.insertTransferable(oCopie)
next i

end sub

Voir C:\fakepath\copyShape.ods

Cordialement

Bonjour

Premier exemple pour copier la forme sélectionnée vers Feuille2.A1

sub CopierCollerSelection

dim oClasseur as object, oCopie as object, oFeuilleDest as object, oDestination as object

oClasseur = thisComponent
oCopie = oClasseur.currentController.getTransferable
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")
oClasseur.currentController.select(oDestination)
oClasseur.currentController.insertTransferable(oCopie)

end sub

Deuxième exemple pour copier toutes les formes de Feuille1 vers Feuille2.A1 (elles seront donc superposées)

sub CopierCollerSelectionToutesFormes

dim oClasseur as object, oCopie as object, oFeuilleSource as object, oFeuilleDest as object, oDestination as object
dim i as long


oClasseur = thisComponent
oFeuilleSource = oClasseur.Sheets.getByName("Feuille1")
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")    

for i = 0 to oFeuilleSource.DrawPage.count - 1
    oClasseur.CurrentController.select(oFeuilleSource.DrawPage.getByIndex(i))   
    oCopie = oClasseur.currentController.getTransferable
    oClasseur.currentController.select(oDestination)
    oClasseur.currentController.insertTransferable(oCopie)
next i

end sub

Voir C:\fakepath\copyShape.ods

[Ajout]

L'index est la "position" de la forme dans la collection. On ne peut donc pas le modifier. Si tu veux accéder à une forme précise le plus simple est de la nommer dans l'interface (clic droit sur la forme). On peut dès lors accéder à ce nom dans la procédure. Dans l'exemple suivant on ne copie que la forme nommée "bleue" :

dim oClasseur as object, oCopie as object, oFeuilleSource as object, oFeuilleDest as object, oDestination as object
dim oShape as object
dim i as long


oClasseur = thisComponent
oFeuilleSource = oClasseur.Sheets.getByName("Feuille1")
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")

for i = 0 to oFeuilleSource.DrawPage.count - 1
    oShape = oFeuilleSource.DrawPage.getByIndex(i)
    if oShape.name = "bleu" then
        oClasseur.CurrentController.select(oFeuilleSource.DrawPage.getByIndex(i))   
        oCopie = oClasseur.currentController.getTransferable
        oClasseur.currentController.select(oDestination)
        oClasseur.currentController.insertTransferable(oCopie)
    end if  
next i

Cordialement