Outils pour utilisateurs

Outils du site


issue70:libreoffice

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue70:libreoffice [2013/05/25 22:08] – [6] fcm_-_ekelissue70:libreoffice [2013/05/26 10:45] (Version actuelle) – [7] auntiee
Ligne 7: Ligne 7:
 Pour les quatre parties précédentes de cette série, nous avons pris notre temps pour construire un document de base de données avec le module Base de LibreOffice. Nous avons une base de données avec des formulaires pour saisir nos données et des requêtes, et des rapports pour les extraire. Nous avons maintenant un document que nous pouvons utiliser pour l'enregistrement de notre bibliothèque. Toutefois, le design actuel a un défaut qu'il faut surmonter. Si nous avons besoin de saisir le nom d'un nouvel auteur ou d'un type de média pendant que nous nous trouvons dans le formulaire livres, il faut fermer celui-ci et ouvrir l'un des autres. Si on avait la possibilité de saisir les nouveaux auteurs et médias directement à partir du formulaire livres, notre base se comporterait davantage comme une application et la saisie des données deviendrait encore plus facile. Nous pouvons le faire avec quelques courtes macros. Pour les quatre parties précédentes de cette série, nous avons pris notre temps pour construire un document de base de données avec le module Base de LibreOffice. Nous avons une base de données avec des formulaires pour saisir nos données et des requêtes, et des rapports pour les extraire. Nous avons maintenant un document que nous pouvons utiliser pour l'enregistrement de notre bibliothèque. Toutefois, le design actuel a un défaut qu'il faut surmonter. Si nous avons besoin de saisir le nom d'un nouvel auteur ou d'un type de média pendant que nous nous trouvons dans le formulaire livres, il faut fermer celui-ci et ouvrir l'un des autres. Si on avait la possibilité de saisir les nouveaux auteurs et médias directement à partir du formulaire livres, notre base se comporterait davantage comme une application et la saisie des données deviendrait encore plus facile. Nous pouvons le faire avec quelques courtes macros.
  
-Le langage Basic de LibreOffice est très similaire à d'autres langages Basic, tels que Visual Basic for Applications. Afin de manipuler le document LibreOffice sous-jacent, nous accédons au cadre Uno qui contrôle le document. Le cadre UNO est très complexe, mais je ferai de mon mieux pour expliquer les propriétés et les objets que nous utiliserons. Mon objectif n'est pas de vous apprendre à écrire des macros dans LibreOffice, mais de vous montrer comment vous pourrez les utiliser. +Le langage Basic de LibreOffice est très similaire à d'autres langages Basic, tels que Visual Basic for Applications. Afin de manipuler le document LibreOffice sous-jacent, nous accédons au cadre UNO qui contrôle le document. Le cadre UNO est très complexe, mais je ferai de mon mieux pour expliquer les propriétés et les objets que nous utiliserons. Mon objectif n'est pas de vous apprendre à écrire des macros dans LibreOffice, mais de vous montrer comment vous pourrez les utiliser. 
  
 ===== 2 ===== ===== 2 =====
Ligne 21: Ligne 21:
 Macros : Sécurité et Options Macros : Sécurité et Options
  
-Alors qu'il est vrai que les macros nous permettent de faire des trucs sympas dans nos documents, elles peuvent également être source de problèmes. Il y a des individus qui se servent de macros pour compromettre le système d'autres personnes ; c'est pourquoi il faut prendre quelques minutes pour parler de la sécurité des macros. Que vous exécutez LibreOffice sous Linux, Mac ou Windows, du code malicieux au sein d'une macro peut compromettre vos données et éventuellement votre système tout entier.+Alors qu'il est vrai que les macros nous permettent de faire des trucs sympas dans nos documents, elles peuvent également être source de problèmes. Il y a des individus qui se servent de macros pour compromettre le système d'autres personnes ; c'est pourquoi il faut prendre quelques minutes pour parler de la sécurité des macros. Que vous exécutiez LibreOffice sous Linux, Mac ou Windows, du code malicieux au sein d'une macro peut compromettre vos données et éventuellement votre système tout entier.
  
