Bon alors j'ai parcouru le forum en long, en large et en travers sans trouver ma solution, ainsi que le bouquin OpenOffice.
Je suis toujours sur mon fichier.
Il y a des cases qui sont protégées pour ne pas être modifiées.
Je les ai protégées en manuel dans "Formatage de la cellule".
Puis j'ai appliqué une protection à la feuille.
Seules les cellules du planning peuvent être modifiées.
Mais si je sélectionne une cellule, par exemple "E2" et que je clique sur un bouton "MDL" ( ou autre), un texte s'affiche dans cette cellule, malgré la protection.
Dans j'ai voulu mettre en place un test de la protection de la cellule pour empêcher l'écriture mais j'ai l'erreur: "Propriété ou Méthode non trouvées: IsProtected"
Cela fonctionne sur la page pas que sur une cellule...
Code : Tout sélectionner
Sub Service(evt)
Dim Dlg As Object
Dim dispatcher as Object, cell as Object, btn as Object, Sheet as Object, Sheets as Object, Cell2 as Object, Choix as Object
Dim ChampChoix as String
Dim Ligne as Long, Colonne as Long
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
btn = evt.source.model
sel = thisComponent.currentSelection
Cell = ThisComponent.getCurrentSelection
Ligne = Cell.CellAddress.row
Colonne = Cell.CellAddress.column
Sheets = ThisComponent.sheets
Sheet = Sheets.getByName("Semaine")
Cell2 = Sheet.getCellByPosition(Colonne + 72, Ligne)
If Sel.isProtected then
MsgBox("Sélectionnez une case correspondant à un jour de la semaine.")
GoTo 0
End if
If sel.SupportsService("com.sun.star.sheet.SheetCell") Then
If cell.string="" Then
cell.string = btn.name
cell.cellBackColor = btn.backgroundColor
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
Else
Dialoglibraries.loadlibrary("Sif")
Dlg = CreateUnoDialog(DialogLibraries.Sif.SecondService)
Dlg.execute
Choix = Dlg.getControl("Service")
ChampChoix = Choix.Text
End if
Select case ChampChoix
Case "Modifier Service"
cell.string = btn.name
cell.cellBackColor = btn.backgroundColor
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
Case "Ajouter Second Service"
cell2.string = btn.name
cell2.cellBackColor = btn.backgroundColor
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
Case "Modifier Second Service"
cell2.string = btn.name
cell2.cellBackColor = btn.backgroundColor
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
End Select
End If
0
End Sub
Le code complet est dans le module "Service".
En espérant avoir été clair sur mes explications.
Le codage de mon fichier est peut-être lourd désolé pour les adeptes de la finesse.
Merci d'avance.