Bonjour,

bopouv a écrit :
Bonjour,

C'est ma premiere macro
Y'a un début à tout ;)
Je veux creer autant de feuilles que de classes
J'ai inscrit l'intitulé de mes classes dans une colonne
La macro crée les feuilles en descendant d'une cellule à chaque tour
et je voudrais qu'elle s'arrete lorsqu'elle rencontre une cellule vide

mes feuilles se créent (bien) mais j'obtiens un message d'erreur

runtime error basic
exception
type :com.sun.star.unoexception
Message:.


et la ligne
            LesFeuilles.insertNewByName(classe,-1)
            se met en rouge
La condition après le While est elle bonne ?
sub creefeuille
rem Créer des feuilles

Dim MonDocument As Object Dim NouvelleFeuille As Object, LesFeuilles As Object
Dim rang as integer
Dim classe as string
Dim macellule as object
Dim mafeuille as object

MonDocument = ThisComponent
LesFeuilles = MonDocument.Sheets
mafeuille = lesfeuilles.getbyname("Commandes")

rang = 1
macellule = mafeuille.getCellByPosition(7,rang)
classe = macellule.string
While  classe<>""

macellule = mafeuille.getcellbyposition(7,rang)
classe = macellule.string
LesFeuilles.insertNewByName(classe,-1)

rang = rang + 1

Wend
MsgBox "BRAVO"
end sub


 merci

Attention ! Dans la boucle la valeur de classe est connue après coup après le premier tour.
En effet à partir du 2ème tour,
- tu lis la valeur macellule.string
- puis tu incrémente le rang

Pour palier cela
- récupère la valeur après l'incrémentation
exemple :

While  classe<>""
LesFeuilles.insertNewByName(classe,-1)
rang = rang + 1
macellule = mafeuille.getcellbyposition(7,rang)
classe = macellule.string
Wend

NB : pour le premier tour, la valeur de classe est récupérée avant l'entrée de boucle.

François GATTO

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à