Bonjour,
Je fais actuellement une petite macro sous le tableur LibreOffice qui devrait me permettre de créer des feuilles ou de les supprimer selon un choix dans une liste. J'ai donc créé une procédure "SUB" que voici :
et une autre procédure "FUNCTION" que j'appelle dans une cellule et qui fait appel à la procédure SUB. La cellule lit d'autres cellules (dont la liste) pour envoyer les paramètres à la fonction. Voici la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 sub cree_region(a as Boolean, i as integer, nom as string) 'fonction qui crée une feuille pour une région volée Dim oDoc As Object oDoc=ThisComponent if a=true then 'on vérifie si on souhaite avoir une feuille if oDoc.Sheets.hasByName(nom$) then 'on vérifie si la feuille existe 'Supprime la feuille nommée "nom" oDoc.GetSheets.RemoveByName(nom$) 'Ajoute une feuille, la nomme et place l'onglet en ieme position oDoc.GetSheets.insertNewByName(nom$,i%) else 'Ajoute une feuille, la nomme et place l'onglet en ieme position oDoc.GetSheets.insertNewByName(nom$,i%) end if else if oDoc.Sheets.hasByName(nom$) then 'on vérifie si la feuille existe 'Supprime la feuille nommée "nom" oDoc.GetSheets.RemoveByName(nom$) end if end if end sub
Le problème c'est que lors du changement de choix dans la liste, les onglets sont bien créés ou supprimés mais la feuille contenant la cellule qui appelle la fonction se retrouve protégée. J'ai donc déplacé cette cellule dans une autre feuille, ce qui me permet de continuer d'utiliser la feuille qui contient les listes mais en ayant un message d'erreur à chaque changement de choix. Il faut aussi dire que lorsque je lance le programme depuis la fenêtre de macro (sans appel depuis une cellule), rien ne bug et tout marche parfaitement. En fermant le fichier et en le ré-ouvrant, la feuille n'est plus verrouillée, mais un message d'erreur sur le programme apparaît pour chaque cellule contenant la fonction, donc 22 messages d'erreur identiques apparaissent à l'ouverture du fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function couic(nb as string, nom as string, i as integer) as string dim a as boolean if nb$="Aucun" then a=0 couic$="" else a=1 couic$=nom$ end if cree_region(a,i%,nom$) end function
Je joins également le document, je remercie d'avance tous ceux qui se pencheront sur la question, sachant que je ne suis qu'un amateur et que ce n'est pas mon métier, même si là, il se trouve que j'ai besoin de ça pour le travail...
Partager