Macros

    From The Document Foundation Wiki
    < Macros‎ | Calc


    Comment forcer la saisie en majuscules ?

    Problème

    Contrairement à Writer, les effets de caractères ne gèrent pas la conversion en majuscules dans Calc. Cette fiche a pour objet de présenter la mise en œuvre de cette fonction par macro. Pour faciliter l'utilisation on souhaite que la conversion en majuscules soit automatique pour les cellules mises en forme avec un style "Majuscule".

    La procédure suivante est associée à l'événement Contenu modifié de la feuille. La variable LibOEvent est passée par l'événement ; elle permet de :

    • tester l'objet modifié dans la feuille par la méthode supportsService : le traitement ne se poursuit que s'il s'agit d'une cellule
    • tester si le style recherché est appliqué à la cellule : si oui on passe en majuscule par la fonction Ucase
    • utiliser la propriété formula (et non string) permet d'obtenir un fonctionnement identique pour les textes, les nombres, les formules.

    option explicit
    
    Sub PysMajuscule(LibOEvent)
    
    if LibOEvent.supportsService("com.sun.star.table.Cell") then
    	if LibOEvent.cellStyle = "Majuscule" then
    		LibOEvent.formula = ucase(LibOEvent.formula)
    	end if
    end if
    End Sub


    Mise en œuvre dans un autre classeur

    1. Copier la macro dans le classeur
    2. Créer un style nommé "Majuscule" (si on choisit un autre nom, modifier dans la macro)
    3. Associer la macro à l'événement Contenu modifié de la feuille concernée (à faire sur toutes les feuilles concernées). Pour cela,
    • clic droit sur l'onglet Événements de la feuille,
    • sélectionner Contenu modifié,
    • cliquer sur Macro et aller "rechercher" cette dernière.

    Nota

    1. Se fonder sur une style permet de gérer entièrement la présentation des cellules et de rester dans la "philosophie" du logiciel
    2. Dans cet exemple simple le passage en majuscule est géré pour une modification de cellule, pas de plage, autrement dit il ne se fait pas si on valide une plage par Alt + ↵ Entrée[1]


    Notes :

    1. Voir Comment gérer la sélection courante ? pour aller plus loin