Bernard Marcelly a écrit :

Bonjour superfan,
Message du 2005-10-12 18:27:


1° lorsque le mot (minuscule) passe en majuscule les accents n'apparaissent pas dans la cellule, alors même qu'ils apparaissent dans la barre de calcul et sur l'aperçu avant impression (ils apparaissent aussi lorsque l'on double clic dans la cellule). Cela est-il normal, comment faire pour qu'ils apparaissent
dans la feuille calc ?


J'ai fait un petit essai. Le changement apparaît dans Calc. Sans doute un problème dans ta macro.


    2° cette macro fonctionne uniquement lorsque l'on se positionne
dans une cellule (j'utilise CurrentSelection dans la macro),
j'aimerai faire en sorte que si l'on sélectionne plusieurs cellules la manip fonctionne aussi. Comment faire ?

J'ai regardé dans le livre de B. Marcelly au sujet des zones mais j'avoue
que cela me parait un peu obscur.

Oui, c'est complexe. Et encore plus pour balayer toutes les cellules dans les différents cas de sélection. En gros, il faut créer une énumération sur l'objet sélection, ce qui permet d'énumérer les zones. Pour chaque zone qui est une simple cellule, pas de problème. Pour chaque vraie zone il faut faire un .queryContentCells avec les bons arguments, et à partir de l'objet obtenu créer une énumération et s'en servir pour énumérer les cellules de chaque zone. Il y a un exemple d'énumération (sur un autre sujet) dans l'exemple du bas de la page 194. Si tu y arrives, ce serait intéressant que tu proposes la macro pour le site fr.openoffice.fr

 Bonne journée
   Bernard

N' y aurrait-il pas confusion entre les différents types de zone qui sont indiqués par exemple p 290 de Programmation OOo et les NamedRanges ? Pour moi superfan, parle des différents type de zone, personnellement, je ferrais ainsi :

Sub MaMacro(Selection as Object)
 if Selection.supportsService("com.sun.star.sheet.SheetCellRanges") then
   for x = 0 to Selection.Count - 1
     MaMacro(Selection(x))
   next
 elseif Selection.supportsService("com.sun.star.table.Cell") then
  ' Ici ta macro sur une seule cellule
 else
for x = 0 to Selection.RangeAddress.EndColumn - Selection.RangeAddress.StartColumn for y = 0 to Selection.RangeAddress.EndRow - Selection.RangeAddress.StartRow
       MaMacro(Selection.getCellByPosition(x,y))
 end if
End Sub

Si tu peux faire ta macro sur plusieurs cellules en même temps, la troisième partie est inutile.

Les zones nommées (NamedRanges) qui sont avec plusieurs zones, c'est sûr que c'est vraiment pas facile d'utilisation quand la méthode .ReferredCells ne marche pas.


Pascal.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à