[Calc] fonctions pour la gestion des feuilles et zones

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur: Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.

[Calc] fonctions pour la gestion des feuilles et zones

Messagepar Factooor » 02 Oct 2008 15:57

Une fonction qui permet de sélectionner une feuille et une zone .

Code : Tout sélectionner   AgrandirRéduire
Function SelectionCell(NomFeuille, arg )
   monDoc = Thiscomponent
   monControleur = monDoc.currentController
    monControleur.ActiveSheet = monDoc.Sheets.getByName(NomFeuille)
    maFeuille = monControleur.ActiveSheet
    maCellule = maFeuille.getCellRangeByName(arg)
    monControleur.select(maCellule)

End Function


Une fonction qui permet de sélectionner une feuille.

Code : Tout sélectionner   AgrandirRéduire
Function ActivationFeuille(arg As String)

   monDoc = Thiscomponent
   lesFeuilles = monDoc.Sheets
   maFeuille = monDoc.currentController.activeSheet
   maFeuille = lesFeuilles.getbyName(arg)
   monDoc.currentController.activeSheet = maFeuille

End Function


Une fonction qui permet de sélectionner une zone dans la feuille courante.

Code : Tout sélectionner   AgrandirRéduire
Function ActivationZone(nomZone)

   monControlleur = Thiscomponent.currentController
   maFeuille = monControlleur.activeSheet
   position = maFeuille.getCellRangeByName(nomZone)
   monControlleur.select(position)

End Function


Stéphane
AOO- LibO 4 version off - sous Kubuntu et 7
Consultant formateur Apache-OpenOffice
Avatar de l’utilisateur
Factooor
PassiOOnné
PassiOOnné
 
Message(s) : 542
Inscrit le : 14 Fév 2007 12:39
Localisation : Régions Parisienne

[Calc] Activation d'une feuille

Messagepar tytof4042 » 27 Avr 2009 22:56

La fonction qui permet de sélectionner une feuille par Factoor en supreme de code
Code : Tout sélectionner   AgrandirRéduire
Function ActivationFeuille(arg As String)
       monDoc = Thiscomponent
       lesFeuilles = monDoc.Sheets
       maFeuille = monDoc.currentController.activeSheet
       maFeuille = lesFeuilles.getbyName(arg)
       monDoc.currentController.activeSheet = maFeuille
End Function


ma version "optimisée"....
Code : Tout sélectionner   AgrandirRéduire
FUNCTION ActivationFeuille(NomFeuille) as object
   monDocument = ThisComponent
   ActivationFeuille = monDocument.Sheets.getByName(NomFeuille)
   monDocument.CurrentController.ActiveSheet = ActivationFeuille
END FUNCTION

SUB Test
   ActivationFeuille("Feuille2")
END SUB
Dernière édition par Bidouille le 28 Avr 2009 07:35, édité 1 fois.
Raison: Message fusionné
tytof4042
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 06 Sep 2007 23:11

Re: [Calc] fonctions pour la gestion des feuilles et zones

Messagepar Alain de La Chaume » 30 Avr 2009 22:04