-La sécurité des macros dans LibreOffice est simple. Outils > Options ouvre le dialogue Options pour LibreOffice. Sous LibreOffice, sélectionnez Sécurité. Cliquez sur le bouton Sécurité des Macros... pour afficher les options de sécurité des macros. Il y en a quatre. N'utilisez jamais le Niveaux de sécurité faible il exécutera des macros sans vous demander la permission. Je suggère le Niveau de sécurité moyen. Avec ce niveau, vous devez indiquer votre choix - exécuter les macros ou pas - quand vous ouvrez un document qui en contient. Les Niveaux de sécurité élevé et très élevé nécessite un certificat ou un dossier désigné par vos soins comme étant de confiance. C'est très bien, mais je crois que rien ne vaut les instincts de l'utilisateur. D'habitude, vous savez si vous vous attendiez à ce qu'un document contient des macros. Dans le doute, cliquez sur Non. Cliquez sur OK pour sauvegarder votre choix et sur OK pour fermer le dialogue des options.+La sécurité des macros dans LibreOffice est simple. Outils > Options ouvre le dialogue Options pour LibreOffice. Sous LibreOffice, sélectionnez Sécurité. Cliquez sur le bouton Sécurité des Macros... pour afficher les options de sécurité des macros. Il y en a quatre. N'utilisez jamais le niveau de sécurité faibleil exécutera des macros sans vous demander la permission. Je suggère le niveau de sécurité moyen. Avec ce niveau, vous devez indiquer votre choix - exécuter les macros ou pas - quand vous ouvrez un document qui en contient. Les niveaux de sécurité élevé et très élevé nécessitent un certificat ou un dossier désigné par vos soins comme étant de confiance. C'est très bien, mais je crois que rien ne vaut les instincts de l'utilisateur. D'habitude, vous savez si vous vous attendez à ce qu'un document contienne des macros. Dans le doute, cliquez sur Non. Cliquez sur OK pour sauvegarder votre choix et sur OK pour fermer le dialogue des options.
  
 Et maintenant, amusons-nous.  Et maintenant, amusons-nous. 
Ligne 41: Ligne 41:
 Nous allons écrire quatre macros pour notre document de base de données. Trois traiteront l'ouverture de formulaires et le dernier mettra à jour les cases de la liste d'auteurs et de types de média. En général, la raison d'être des macros est de faire des choses qui ne sont pas intégrées dans le programme ou de simplifier les tâches complexes. En fait, nos macros font les deux, car nous allons simplifier les tâches du rajout d'auteurs et de types de média et nous allons fournir une fonctionnalité qui ne fait pas partie du programme. Nous allons écrire quatre macros pour notre document de base de données. Trois traiteront l'ouverture de formulaires et le dernier mettra à jour les cases de la liste d'auteurs et de types de média. En général, la raison d'être des macros est de faire des choses qui ne sont pas intégrées dans le programme ou de simplifier les tâches complexes. En fait, nos macros font les deux, car nous allons simplifier les tâches du rajout d'auteurs et de types de média et nous allons fournir une fonctionnalité qui ne fait pas partie du programme.
  
-Avant de commencer à écrire les macros, nous avons besoin d'un conteneur où les mettre. Les macros sont contenus dans un module. Les modules peuvent vivre dans le programme même ou au sein du document. Puisque nos macros sont spécifiques au fichier de base de données, nous allons les intégrer dans le document. Les macros intégrés à un document ne sont disponibles que quand le document est chargé. Les macros contenues dans un programme sont disponibles tant que le programme fonctionne.+Avant de commencer à écrire les macros, nous avons besoin d'un conteneur où les mettre. Les macros sont contenues dans un module. Les modules peuvent vivre dans le programme même ou au sein du document. Puisque nos macros sont spécifiques au fichier de base de données, nous allons les intégrer dans le document. Les macros intégrées à un document ne sont disponibles que quand le document est chargé. Les macros contenues dans un programme sont disponibles tant que le programme fonctionne.
  
