[Résolu] [Calc] Info sur une feuille scindée : fenêtre figée

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 !
xank
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 06 janv. 2006 15:18
Localisation : Cherbourg

[Résolu] [Calc] Info sur une feuille scindée : fenêtre figée

Message par xank »

Bonjour,

Je sais comment figer une fenêtre à l'aide de l'enregistreur de macro mais à l'inverse je ne trouve pas comment récupérer l'adresse de cellule à partir de laquelle a lieu l'opération de scinder la fenêtre ?

J'espère avoir été clair ? :cry:
Dernière modification par xank le 20 août 2007 07:08, modifié 1 fois.
xank
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 06 janv. 2006 15:18
Localisation : Cherbourg

Message par xank »

Voici donc donc les versions

Versions :
OS : Win XP SP2
OOO : 2.0.2

Merci de m'avoir répondu.
OOo 2.0.2 sous WinXP SP2
xank
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 06 janv. 2006 15:18
Localisation : Cherbourg

[Résolu]

Message par xank »

Voici une solution (qui peut être améliorée) : :idea:

Code : Tout sélectionner

REM  *****  BASIC  *****

Sub Figer

' Au départ, seule la feuille 1 est figée
' Cette procédure permet de figer la feuille 2
' selon les mêmes caractéristiques de la feuille 1
' Si la fenêtre est seulement scindée, il n'y a
' aucun effet.

Dim DocControl As Object
DocControl = ThisComponent.CurrentController

' Active la première feuille
DocControl.ActiveSheet = ThisComponent.Sheets(0)

' Récupère la colonne (figée ou scindée)
Col = DocControl.getSplitColumn

' Récupère la ligne (figée ou scindée)
Lig = DocControl.getSplitRow

If (Col > 0 Or Lig > 0) And Not(DocControl.getIsWindowSplit()) Then

	' Condition importante : en effet si la feuille 1
	' n'est pas figée, la feuille 2 sera figée à
	' l'endroit où se trouve la sélection (cellule)
	' 
	' Le getIsWindowsSplit est égal à :
	' - True si Fenêtre scindée
	' - False si Fenêtre n'est pas scindée 
	'   mais elle peut être figée  (c'est ce que je veux)
	' Active la deuxième feuille	
	DocControl.ActiveSheet = ThisComponent.Sheets(1)

	' Fige
	DocControl.FreezeAtPosition(Col,Lig)

End If

End Sub
Merci d'avoir prêter attention à mon problème.
OOo 2.0.2 sous WinXP SP2
Avatar de l’utilisateur
c-stefan
Membre fOOndateur
Membre fOOndateur
Messages : 1146
Inscription : 16 janv. 2006 14:07
Localisation : Lisieux

Message par c-stefan »

Bonsoir,

si votre problème est résolu merci de mettre la balise dans le titre de votre 1er poste.

une aide pour savoir comment faire.
http://www.forum-openoffice.org/fichier ... resolu.swf
7.5.4.2 (AARCH64) LibreOffice
Mac OS X 13.4.1
xank
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 06 janv. 2006 15:18
Localisation : Cherbourg

Petite amélioration

Message par xank »

Bonjour,

Le code peut se réduire à

Code : Tout sélectionner

Sub Figer

' Au départ, seule la feuille 1 est figée
' Cette procédure permet de figer la feuille 2
' selon les mêmes caractéristiques de la feuille 1
' Si la fenêtre est seulement scindée, il n'y a
' aucun effet.

Dim DocControl As Object
DocControl = ThisComponent.CurrentController

' Active la première feuille
DocControl.ActiveSheet = ThisComponent.Sheets(0)

' Teste si la feuille est figée
If DocControl.hasFrozenPanes Then

	' Récupère la colonne
	Col = DocControl.getSplitColumn

	' Récupère la ligne
	Lig = DocControl.getSplitRow

	' Active la deuxième feuille   
	DocControl.ActiveSheet = ThisComponent.Sheets(1)

	' Fige
	DocControl.FreezeAtPosition(Col,Lig)

End If

End Sub
La méthode hasFrozenPanes détecte si la feuille est figée.
C'est plus simple ! :P
OOo 2.0.2 sous WinXP SP2