ActiveSheet sur Calc

Fermé
Bahkiral Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 déc. 2009 à 09:46
Bahkiral Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 déc. 2009 à 14:24
Bonjour,

Je travaille actuellement sur Calc sur un algorithme de tri simple (codé à l'arrache)
Toutes les feuilles possèdent la même structure. La macro que je souhaite activer peux-être utilisée pour toutes les feuilles du classeur ; hors je ne connais que .getByName pour recuperer le nom de la feuille et l'utiliser. Cela me force à créer la même macro avec un nom de feuille different à chaque fois.
Quelle est l'équivalence de ActiveSheet sur Calc ? svp


Mon code : En théorie, il marche, il tri la première feuille mais à partir de la 2ème feuille il bloque dans la boucle (j'ai une variable d'objet non definie à la ligne mis en gras). Ce code pourrait me trier toutes mes pages d'un coup en cliquant surt un bouton, hors j'aimerais un bouton par page qui trie la page en cours :


Function NomFeuille(Optional position as integer)
Dim oDoc As Object, oSheets As Object, Feuille As Object
Dim NmbFeuilles As Integer 'Variable qui va stocker le nombre de feuilles
On error goto Erreurs 'Si erreur va à Erreurs
oDoc = ThisComponent
oSheets = oDoc.Sheets
NmbFeuilles = oDoc.Sheets.Count 'stockage nbre de feuille du classeur
NomFeuille = oDoc.Sheets(position-1).Name'la première feuille est la feuille 0, d'où le -1
Erreurs: 'Gestion des erreurs
If position < 1 then goto nul'si le critère position est inférieur à 1 alors va à Nul
If IsMissing(position) then goto nul'si le critère position est oublié alors va à Nul
If position > NmbFeuilles then goto nul 'si le critère position est supérieur à NmbFeuilles alors va à Nul
Goto fin 'va à Fin
Nul:'instruction si le critère position est erroné
NomFeuille = ""'ne rien afficher
Goto fin
Fin:
End Function





Sub Tri_general


dim z as Integer

for z = 1 to 3

dim la as String

la = NomFeuille(z)
dim feuille as Object
feuille = Thiscomponent.sheets.getByName(la)

dim compteur as Integer

dim i as Integer
dim j as Integer
j = 1

dim nombre_de_lignes as Object
nombre_de_lignes = feuille.getCellByPosition(8,1)
dim nombre_ecole
nombre_ecole = feuille.getCellByposition(8,2)

dim code_article as Object
dim affiche_code as Object
dim affiche_nombre as Object


dim tab_tri(1,nombre_de_lignes.value +7) as Long
dim reference(nombre_de_lignes.value + nombre_ecole.value+7) as Long


for i = 1 to (nombre_de_lignes.value - 1)

code_article = feuille.getCellByPosition(0,i)
reference(i) = code_article.value

Next i



for i = 1 to (nombre_de_lignes.value -1)

compteur = 1



if reference(i)= reference(i+1) then
compteur = compteur + 1
endif
if reference(i)= reference(i+2) then
compteur = compteur + 1
endif
if reference(i)= reference(i+3) then
compteur = compteur + 1
endif
if reference(i)= reference(i+4) then
compteur = compteur + 1
endif
if reference(i)= reference(i+5) then
compteur = compteur + 1
endif
if reference(i)= reference(i+6) then
compteur = compteur + 1
endif
if reference(i)= reference(i+7) then
compteur = compteur + 1
endif



tab_tri (0,j) = reference(i)
tab_tri (1,j) = compteur
j = j + 1
i = i + compteur - 1


Next i




for i = 1 to nombre_de_lignes.value - 1

affiche_code = feuille.getCellByPosition (4,i)
affiche_nombre = feuille.getCellByPosition(5,i)




affiche_code.value = tab_tri(0,i)
affiche_nombre.value = tab_tri (1,i)

if tab_tri(0,i)=0 then
affiche_code.string=""
affiche_nombre.string=""
endif

Next i


Next z



End Sub
A voir également:

1 réponse

Bahkiral Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009
15 déc. 2009 à 14:24
Résolu

Le code est :

dim feuille as Object

feuille = ThisComponent.CurrentController.ActiveSheet
0