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 :
J'ai essayé d'indenter le code. Pas réussi :-(
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
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.
Partager