Majuscule A Chaque Mot en macro

Bonjour,

J’automatise la mise en forme de fichiers CSV et pour cela j’ai besoin de mettre des colonnes en “Majuscule A Chaque Mots”. J’ai essayé l’enregistrement de la macro, mais ça ne fonctionne pas. Auriez vous une solution simple pour appliquer cette mise à forme à quelques colonnes ?

Merci d’avance

Bonjour Tuonick,

Vous trouverez une quasi réponse en suivant le lien ci-dessous :
macro initiale en majuscule

REM  *****  BASIC  *****

Sub goThroughSelectionTextCellsMakeUpperChar1(Optional pDoc As Object)
If IsMissing(pDoc) Then pDoc = ThisComponent
rgs = pDoc.CurrentSelection.queryContentCells(4)
uMgr = pDoc.UndoManager
uMgr.enterUndoContext(“Char1 to upper case”)
For Each rg In rgs
da = rg.getDataarray()
uR = Ubound(da) : uC = Ubound(da(0))
For r = 0 To uR
For c = 0 To uC
Mid(da(r)(c), 1, 1, Ucase(Left(da(r)(c), 1)))
Next c
Next r
rg.setDataArray(da)
Next rg
uMgr.leaveUndoContext
End Sub

Il faudra encore l’adapter, elle ne met que l’initiale du premier mot en majuscule…

:wink:

1 Like

Bel exemple de l’utilisation du “undoManager”. J’ai pris la liberté d’écrire ceci en ‘python’, veuillez également noter la conversion du conteneur avec des plages de cellules en un conteneur avec des cellules individuelles en utilisant l’attribut : ...Cells.

def change_to_title():    
    doc = XSCRIPTCONTEXT.getDocument()
    textcells = doc.CurrentSelection.queryContentCells(4).Cells
    undo = doc.UndoManager
    undo.enterUndoContext("Title_case")
    for cell in textcells:
        cell.String = cell.String.title()
    undo.leaveUndoContext()

Bjr,
vous pouvez créér l’enregistrement de la macro mais il ne sera pas sauvegardée dans le fichier sous le format CSV.
Par contre, la macro appelée dans un bouton sera sauvegardée en format ODS.
Il y a aussi la fonction ‘Répéter’ dans le menu 'Edition qui reproduit la dernière action effectuée.

@+

Bonjour

L’enregistrement de la macro fonctionne.
Ce qui peut ne pas être mémorisé c’est la sélection à la souris de(s) colonnes.
En revanche, la sélection via la zone de sélection est mémorisée (voir ma réponse à cette question sur ce même site). Dès lors on peut obtenir, par exemple pour la mise en forme des colonnes C et D :

sub macm

dim document   as object
dim dispatcher as object
dim args1(0) as new com.sun.star.beans.PropertyValue

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

args1(0).Name = "ToPoint"
args1(0).Value = "C:D"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ChangeCaseToTitleCase", "", 0, Array())

end sub

Cordialement