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
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
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.