Insertion automatique d'onglet

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Christian
Fraîchement OOthentifié
Messages : 2
Inscription : 21 déc. 2006 17:33

Insertion automatique d'onglet

Message par Christian »

Bonjour
J'ai un classeur dont le premier onglet comprend une liste.
Comment puis-je insérer automatiquemant autant d'onglets qu'il y a de lignes dans ma liste du premier onglet, sachant que chaque onglet doit simplement porter le N° de la ligne correspondant dans la liste.
J'ai bien essayé ce qui suit, mais ça ne fonctionne pas.

Code : Tout sélectionner

Sub AjouterFeuille()
Dim monDocument As Object, lesFeuilles As Object
Dim nom1 As Long, nom2 As Long, x As Long
monDocument=thisComponent
lesFeuilles=monDocument.Sheets
for x = 1 to 140
nom1 = x
nom2 = x+1
lesFeuilles.insertNewByName(nom2, getIndexByName(lesFeuilles, nom1)+1)
next x
end sub
Merci
OOo2 - WINXP
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Code : Tout sélectionner

Dim nom1 As Long, nom2 As Long, x As Long 
tu déclares des Long et après tu veux t'en servir comme chaine!!

utilises des conversions CStr(Long) = chaine


cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Message par bm92 »

Christian a écrit :

Code : Tout sélectionner

lesFeuilles.insertNewByName(nom2, getIndexByName(lesFeuilles, nom1)+1)
La fonction getIndexByName est un utilitaire défini dans l'Annexe B du livre Programmation OpenOffice.org. Il est probable que tu ne l'as pas recopié.

Dans ton cas cette fonction est inutile car tu veux insérer les feuilles successivement à la fin. En te reportant dans le livre à la section Ajouter une nouvelle feuille, il est indiqué qu'un argument 2 hors limite conduit à ajouter la feuille à la fin, ce que tu cherches.

Code : Tout sélectionner

Sub AjouterFeuille() 
Dim monDocument As Object, lesFeuilles As Object 
Dim x As Long 
monDocument=thisComponent 
lesFeuilles=monDocument.Sheets 
for x = 2 to 141 
  lesFeuilles.insertNewByName(x, 300) 
next x 
end sub
J'ai mis 300, j'aurais pu mettre 2567, ou autre valeur...
cris59 a écrit :tu déclares des Long et après tu veux t'en servir comme chaine!!
OOoBasic est tolérant, il convertit automatiquement quand il le peut.
Christian
Fraîchement OOthentifié
Messages : 2
Inscription : 21 déc. 2006 17:33

Message par Christian »

Merci, c'est tout à fait ce qu'il me fallait.
OOo2 - WINXP
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

bm92 a écrit :OOoBasic est tolérant, il convertit automatiquement quand il le peut.
sous Win, souvent oui ... mais pas sous Linux où là il devient franchement pointilleux !


cris29
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Message par Bidouille »

Et je rappelle que la section Tableur n'est pas dédiée aux questions sur les macros.

Merci de poster dans "Macros et API" la prochaine fois.