[Calc] modifier hauteur cellule sans devoir retirer la protection de feuille

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
cpt-caverne01
Membre OOrganisé
Membre OOrganisé
Messages : 99
Inscription : 09 oct. 2009 16:31

[Calc] modifier hauteur cellule sans devoir retirer la protection de feuille

Message par cpt-caverne01 »


La modération vous a écrit: Suite de ce sujet

Bonjour,

J'aimerai après avoir sélectionné les lignes 4 à 153, modifier leurs hauteurs sur plusieurs feuilles de mon classeur via une macro sans que le mot de passe ne soit nécessaire.

Le classeur et les feuilles contiennent beaucoup de formules qui, si une personne autre que moi ne fait pas attention, peut provoquer une "catastrophe" dans le classeur
libre office 7.3.7.2
Ubuntu (modifier pour et par le travail)
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1856
Inscription : 15 déc. 2010 08:33

Re: [Calc] modifier hauteur cellule sans devoir retirer la protection de feuille

Message par yclik »

Bonjour
une proposition avec ces macros
hauteurligne_mdp.ods

Code : Tout sélectionner

sub Hligne
dim document   as object
dim dispatcher as object
Dim HauteurLigne as double

call Deproteger 'appel macro de déprotection

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

HauteurLigne=Inputbox("Hauteur souhaitée en cm ?")

rem plage des lignes
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$4:$A$53"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "RowHeight"
args2(0).Value = HauteurLigne*1000 ' 
dispatcher.executeDispatch(document, ".uno:RowHeight", "", 0, args2())

'retour début feuille
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$B$4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

call  Proteger 'appel macro de protection

end sub

Sub Proteger
Dim oDoc as Object rem le document	
Dim Sheets as object rem les feuilles	
	oDoc=ThisComponent
    oSheet = oDoc.Sheets.getByName("Feuille1")
    MDP=""	 '  Mettre ici le Mot de passe
    oSheet.protect(sPW)
end Sub	


Sub Deproteger
Dim oDoc as Object rem le document	
Dim Sheets as object rem les feuilles	
	oDoc=ThisComponent
    oSheet = oDoc.Sheets.getByName("Feuille1")
    MDP=""	 '  Mettre ici le Mot de passe
    oSheet.unprotect(sPW)
end Sub	






Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.14 sous Windows 11
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1856
Inscription : 15 déc. 2010 08:33

Re: [Calc] modifier hauteur cellule sans devoir retirer la protection de feuille

Message par yclik »

bonjour
la macro précédente simplifiée

Code : Tout sélectionner

sub Hligne
Dim oDoc as Object	
Dim Sheets as object	
	oDoc=ThisComponent
    oSheet = oDoc.Sheets.getByName("Feuille1")
Dim HauteurLigne as single
Dim EntreeLigne as string

Dim MDP as string

MDP="" '  Mettre ici le Mot de passe
oSheet.unprotect(MDP)

EntreeLigne=Inputbox("Hauteur souhaitée en cm ?")
print "enttree "&EntreeLigne
HauteurLigne=CDbl(EntreeLigne) 'pour avoir les décimales

for i=3 to 52 'ligne 4 à 54
ThisComponent.currentController.activeSheet.Rows(i).Height = HauteurLigne*1000
next i
oSheet.protect(MDP)
end sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.14 sous Windows 11
cpt-caverne01
Membre OOrganisé
Membre OOrganisé
Messages : 99
Inscription : 09 oct. 2009 16:31

Re: [Calc] modifier hauteur cellule sans devoir retirer la protection de feuille

Message par cpt-caverne01 »

Merci Yclik, vu le bouton je teste :bravo: :super:
libre office 7.3.7.2
Ubuntu (modifier pour et par le travail)