Bonsoir,
Ca vas être difficile de faire mieux ?
Euh, oui, peut-être... A condition, bien sûr, que cette version fonctionne...
Si Feuille2 est le nom de la feuille à activer, peut-être faudrait-il l'encadrer de doubles-quotes... Non ? 8)
Seconde condition pour que ça fonctionne : que la feuille "Feuille2" existe vraiment.
(API-culteur et pêcheur de macros en mode loisirs occasionnels, mais toujours les pieds dans l'OO)
AOO 4.1.2 sous Linux Xubuntu Voyager 14.04 (x86_64)
Avatar de l’utilisateur
Alain de La Chaume
HédOOniste
HédOOniste
 
Message(s) : 1527
Inscrit le : 28 Sep 2008 13:56
Localisation : ʇsǝnoo,ꞁ ɐ ʇuǝɯǝʇǝꞁdɯoↃ

[Calc] Macros génériques pour la gestion des feuilles

Messagepar CoachFab » 12 Mars 2013 14:50

Bonjour,

Je vous propose les macros suivantes que j'utilise dans calc pour la gestion des feuilles : copier, supprimer, afficher une feuille, supprimer différentes feuilles, protéger, déprotéger ....

Code : Tout sélectionner   AgrandirRéduire
REM  *****  BASIC  *****
Option Explicit
'-----------------------------------------------------------------------------------------------
'Série de fonctions sur la gestion des feuilles
'-----------------------------------------------------------------------------------------------
'Macro qui affiche la feuille passée en paramètre
'Suppr indique si on doit supprimer la feuille qui était active
'-----------------------------------------------------------------------------------------------
Sub RetourFeuille(Fretour as string, optional suppr as boolean)
Dim feuille as string, efface as boolean
If IsMissing(suppr) then
   efface=false
else
   efface=suppr
end if
feuille=NomActiveFeuille()
ActiverFeuille(Fretour)
if efface=true then
   oDoc.Sheets.removeByName(feuille)
else
   CacheFeuille(feuille,false)
end if
FinSub()
end sub
'-----------------------------------------------------------------------------------------------
'Fonction qui vérifie l'existence d'une feuille
'return true si Ok
'return un message sinon
'-----------------------------------------------------------------------------------------------
Function IsFeuille(feuille as String, Optional Doc as Object) as Boolean
Dim oSheets as Object, oDoc as Object
If IsMissing(Doc) then
   oDoc=ThisComponent
else
   oDoc=Doc
end if
   oSheets=oDoc.Sheets
   if oSheets.hasByName(feuille) then
      IsFeuille=true
   else
      IsFeuille=false
   end if
end Function
'-------------------------------------------------------------------------------------
'Fonction qui retourne l'index d'une feuille
'-------------------------------------------------------------------------------------
Function IndexFeuille(feuille as String, Optional Doc as Object) as Integer
Dim Sheet as Object
If IsMissing(doc) then
   Sheet=RetourneFeuille(feuille)
else
   Sheet=RetourneFeuille(feuille,Doc)
end if
   IndexFeuille=Sheet.RangeAddress.Sheet
end Function
'-----------------------------------------------------------------------------------------------
'Macro qui insère une feuille après la feuille donnée (ou la dernière)
'-------------------------------------------------------------------------------------
Sub InsereFeuille(feuille as String, Optional prec as String, Optional doc as Object)
Dim Sheets as Object, index as Integer, oDoc as Object, nb as Long
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
Sheets=oDoc.Sheets
'si la feuille précédente n'est pas donnée, on la met en dernier
If IsMissing(prec) then
   nb=Sheets.Count
   index=nb-1
else
   index=IndexFeuille(prec,oDoc)
end if
   Sheets.insertNewByName(feuille,index+1)
end Sub
'-----------------------------------------------------------------------------------------------
'Macro qui copie (avec nouveau nom) et insère une feuille après la feuille donnée (ou la dernière)
'-------------------------------------------------------------------------------------
Sub CopieFeuille(feuille as String, Nom as String, Optional prec as String, Optional doc as Object)
Dim Sheets as Object, index as Integer, oDoc as Object, nb as Long
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
Sheets=oDoc.Sheets
'si la feuille précédente n'est pas donnée, on la met en dernier
If IsMissing(prec) then
   nb=Sheets.Count
   index=nb-1
else
   index=IndexFeuille(prec,oDoc)
end if
   Sheets.copyByName(feuille,Nom,index+1)
end Sub
'-----------------------------------------------------------------------------------------------
'Vérifie l'existence d'une feuille : retourne true ou false
'-------------------------------------------------------------------------------------
Function VerifFeuille(feuille as String, Optional doc as Object) as Boolean
Dim oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
if Isfeuille(feuille,oDoc) then
   VerifFeuille=true
else
   VerifFeuille=false
end if
end Function
'-------------------------------------------------------------------------------------
'Fonction qui retourne un objet Feuille si elle existe
'-------------------------------------------------------------------------------------
Function RetourneFeuille(feuille as string, Optional doc as Object) as Object
Dim oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
if IsFeuille(feuille,oDoc)=true then
   RetourneFeuille=oDoc.Sheets.getByName(feuille)
end if
end Function
'-----------------------------------------------------------------------------------------------
'Supprime une feuille
'-----------------------------------------------------------------------------------------------
Sub SupprFeuille(feuille as String, Optional doc as Object)
Dim oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
if IsFeuille(feuille,oDoc)=true then
   oDoc.Sheets.removeByName(feuille)
end if
end sub
'-------------------------------------------------------------------------------------
'Fonction qui retourne le nom feuille active
'-------------------------------------------------------------------------------------
Function NomActiveFeuille(Optional doc as Object) as String
Dim Sheet as Object, oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
   Sheet=oDoc.CurrentController.ActiveSheet
   NomActiveFeuille=Sheet.Name
end Function
'-------------------------------------------------------------------------------------
'Rend active la feuille donnée
'-------------------------------------------------------------------------------------
Sub ActiverFeuille(feuille as String, Optional doc as Object)
Dim oSheet as Object, oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
oSheet=RetourneFeuille(feuille,oDoc)
oDoc.CurrentController.ActiveSheet=oSheet
end Sub
'-----------------------------------------------------------------------------------------------
'macro pour protéger une feuille
'-----------------------------------------------------------------------------------------------
Sub ProtectFeuille(feuille as String, Optional doc as Object)
Dim oSheet as Object, oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
oSheet=RetourneFeuille(feuille,oDoc)
oSheet.protect("passwordachanger")
End Sub
'-----------------------------------------------------------------------------------------------
'macro pour déprotéger une feuille
'-----------------------------------------------------------------------------------------------
Sub UnProtectFeuille(feuille as String, Optional doc as Object)
Dim oSheet as Object, oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
oSheet=RetourneFeuille(feuille,oDoc)
oSheet.unprotect("passwordachanger")
End Sub
'-----------------------------------------------------------------------------------------------
Sub UnProtectFeuilleActive()
Dim feuille as string
feuille=NomActiveFeuille()
UnProtectFeuille(feuille)
MsgBox("Acompleter",64,"Information")
end sub
'-----------------------------------------------------------------------------------------------
'macro pour déprotéger toutes les feuilles
'-----------------------------------------------------------------------------------------------
Sub UnProtectAllFeuille(Optional doc as Object)
Dim oSheets as Object, oDoc as Object, nb as Integer, i as integer, oSheet as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
nb=oDoc.Sheets.Count
oSheets=oDoc.Sheets
for i=0 to nb-1
   oSheet=RetourneFeuille(oSheets(i).Name,oDoc)
   oSheet.unprotect("passwordachanger")
next i

End Sub
'-----------------------------------------------------------------------------------------------
'macro pour protéger toutes les feuilles
'-----------------------------------------------------------------------------------------------
Sub ProtectAllFeuille(Optional doc as Object)
Dim oSheets as Object, oDoc as Object, nb as Integer, i as integer, oSheet as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
nb=oDoc.Sheets.Count
oSheets=oDoc.Sheets
for i=0 to nb-1
   oSheet=RetourneFeuille(oSheets(i).Name,oDoc)
   oSheet.protect("passwordachanger")
next i

End Sub
'-----------------------------------------------------------------------------------------------
'macro pour cacher une feuille ou pas
'-----------------------------------------------------------------------------------------------
Sub CacheFeuille(feuille as String, val as boolean, Optional Doc as Object)
Dim oSheet as Object, oDoc as Object
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
oSheet=RetourneFeuille(feuille,oDoc)
oSheet.IsVisible=val
end sub
'-----------------------------------------------------------------------------------------------
'macro pour cacher toutes les feuille sauf celle en paramètre et active cette feuille
'-----------------------------------------------------------------------------------------------
Sub CacheAllFeuille(feuille as string,Optional Doc as Object)
Dim oSheet as Object, oDoc as Object, nb as integer, oSheets as object, i as integer
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
nb=oDoc.Sheets.Count
oSheets=oDoc.Sheets
ActiverFeuille(feuille)
CacheFeuille(feuille,true)
for i=0 to nb-1
   oSheet=RetourneFeuille(oSheets(i).Name,oDoc)
   if oSheets(i).Name<>feuille then oSheet.IsVisible=false
next i
end sub
'-----------------------------------------------------------------------------------------------
'macro pour afficher toutes les feuille sauf la premiere
'-----------------------------------------------------------------------------------------------
Sub AfficheAllFeuille(Optional Doc as Object)
Dim oSheet as Object, oDoc as Object, nb as integer, oSheets as object, i as integer
If IsMissing(doc) then
   oDoc=ThisComponent
else
   oDoc=doc
end if
nb=oDoc.Sheets.Count
oSheets=oDoc.Sheets
for i=1 to nb-1
   oSheet=RetourneFeuille(oSheets(i).Name,oDoc)
   oSheet.IsVisible=true
next i
end sub
'-----------------------------------------------------------------------------------------------




Fabien
macros-cellules-feuilles.ods
(13.52 Kio) Téléchargé 654 fois
LibreOffice 4.1.2.3 (Xubuntu 13.10 et Opensuse 12.3)
CoachFab
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 23 Mars 2010 15:11


Retour vers Suprême de code

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron