[prog] Déterminer les plages fusionnées ?
Bonjour, je cherche à écrire une macro pour Calc dont l'entrée est une plage rectangulaire de cellules (notée oRange) et dont une des missions est de déterminer les adresses des plages fusionnées horizontalement de oRange (on suppose pour simplifier que les plages fusionnées dans oRange ne comportent qu'une ligne). Mon point de départ est le pseudo-code suivant (où : oCellule + 1 désigne la translatée à droite de oCellule et oCellule - 1 désigne la translatée à gauche de oCellule) : 1 Pour chaque ligne visible oRow de oRange 2Pour chaque cellule visible oCell de oRow 3 Si oCell débute une plage fusionnée alors 4oCellBis = oCell + 1 5Faire tant que la plage oCell:oCellBis est fusionnée 6 oCellBis = oCellBis + 1 7Boucle 8oCellFin = oCellBis - 1 9PlageFusionnée = oCell:oCellFin 10 Fin si 11 Prochaine oCell en partant de oCellFin + 1 12 Prochaine oRow Pour les lignes 1 et 2, pas de problème. Pour la ligne 3, OK : If oCell.isMerged() Then Pour la ligne 4, euh, c'est quoi la syntaxe pour ce genre de chose ? Je n'arrive pas à trouver un document synthétique fournissant ces renseignements quand on en a besoin. Auriez-vous des pistes ? Pour la ligne 5, c'est bien là qu'est le problème ! J'ai bien tenté d'utiliser getIsMerged() mais, par exemple, si (seule) A1:B1 est fusionnée : -- A1:A1 est déclarée fusionnée : OK -- A1:B1 est déclarée fusionnée : OK -- A1:C1 est déclarée fusionnée : PAS OK ! -- A1:D1 est déclarée fusionnée : PAS OK ! -- etc. En fait, il semble que si la cellule de gauche de la plage testée est la première d'une plage fusionnée, quelque soit la cellule de droite de la plage testée (même sur une autre ligne !), cette plage testée est déclarée fusionnée ! J'ai cherché dans les archives de plusieurs forums, dont « OpenOffice.org Macros and API », mais je n'ai rien trouvé de concluant. Auriez-vous une suggestion à me fournir ? Merci d'avance pour toute aide... -- Denis - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] RE: Pb avec LockControllers
Idem avec Ooo 1.9.100 > -Message d'origine- > Bonjour, > J'ai une application qui fonctionne très bien si je ne fige pas le > rafraichissement. > Mais quand je le fige (pour faire plus rapide et plus joli), j'ai divers > soucis, notamment avec GotoEndOfUsedArea(True) qui ne retourne pas la > dernière cellule "actuelle" de la feuille, mais celle "d'avant le blocage > du rafraichissement". > > Quelqu'un a déjà rencontré le problème, est-ce connu ? > > Jean-Claude > Ooo 1.1.3 sous Windows > - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[prog] Pb avec LockControllers
Bonjour, J'ai une application qui fonctionne très bien si je ne fige pas le rafraichissement. Mais quand je le fige (pour faire plus rapide et plus joli), j'ai divers soucis, notamment avec GotoEndOfUsedArea(True) qui ne retourne pas la dernière cellule "actuelle" de la feuille, mais celle "d'avant le blocage du rafraichissement". Quelqu'un a déjà rencontré le problème, est-ce connu ? Jean-Claude Ooo 1.1.3 sous Windows Dim oCurseur As Object ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 10, 10).String = "X" oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche 10, normal ThisComponent.LockControllers ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 10, 10).String = "" ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 8, 8).String = "X" oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche aussi 10, pas normal ThisComponent.unLockControllers oCurseur = ThisComponent.Sheets.getByName("Résultat").createCursor 'Crée un curseur oCurseur.GotoEndOfUsedArea(True) 'Recherche de la dernière cellule utilisée Print oCurseur.getRangeAddress.EndRow 'Dernière Ligne : Affiche 8, normal ThisComponent.Sheets.getByName("Résultat").getCellByPosition( 8, 8).String = "" - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]