issue89:libreoffice
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue89:libreoffice [2015/02/06 08:22] – d52fr | issue89:libreoffice [2015/02/07 11:25] (Version actuelle) – andre_domenech | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
In time, I decided, since I was such a fallible, flawed human being, I needed to reduce the number of steps necessary to complete this task in order to lessen my chances for mistakes. The result was a macro where all I have to do is give the sheet a new name. The macro handles all the rest, making sure it is copied and placed at the end of the tab list. The task fits perfectly into the idea behind macros, a repeatable process that automation can speed up, or prevent mistakes. Today, I share it with you.** | In time, I decided, since I was such a fallible, flawed human being, I needed to reduce the number of steps necessary to complete this task in order to lessen my chances for mistakes. The result was a macro where all I have to do is give the sheet a new name. The macro handles all the rest, making sure it is copied and placed at the end of the tab list. The task fits perfectly into the idea behind macros, a repeatable process that automation can speed up, or prevent mistakes. Today, I share it with you.** | ||
- | Retour en arrière sur les parties 8 à 12 (FCM numéros, 53, 55-58) : Je vous ai amené d'une feuille de tableau blanc à un tableau de budget pleinement opérationnel. | + | Retour en arrière sur les parties 8 à 12 (FCM numéros, 53, 55-58) : je vous ai amené d'une feuille de tableau blanc à un tableau de budget pleinement opérationnel. |
- | A temps, j'ai décidé, | + | En temps voulu et puisque |
**The Manual Method | **The Manual Method | ||
Ligne 17: | Ligne 17: | ||
La méthode manuelle | La méthode manuelle | ||
- | De façon à apprécier | + | Pour pouvoir |
- | Faites un clic droit sur l' | + | Faites un clic droit sur l' |
- | Je sais ; vous allez dire que tout ne va pas si mal, mais après | + | Je sais ; vous allez dire que ce n' |
Ligne 40: | Ligne 40: | ||
** | ** | ||
- | La macro CopySheet | + | La macro CopySheet |
La macro n'est pas très longue (page suivante, en haut à droite) et vous pouvez aisément la saisir. Vous pouvez aussi la copier sur : http:// | La macro n'est pas très longue (page suivante, en haut à droite) et vous pouvez aisément la saisir. Vous pouvez aussi la copier sur : http:// | ||
Ligne 48: | Ligne 48: | ||
Doc = ThisComponent | Doc = ThisComponent | ||
- | ThisComponent est le document courant actif dans LibreOffice. Dans ce cas, la macro point vers un tableur Calc. | + | ThisComponent est le document courant actif dans LibreOffice. Dans ce cas, la macro cherchera |
If NOT Doc.supportsService(" | If NOT Doc.supportsService(" | ||
Ligne 69: | Ligne 69: | ||
• The default text (it just uses the name of the current sheet [Sheet1] as the default text).** | • The default text (it just uses the name of the current sheet [Sheet1] as the default text).** | ||
- | Le test « If » s' | + | L' |
Sheet1 = Doc.CurrentController.ActiveSheet.Name | Sheet1 = Doc.CurrentController.ActiveSheet.Name | ||
- | La macro utilise l' | + | La macro utilise l' |
Sheet2 = InputBox(" | Sheet2 = InputBox(" | ||
- | Pour recevoir | + | Pour récupérer |
- | • Un message de demande | + | • Une invite destinée |
• Le titre de la fenêtre InputBox (« CopySheet »). | • Le titre de la fenêtre InputBox (« CopySheet »). | ||
- | • Le texte par défaut (c' | + | • Le texte par défaut (le nom de la feuille courante [Sheet1] est le texte par défaut). |
**If the user clicks the OK button, the InputBox will return the string entered in the text box or the default text when no changes are made. If the user clicks the Cancel button, a blank string is returned. | **If the user clicks the OK button, the InputBox will return the string entered in the text box or the default text when no changes are made. If the user clicks the Cancel button, a blank string is returned. | ||
Ligne 94: | Ligne 94: | ||
Now, the macro must use some logic to determine how to proceed. The “If” checks to see if the returned string is blank. If so, that means that the Cancel button was pressed, therefore the “Exit Sub” is executed. “Exit Sub” exits the macro without running any more of the remaining code. ** | Now, the macro must use some logic to determine how to proceed. The “If” checks to see if the returned string is blank. If so, that means that the Cancel button was pressed, therefore the “Exit Sub” is executed. “Exit Sub” exits the macro without running any more of the remaining code. ** | ||
- | Si l' | + | Si l' |
If Sheet2 = "" | If Sheet2 = "" | ||
Ligne 104: | Ligne 104: | ||
Loop | Loop | ||
- | Maintenant, la macro doit suivre une certaine | + | Maintenant, la macro doit utiliser un raisonnement |
**The Do While...Loop checks to see if another sheet in the Calc document has the same name. The hasByName method checks the supplied name against the names of all the sheets in the collection. If a match is detected, the macro uses an InputBox to prompt the user for a new, unmatched name. The Do While...Loop will loop until the name in Sheet2 does not match the name of any other sheet. The “If” inside the loop exits the macro if Cancel is pressed. If the name is unmatched from the start, the loop never runs. This prevents two sheets from having the same name. | **The Do While...Loop checks to see if another sheet in the Calc document has the same name. The hasByName method checks the supplied name against the names of all the sheets in the collection. If a match is detected, the macro uses an InputBox to prompt the user for a new, unmatched name. The Do While...Loop will loop until the name in Sheet2 does not match the name of any other sheet. The “If” inside the loop exits the macro if Cancel is pressed. If the name is unmatched from the start, the loop never runs. This prevents two sheets from having the same name. | ||
Ligne 113: | Ligne 113: | ||
Doc.Sheets.CopyByName(Sheet1, | Doc.Sheets.CopyByName(Sheet1, | ||
- | La boucle Do While ... vérifie si une autre feuille du document Calc a le même nom. La méthode hasByName compare le nom aux noms des autres feuilles du classeur. Si une identité | + | La boucle Do While... vérifie si une autre feuille du document Calc a le même nom. La méthode hasByName compare le nom aux noms des autres feuilles du classeur. Si une correspondance |
- | NOTE : Le trait de soulignement (_) dans la déclaration InputBox est utilisé pour couper une long ligne de texte en morceaux plus courts. Le Basic LibreOffice exige que le trait de soulignement soit le dernier caractère de la ligne. Rien, pas même un espace, ne peut le suivre. Quand des lignes sont reliées par ce biais, LibreOffice les considère comme une seule ligne. | + | NOTE : Le trait de soulignement (_) dans la déclaration InputBox est utilisé pour couper une longue |
Doc.Sheets.CopyByName(Sheet1, | Doc.Sheets.CopyByName(Sheet1, | ||
Ligne 130: | Ligne 130: | ||
When I developed and wrote the CopySheet macro, I created a macro module for Calc. Here I could store this macro as well as any future macros designed for the Calc program. It's a good idea to group like macros together.** | When I developed and wrote the CopySheet macro, I created a macro module for Calc. Here I could store this macro as well as any future macros designed for the Calc program. It's a good idea to group like macros together.** | ||
- | La dernière ligne de la macro regroupe tout le travail préparatoire pour au final exécuter la copie. Sheets est un appel à l' | + | La dernière ligne de la macro regroupe tout le travail préparatoire pour enfin exécuter la copie. Sheets est un appel à l' |
- | • Le nom de la feuille à copier (Sheet1) | + | • Le nom de la feuille à copier (Sheet1) |
- | • Le nom de la feuille copiée (Sheet2) | + | • Le nom de la feuille copiée (Sheet2) |
- | • La position de la nouvelle feuille (Doc.Sheets.Count) | + | • La position de la nouvelle feuille (Doc.Sheets.Count). |
Count est le nombre total de feuilles du classeur (Sheets). Comme les feuilles sont comptées à partir de 0, l' | Count est le nombre total de feuilles du classeur (Sheets). Comme les feuilles sont comptées à partir de 0, l' | ||
Ligne 139: | Ligne 139: | ||
Créer le module de macro Calc | Créer le module de macro Calc | ||
- | Quand j'ai développé et écrit la macro CopySheet, | + | Quand j'ai développé et écrit la macro CopySheet, |
**To create the module, Tools > Macros > Organize Macros > LibreOffice Basic. The LibreOffice Basic Macros dialog opens. Click Organizer to get the LibreOffice Basic Macro Organizer dialog. Under My Macros > Standard, there is a default module named Module 1. Select it and click Delete. With Standard selected, click New. Name the new Module “Calc” and click OK. Click Close. | **To create the module, Tools > Macros > Organize Macros > LibreOffice Basic. The LibreOffice Basic Macros dialog opens. Click Organizer to get the LibreOffice Basic Macro Organizer dialog. Under My Macros > Standard, there is a default module named Module 1. Select it and click Delete. With Standard selected, click New. Name the new Module “Calc” and click OK. Click Close. | ||
Ligne 145: | Ligne 145: | ||
Now back in the LibreOffice Basic Macros dialog, select the new “Calc” module you just created and click Edit, opening the LibreOffice Macro Editor. Delete the automatically created “Sub Main” and “End Sub”. Type in or copy and paste the SheetCopy macro into the editor. Save the module and close the editor.** | Now back in the LibreOffice Basic Macros dialog, select the new “Calc” module you just created and click Edit, opening the LibreOffice Macro Editor. Delete the automatically created “Sub Main” and “End Sub”. Type in or copy and paste the SheetCopy macro into the editor. Save the module and close the editor.** | ||
- | Pour créer | + | Pour créer |
+ | |||
+ | De retour dans la boîte de dialogue LibreOffice Basic, sélectionnez le module « Calc » que vous venez de créer et cliquez sur Éditer, ce qui ouvre l' | ||
**Test The Macro | **Test The Macro | ||
Ligne 151: | Ligne 153: | ||
After typing in the macro and saving it, you will want to test it to make sure you typed everything correctly. First, open a Calc document or create a new one. You can then test the macro by going to Tools > Macros > Run. Under Library, select My Macros > Standard > Calc. Under “Macro Name” select CopySheet and click Run. Enter a name for the sheet like “New Sheet.” Click OK. If all goes well, a new sheet is created with the name you gave it. You will want to repeat the test and not change the name to see if the macro prompts you to change the name. Also, test to make sure the macro stops when you click on Cancel rather than OK. For the final test, open a text document and run the macro. You should get the message telling you that the macro works only on spreadsheets.** | After typing in the macro and saving it, you will want to test it to make sure you typed everything correctly. First, open a Calc document or create a new one. You can then test the macro by going to Tools > Macros > Run. Under Library, select My Macros > Standard > Calc. Under “Macro Name” select CopySheet and click Run. Enter a name for the sheet like “New Sheet.” Click OK. If all goes well, a new sheet is created with the name you gave it. You will want to repeat the test and not change the name to see if the macro prompts you to change the name. Also, test to make sure the macro stops when you click on Cancel rather than OK. For the final test, open a text document and run the macro. You should get the message telling you that the macro works only on spreadsheets.** | ||
+ | Tester la macro | ||
+ | |||
+ | Après avoir saisi et sauvé la macro, vous voulez la tester pour être sûr que toute la saisie est correcte. D' | ||
**NOTE: Back in Full Circle issue 64 (LibreOffice Part 17: Macros), I showed you how to create a menu shortcut to a macro. This is a good candidate for such a shortcut. Create the menu and shortcut in Calc. | **NOTE: Back in Full Circle issue 64 (LibreOffice Part 17: Macros), I showed you how to create a menu shortcut to a macro. This is a good candidate for such a shortcut. Create the menu and shortcut in Calc. | ||
Ligne 156: | Ligne 161: | ||
Macros like CopySheet can speed up your processes and prevent you from making mistakes, which is the whole idea behind macros. This is just an example of something you can do with macros, but you can write your own macros that can expand the use or capabilities of any of the LibreOffice programs, or just reduce a task you do often. A Google search for “LibreOffice Basic” is a good place to start learning more.** | Macros like CopySheet can speed up your processes and prevent you from making mistakes, which is the whole idea behind macros. This is just an example of something you can do with macros, but you can write your own macros that can expand the use or capabilities of any of the LibreOffice programs, or just reduce a task you do often. A Google search for “LibreOffice Basic” is a good place to start learning more.** | ||
+ | |||
+ | NOTE : Dans l' | ||
+ | |||
+ | Les macros comme CopySheet peuvent accélérer vos processus et vous éviter de faire des erreurs, ce qui est toute l' |
issue89/libreoffice.1423207337.txt.gz · Dernière modification : 2015/02/06 08:22 de d52fr