-Outils > Macros > Gérer les macros > LibreOffice Basic. La boîte de dialogue Macros LibreOffice Basic s'affiche. Sélectionnez book.odb dans la zone Macro de (ndlt : à gauche). Cliquez sur le bouton Nouveau (ndlt : à droite). Une boite de dialogue s'affiche vous demandant de nommer le module. Appelez-le AppelsForm. Cliquez sur OK. L'éditeur de macro de LibreOffice s'affiche. Le macro contient déjà une routine Main par défaut. Nous n'allons pas utiliser cette routine. Mettez Sub Main et End Main en surbrillance et appuyez sur la touche Retour arrière pour les supprimer.+Outils > Macros > Gérer les macros > LibreOffice Basic. La boîte de dialogue Macros LibreOffice Basic s'affiche. Sélectionnez book.odb dans la zone Macro de (ndlt : à gauche). Cliquez sur le bouton Nouveau (ndlt : à droite). Une boîte de dialogue s'affiche vous demandant de nommer le module. Appelez-le AppelsForm. Cliquez sur OK. L'éditeur de macro de LibreOffice s'affiche. Le macro contient déjà une routine Main par défaut. Nous n'allons pas utiliser cette routine. Mettez Sub Main et End Main en surbrillance et appuyez sur la touche Retour arrière pour les supprimer.
  
 ===== 4 ===== ===== 4 =====
Ligne 53: Ligne 53:
  ThisDatabaseDocument refers to the currently open database document. In our case, book.odb. FormDocuments is a collection of all the forms in the document. Finally, GetByName retrieves a specific form object from the collection. Notice, we pass the variable FormName from the signature to this method. Once the call is complete, the variable GetForm is the object of the form name passed to the subroutine. The fourth line calls the Open method of the form. On the fifth line, we tell Basic this is the end of the subroutine with the command End Sub.**  ThisDatabaseDocument refers to the currently open database document. In our case, book.odb. FormDocuments is a collection of all the forms in the document. Finally, GetByName retrieves a specific form object from the collection. Notice, we pass the variable FormName from the signature to this method. Once the call is complete, the variable GetForm is the object of the form name passed to the subroutine. The fourth line calls the Open method of the form. On the fifth line, we tell Basic this is the end of the subroutine with the command End Sub.**
  
-Notre première macro est une routine généralisée pour ouvrir un formulaire. Une routine généralisée est écrite pour être ré-utilisée. Nous appellerons cette routine deux fois à partir d'autres routines que nous allons écrire. Tapez la routine montrée ci-dessus dans l'éditeur.+Notre première macro est une routine généralisée pour ouvrir un formulaire. Une routine généralisée est écrite pour être réutilisée. Nous appellerons cette routine deux fois à partir d'autres routines que nous allons écrire. Tapez la routine montrée ci-dessus dans l'éditeur.
  
-La première ligne de la routine s'appelle la signature. C'est la signature qui détermine la façon dont la routine est appelé. Une signature commence par le mot clé Sub, qui définit cet appel comme subroutine (routine). Ensuite, le nom de la routine. Dans notre cas OpenAForm (OuvrirUnFormulaire) est le nom de la routine. Enfin, entre les parenthèses, nous avons les arguments utilisés quand on appelle cette routine-ci. Dans notre cas, nous avons une variable nommée FormName (NomDuFormulaire) qui est un type de String (Chaîne). À la deuxième ligne de la routine, Dim est un autre mot clé. Dim initialise une variable en tant que type et, éventuellement, en tant que valeur. Nous définissons une variable nommée GetForm (ObtenirFormulaire) en tant que type Object (Objet). la troisième ligne assigne une valeur à la variable GetForm avec une chaîne de commandes dans le cadre UNO.+La première ligne de la routine s'appelle la signature. C'est la signature qui détermine la façon dont la routine est appelé. Une signature commence par le mot clé Sub, qui définit cet appel comme subroutine (routine). Ensuite, le nom de la routine. Dans notre cas OpenAForm (OuvrirUnFormulaire) est le nom de la routine. Enfin, entre parenthèses, nous avons les arguments utilisés quand on appelle cette routine-ci. Dans notre cas, nous avons une variable nommée FormName (NomDuFormulaire) qui est un type de String (Chaîne). À la deuxième ligne de la routine, Dim est un autre mot clé. Dim initialise une variable en tant que type et, éventuellement, en tant que valeur. Nous définissons une variable nommée GetForm (ObtenirFormulaire) en tant que type Object (Objet). la troisième ligne assigne une valeur à la variable GetForm avec une chaîne de commandes dans le cadre UNO.
  
 ThisDatabaseDocument (CeDocumentBase) fait référence au document de base de données actuellement ouvert. Ici, il s'agit de book.odb (livre.odb). FormDocuments est un ensemble de tous les formulaires dans le document. Enfin, GetByName (ObtenirParNom) récupère un objet formulaire spécifique dans l'ensemble. Remarquez que nous passons le nom de formulaire déjà passé à la routine. La quatrième ligne appelle la méthode Open (Ouvrir) du formulaire. À la cinquième ligne nous disons à Basic que c'est la fin de la routine avec la commande End Sub. ThisDatabaseDocument (CeDocumentBase) fait référence au document de base de données actuellement ouvert. Ici, il s'agit de book.odb (livre.odb). FormDocuments est un ensemble de tous les formulaires dans le document. Enfin, GetByName (ObtenirParNom) récupère un objet formulaire spécifique dans l'ensemble. Remarquez que nous passons le nom de formulaire déjà passé à la routine. La quatrième ligne appelle la méthode Open (Ouvrir) du formulaire. À la cinquième ligne nous disons à Basic que c'est la fin de la routine avec la commande End Sub.
