Bonjour à tous,
J’ai un problème avec une macro pour CALC. L’objectif de la macro c’est de retirer la protection de la feuille > supprimer une plage de cellule > remettre la protection de la feuille (le fichier sera transmis à des tiers qui n’auront pas accès au MdP).
Quand je lance la macro avec le “Pas à Pas entrant” cela fonctionne parfaitement, par contre quand j’exécute ou lance le “Pas à Pas sortant”, il m’indique “action impossible cellules protégées”.
Le pire c’est que la macro d’insertion de plage sur le même modèle fonctionne …
La macro :
sub SuppAutoProtection
Dim oDoc as Object
Dim oSheet as Object
Dim oSheets as object
Dim oPlage as Object
oDoc = ThisComponent.CurrentController
oSheets = ThisComponent.getSheets()
REM***désigne la feuille "xxx"***
oSheet = ThisComponent.Sheets.getByName("2_Routier tkm")
REM***lève la protection de la feuille***
oSheet.unprotect("AResp2024")
REM***désigne le tableau "xxx"***
Set oPlage = oSheet.getCellRangeByName ("Tableau_prestations")
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$21"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$C$21:$M$21"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
Msgbox "on referme"
REM***lève la protection de la feuille***
oSheet.protect("AResp2024")
end sub
type or paste code here
Blockquote
(j’ai une version où j’ajoute l’étape modifiant le format de la cellule en retirant la protection de la cellule avant la suppression, mais cela ne change pas le problème).
Merci d’avance pour le coup de main