Totalement d'accord, mais dans les formules un peu complexes, je m'emmêle assez rapidement les pinceaux...jjk a écrit :le principe du tableur c'est d'abord les formules, et seulement après, les macros qui sont chargées de traiter les cas inaccessibles aux formules.
Vi vi, mais les macros me sauventjeanmimi a écrit :Et pas besoin de Macro.
Code : Tout sélectionner
Option Explicit
Sub Ajout4Lignes
Dim oDoc, oSheet, oRange, oCursor As Object
Dim nbF, nbLig, i, j, k As Integer
Dim Nom() As String
' Le document
oDoc = ThisComponent
' Le nombre de feuilles
nbF = oDoc.Sheets.Count
For i = 0 to oDoc.Sheets.Count-1
' La feuille à traiter (la 1ère porte l'indice 0)
oSheet = oDoc.Sheets(i)
' Création d'un curseur de Cellule
oCursor = oSheet.createCursor
oCursor.gotoEndOfUsedArea( False )
' L'index de la première ligne = 0
nbLig = oCursor.RangeAddress.EndRow
' Le test permet d'éviter le traitemoent d'une feuille vierge
if nbLig > 0 Then
' Redéclaration du tableau nom ==> raz
ReDim Nom(nbLig)
' Récupération des noms de ville
For j = 0 to nbLig
Nom(j) = oSheet.getCellByPosition(0,j).string
Next j
' 1ère ligne à partir de laquelle on va réécrire
k = 0
' Boucle sur les noms sauvegardés
For j = 0 to uBound(Nom)
' Ecriture en colonne A (indice 0), sur la 1ère ligne non utilisée
' du nom : ligne k, suivi de Nord, Sud...
' une ligne en dessous, soit k+1, k+2...
oSheet.getCellByPosition(0,k).string = Nom(j)
oSheet.getCellByPosition(0,k+1).string = "Nord"
oSheet.getCellByPosition(0,k+2).string = "Sud"
oSheet.getCellByPosition(0,k+3).string = "Est"
oSheet.getCellByPosition(0,k+4).string = "Ouest"
'
' Justification à droite des 4 lignes de localisation
' à supprimer ou à mettre en commentaire au besoin
'
' Sélection des 4 dernières lignes écrites
oRange = oSheet.getCellRangeByPosition(0,k+1,0,k+4)
' Justification à droite
oRange.HoriJustify = 3 ' com.sun.star.table.CellHoriJustify.RIGHT
'
' Pour plus d'infos sur com.sun.star.table.xxx.yyy :
' http://wiki.services.openoffice.org/wiki/Spreadsheet_common
' ou
' le SDK...
'
' La prochaine ligne sur laquelle il faudra écrire
k = k+5
next j
end if
Next
End Sub| Ajout : 1 La gestion Nord/sud/... pourrait s'aborder autrement mais pour 4 lignes... |
| Ajout : 2 Commentaires ajoutés pour plus de clarté |