Ligne 92: Ligne 92:
 In the database pane, click on Forms. Right-click the Books form and select edit. Add two push buttons to the form, one under the Authors table and another under the Media table. Right-click the button under the Authors table and select Control to bring up the buttons properties dialog. On the General tab, change the name to AddAuthors and the Label to Add Authors. On the Events tab, click the ellipses (…) button next to Execute Action – which brings up the Assign Action dialog. Click the Macro button to bring up the Macro Selector dialog. In the tree list under Library, select book.odb > Standard > FormCalls. Select OpenAuthorsForm from the Macro Name list and click OK. Click OK to close the Assign Action dialog. Close the buttons properties dialog.** In the database pane, click on Forms. Right-click the Books form and select edit. Add two push buttons to the form, one under the Authors table and another under the Media table. Right-click the button under the Authors table and select Control to bring up the buttons properties dialog. On the General tab, change the name to AddAuthors and the Label to Add Authors. On the Events tab, click the ellipses (…) button next to Execute Action – which brings up the Assign Action dialog. Click the Macro button to bring up the Macro Selector dialog. In the tree list under Library, select book.odb > Standard > FormCalls. Select OpenAuthorsForm from the Macro Name list and click OK. Click OK to close the Assign Action dialog. Close the buttons properties dialog.**
  
-Créer des connexions au macros+Créer des connexions aux macros
  
 À ce stade, nos macros ne font rien du tout. Il faut les relier aux objets dans notre formulaire afin de pouvoir les activer quand on en a besoin. Nous allons d'abord connecter les routines OpenAForm (OuvrirFormulaireAuteurs) à des boutons dans notre formulaire et ensuite nous connecterons la ListRefresh (RafraîchirListe) aux menus déroulants. À ce stade, nos macros ne font rien du tout. Il faut les relier aux objets dans notre formulaire afin de pouvoir les activer quand on en a besoin. Nous allons d'abord connecter les routines OpenAForm (OuvrirFormulaireAuteurs) à des boutons dans notre formulaire et ensuite nous connecterons la ListRefresh (RafraîchirListe) aux menus déroulants.
  
-Dans le volet Base de données, cliquez sur Formulaires. Faites un clic droit sur le formulaire Livres et sélectionnez Éditer. Ajoutez deux boutons-poussoirs au formulaire, une sous la tableau Auteurs et l'autre sous la tableau Média. Faites un clic droit sur le bouton sous le tableau Auteurs et sélectionnez Contrôle pour afficher le dialogue des propriétés du bouton. Sous l'onglet Général, remplacez le nom par AjouterAuteurs et l'Étiquette par Ajouter Auteurs. Sous l'onglet Événements , cliquez sur le bouton (...), à l'extrémité droite de la ligne, Exécutez l'action et le dialogue Assigner une action s'affichera. Cliquez sur le bouton Macro... pour afficher le dialogue Sélecteur de macro. Dans l'arborescence sous Library (Bibliothèque), sélectionnez livre.odb > Standard > AppelsForm. Sélectionnez OuvrirFormulaireAuteurs dans la liste Nom de la macro et cliquez sur OK. Cliquez sur OK pour fermer le dialogue Assigner une action. Fermez le dialogue des propriétés des boutons.+Dans le volet Base de données, cliquez sur Formulaires. Faites un clic droit sur le formulaire Livres et sélectionnez Éditer. Ajoutez deux boutons-poussoirs au formulaire, un sous le tableau Auteurs et l'autre sous la tableau Média. Faites un clic droit sur le bouton sous le tableau Auteurs et sélectionnez Contrôle pour afficher le dialogue des propriétés du bouton. Sous l'onglet Général, remplacez le nom par AjouterAuteurs et l'Étiquette par Ajouter Auteurs. Sous l'onglet Événements , cliquez sur le bouton (...), à l'extrémité droite de la ligne, Exécutez l'actionet le dialogue Assigner une action s'affichera. Cliquez sur le bouton Macro... pour afficher le dialogue Sélecteur de macro. Dans l'arborescence sous Library (Bibliothèque), sélectionnez livre.odb > Standard > AppelsForm. Sélectionnez OuvrirFormulaireAuteurs dans la liste Nom de la macro et cliquez sur OK. Cliquez sur OK pour fermer le dialogue Assigner une action. Fermez le dialogue des propriétés des boutons.
  
 **Do the same with the button under the Media table, only name it AddMedia, make the label Add Media Type, and assign the macro OpenMediaForm to the Execute Action event. **Do the same with the button under the Media table, only name it AddMedia, make the label Add Media Type, and assign the macro OpenMediaForm to the Execute Action event.
