IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Fusion, modification et suppression de cellules [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Fusion, modification et suppression de cellules
    Bonjour à tous,

    J'ai décidé d'abandonner la suite de crosoft, que j'utilise depuis près de 30 ans (Excel et Word) et de me tourner vers Libre Office. Je dois réécrire quelques macros qui, bien que mal foutues, faisaient le job désiré. Malheureusement, je patauge, je patauge.
    Le problème :
    J'ai une feuille Calc qui comporte une seule colonne, mais qui peut comporter jusqu'à 1 million de lignes, uniquement des chaînes de caractères dans les cellules. A un quelconque endroit se trouve une cellule qui contient la chaîne "1 XXXX blablabla". La cellule peut être suivie par une autre qui contient "1 XXXX trucbidule", et ainsi de suite. J'ai donc :
    1- une cellule contenant "1 XXXX blablabla"
    2- pouvant être suivie ou Non par "1 XXXX trucbidule"
    3- Pouvant être suivie ou Non par "1 XXXX "autrechose"
    etc
    Cette séquence peut se répéter plusieurs fois dans la colonne.
    Je veux que la première cellule contiennent "1 XXXX blablabla, trucbidule, autrechose" et que les deux (ou x) cellules suivantes soient effacées.
    Ce bout de code excel fait le travail :

    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
    Dim Str$
    Range("A1").Select
    Do While ActiveCell.Value > 0
    If Left(ActiveCell.Value, 6) = "1 XXXX" Then
    If Left(ActiveCell(2, 1).Value, 6) = "1 XXXX" Then
    Str = Mid(ActiveCell.Value, 8) & ", " & Mid(ActiveCell(2, 1).Value, 8)
    ActiveCell(2, 1).Activate
    Selection.EntireRow.Delete
    ActiveCell(0, 1).Activate
    ActiveCell.Value = "1 XXXX " & Str
    ActiveCell(0, 1).Activate
    End If
    End If
    ActiveCell(2, 1).Activate
    Loop
    J'ai essayé d'indenter le code. Pas réussi :-(
    Le Do While du début permet le balayage, For Each me renvoyait une erreur "problème de pile". Le Delete de la ligne ralentissait considérablement l'éxécution.
    Je suis incapable de convertir ce bout de code, mon problème étant que je peux tester les contenus, mais je n'arrive pas à réécrire dans la première cellule. Je balaie la plage de cellule dans Calc en utilisant le code du tuto http://openoffice-libreoffice.develo...ge-de-cellules. C'est peut-être un problème.

    J'espère avoir été clair (désolé pour la longueur).

    Merci pour votre aide, et pitié pour mes vieux neurones.

    P.

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    En me servant de ce chapitre La dernière cellule d'une ligne, de celui-ci Lire une cellule texte et de la fonction removeByIndex, j'ai fait ceci :

    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
    Sub SuppressionLigne()
     Dim monDocument As Object
     Dim lesFeuilles as Object
     Dim maFeuille As Object
     Dim maCellule As Object
     Dim maPosition As Object
     Dim maZone as Object
     
        monDocument = ThisComponent
        lesFeuilles = monDocument.Sheets
        maFeuille = lesFeuilles.getByName("Feuille1")
     
        maPosition = maFeuille.createCursor
        maPosition.gotoEndOfUsedArea(False)
        NbLig = maPosition.RangeAddress.EndRow 
        maZone =  maFeuille.GetCellRangeByName("A1:A" & NbLig)
        lesLignes = maZone.Rows
     
        for i = 1 to NbLig
    Test:
            maCellule = maFeuille.getCellRangeByName("A" & i + 1)
            if maCellule.String like "1 XXXX*" then
                lesLignes.removeByIndex(i,1)
                goto Test
            end if
        next i
     
    End Sub
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    J'ai réussi à faire ce que je voulais. Comme je le pressentais, ma façon de naviguer dans la plage de cellules n'était pas la bonne. Je n'aurais pas trouvé sans votre aide. Je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Suppression couleur cellules lignes après de-fusion par macro
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2015, 11h19
  2. [LibreOffice][Tableur] Modif de macro suppression contenu cellule
    Par fransix dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 05/12/2013, 14h45
  3. Suppression de cellule
    Par Ricardo_Tubbs dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/09/2006, 11h13
  4. Déplacement Modification et suppression d`un TTabSheet
    Par kurul1 dans le forum C++Builder
    Réponses: 25
    Dernier message: 14/06/2006, 11h57
  5. Suivre les modifications et suppression
    Par manudja dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/08/2005, 07h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo