Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/05/2015, à 10:19

Julientroploin

[Calc] Insérer une ligne entre chaque ligne

Bonjour,

je cherche un moyen simple d'insérer des lignes vierges entre chaque ligne d'une feuille *.ods pour obtenir à partir de :

1 Ligne 1
2 Ligne 2
3 Ligne 3
4 Ligne 4
etc...

Quelque chose comme :
1 Ligne 1
2 Ligne vierge
3 Ancienne Ligne 2
4 Ligne vierge
5 Ancienne Ligne 3
6 Ligne vierge
7 Ancienne Ligne 4
etc...

ce n'est pas pour des tableaux très longs, mais je vais avoir besoin de le refaire sur de nombreux document alors je cherche une solution pour automatiser les choses...

Savez vous si c'est possible ? Je n'ai trouvé d'infos que pour Excel en passant par du VBA.


Fixe : Core i5, 8GoRAM, NVidia 9800GT Silent => Ubuntu 22.04
Portable Compaq Presario2158 : AthlonXP-M2400+, 1GoRAM, ATI Radeon mobility320M => Primtux
https://launchpad.net/~julienmbpe

En ligne

#2 Le 21/05/2015, à 10:24

cqfd93

Re : [Calc] Insérer une ligne entre chaque ligne

Bonjour,

Je ne sais pas du tout si ce genre de fonctionnalité existe (ça pourrait être bien pratique). Pour faire ça, j'utiliserais une ruse :
- créer une nouvelle colonne avec les nombres impairs
- la prolonger avec les nombres pairs qui manquent
- trier la totalité du tableau selon l'ordre croissant de cette colonne
- supprimer la colonne


cqfd93

Hors ligne

#3 Le 21/05/2015, à 10:52

nam1962

Re : [Calc] Insérer une ligne entre chaque ligne

Une petite macro en LibreOffice Basic ?

Sub InsererLigneEntreLigne
  oDoc = ThisComponent
  oDoc.lockControllers()
  oSheets = oDoc.getSheets()

  nInsertRowsCount = 1
  nStartRow = 0
  nEndRow = 20
  nRows = (nEndRow - nStartRow) * (nInsertRowsCount + 1)
  ' each sheet
  For i = 0 To oSheets.getCount() -1 step 1
    oRows = oSheets.getCellRangeByPosition(0, nStartRow, 0, nRows, i).getRows()
    For j = 1 To nRows step nInsertRowsCount + 1
      oRows.insertByIndex(j, nInsertRowsCount)
    Next
  Next
  oDoc.unlockControllers()
End Sub

Il faut juste modifier le RowsCount pour le nombre de lignes à insérer entre chaque ligne et régler le StartRow et le EndRow.

Source : http://www.oooforum.org/forum/viewtopic.phtml?t=130932

Dernière modification par nam1962 (Le 21/05/2015, à 11:09)


[ Modéré ]

Hors ligne

#4 Le 21/05/2015, à 21:24

Julientroploin

Re : [Calc] Insérer une ligne entre chaque ligne

@cqfd93 : j'y avais pensé aussi tongue
Mais bon si il y a plus rapide...

@nam1962 : je pense que c'est ce que je cherche, mais je n'ai jamais utilisé de macro, je regarde si je m'en sort avec ça et je repasse. C'est pour un tableau de 20 lignes au départ et ça s'applique sur toutes les feuilles du classeur, c'est ça ?


Fixe : Core i5, 8GoRAM, NVidia 9800GT Silent => Ubuntu 22.04
Portable Compaq Presario2158 : AthlonXP-M2400+, 1GoRAM, ATI Radeon mobility320M => Primtux
https://launchpad.net/~julienmbpe

En ligne

#5 Le 21/05/2015, à 21:51

Julientroploin

Re : [Calc] Insérer une ligne entre chaque ligne

Super, c'est ce dont j'ai besoin, j'ai compris comment créer la macro, comment l'exécuter et j'ai des lignes intercalées jusqu'à 40.
Du coup, je me suis dit que si je modifiais les valeurs start et end pour relancer la macro de 40 à 54 (la dernière ligne de mon tableau de test) ce serait bon mais j'ai :

Erreur d'exécution BASIC.
Une exception s'est produite : 
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .

Pas grave, j'ai refait du début en remplaçant simplement 20 par 54 et j'obtiens ce que je veux. J'ai bien compris que tu n'étais pas l'auteur du script, mais saurais-tu m'expliquer ce qui n'allais pas avec ma 1ere modif', je ne vois pas...
Peux tu aussi m'indiquer comment faire en sorte de n'appliquer la modification qu'à la feuille active : je me doute bien que c'est dans la 2e moitié que ça se joue, mais c'est du Vulcain pour moi...


Fixe : Core i5, 8GoRAM, NVidia 9800GT Silent => Ubuntu 22.04
Portable Compaq Presario2158 : AthlonXP-M2400+, 1GoRAM, ATI Radeon mobility320M => Primtux
https://launchpad.net/~julienmbpe

En ligne