Ligne 123: Ligne 123:
 Tester les modifications Tester les modifications
  
-Chaque fois que nous changeons quelque chose dans les formulaires, il faut les tester pour nous assurer que tout fonctionne, surtout là où nous avons utilisé des macros. Une seule faute de frappe pourrait causer d'énormes problèmes. Double-cliquez sur le formulaire Livres pour l'ouvrir. Ajoutez-y un nouveau livre dont l'auteur et le type de média n'existe pas encore. Cliquez sur le bouton Ajouter Auteurs pour vérifier qu'il ouvre le formulaire. Ajoutez-y quelques auteurs; Fermez le formulaire Auteurs. Cliquez sur le menu déroulant auteurs et vérifiez que les auteurs que vous venez d'ajouter y figurent. Faites le même test avec le bouton Ajouter Type Média et le menu déroulant.+Chaque fois que nous changeons quelque chose dans les formulaires, il faut les tester pour nous assurer que tout fonctionne, surtout là où nous avons utilisé des macros. Une seule faute de frappe pourrait causer d'énormes problèmes. Double-cliquez sur le formulaire Livres pour l'ouvrir. Ajoutez-y un nouveau livre dont l'auteur et le type de média n'existent pas encore. Cliquez sur le bouton Ajouter Auteurs pour vérifier qu'il ouvre le formulaire. Ajoutez-y quelques auteurs ; fermez le formulaire Auteurs. Cliquez sur le menu déroulant auteurs et vérifiez que les auteurs que vous venez d'ajouter y figurent. Faites le même test avec le bouton Ajouter Type Média et le menu déroulant.
  
 Quelques réflexions et références pour terminer. Quelques réflexions et références pour terminer.
  
-À nouveau, j'aimerais souligner la complexité de l'écriture de macros en LibreOffice Basic. Il n'y a pas beaucoup de documentation, mais il existe. Si relever le défi vous intéresse, voici quelques références pour vous aider à commencer :+À nouveau, j'aimerais souligner la complexité de l'écriture de macros avec LibreOffice Basic. Il n'y a pas beaucoup de documentation, mais elle existe. Si relever le défi vous intéresse, voici quelques références pour vous aider à commencer :
  
 LibreOffice Basic Guide: http://wiki.documentfoundation.org/images/d/dd/BasicGuide_OOo3.2.0.odt LibreOffice Basic Guide: http://wiki.documentfoundation.org/images/d/dd/BasicGuide_OOo3.2.0.odt
 Andrew Pitonyak's OpenOffice Macro Information: http://www.pitonyak.org/oo.php Andrew Pitonyak's OpenOffice Macro Information: http://www.pitonyak.org/oo.php
 +Un livre (payant) en français : http://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-et-libreoffice-9782212132472
  
 Vous trouverez les macros utilisés dans ce tutoriel sur pastebin.com à http://pastebin.com/MU2Ztizi Vous trouverez les macros utilisés dans ce tutoriel sur pastebin.com à http://pastebin.com/MU2Ztizi
  
-La prochaine fois nous continuerons notre exploration de la suite bureautique LibreOffice avec le module Formule.+La prochaine foisnous continuerons notre exploration de la suite bureautique LibreOffice avec le module Formule.
  
  
  
issue70/libreoffice.1369512481.txt.gz · Dernière modification : 2013/05/25 22:08 de fcm_-_ekel