FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.


SommaireProgrammation OBasicOBasic : Informations générales (12)
précédent sommaire suivant
 

Le raccourci clavier Alt+F11 permet d'afficher la boite de dialogue pour gérer les macros.
(C'est l'équivalent de Menu Outils / Macros / Gérer les macros / OpenOffice.ord Basic)

Ensuite, sélectionnez votre fichier AOO/LibO dans la liste de gauche.

Si le fichier ne contient pas encore de module, cliquez sur le bouton « Nouveau ».

Si le fichier contient déjà des macros, sélectionnez le module (généralement nommé Module1 par défaut) et cliquez sur le bouton « Editer » pour y accéder.

Quand vous êtes dans l'éditeur de macros, vous pouvez basculer vers les modules des autres fichiers ouverts, en utilisant la liste déroulante en haut à gauche de l'écran.

Pour ajouter un nouveau module, lorsque vous êtes dans l'éditeur, faites un clic droit dans la barre d'onglet, en bas de la fenêtre : Insérer / Module Basic.

Mis à jour le 31 juillet 2013 SilkyRoad

ThisComponent représente le fichier contenant la macro. C'est l'équivalent de ThisWorkbook dans Excel.
CurrentComponent représente le fichier actif. C'est l'équivalent d'ActiveWorkbook dans Excel. CurrentComponent ne fonctionne par lorsque la procédure est déclenchée depuis l'éditeur de macros.

Vous pouvez utiliser cette macro afin de vérifier par vous-même :
Créez deux fichiers OOo et sauvegardez les sur le poste (getURL renvoie une chaîne vide si le fichier n'est pas enregistré).
Placez la macro dans un des deux fichiers.
Activez le fichier qui ne contient pas la macro.
Lancez la procédure.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
Sub Test_ThisComponent_getCurrentComponent 
  
'Récupère le chemin et le nom du fichier contenant cette macro 
'Nota:  
'getURL renvoie une chaîne vide si le fichier n'est pas enregistré 
MsgBox ConvertFromURL( ThisComponent.getURL ) 
  
'Récupère le chemin et le nom du fichier Actif. 
'Nota: 
'Renvoie un chaîne vide si la macro est lancée depuis l'éditeur de macros 
MsgBox ConvertFromURL( StarDesktop.getCurrentComponent.getURL ) 
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Code vb : Sélectionner tout
ThisComponent.CurrentController.Frame.Title = "Nouveau titre"

Mis à jour le 31 juillet 2013 SilkyRoad

Installez et utilisez l'indispensable outil créé par Bernard Marcelly: XRAY

Mis à jour le 31 juillet 2013 SilkyRoad

La page d'accueil de l'API Project.

L'index global.

Vous pouvez aussi installer le SDK (Software Development Kit) sur votre poste.
Il s'agit d'une documentation très détaillée sur les concepts et les APIs d'OpenOffice.org.

Software Development Kit (SDK).

Mis à jour le 31 juillet 2013 SilkyRoad

Les propriétés des fichiers AOO/LibO sont accessibles par le menu Fichier/Propriétés.

Il est possible de lire ces propriétés par macros :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub LireProprietesFichier 
  Dim oInfo As Object 
  
  oInfo = ThisComponent.DocumentInfo 
  
   MsgBox "Titre: " & oInfo.title & Chr(10) & _ 
     "Auteur: " & oInfo.Author & Chr(10) & _ 
     "Mots clés: " & oInfo.Keywords & Chr(10) & _ 
     "Description: " & oInfo.Description & Chr(10) & _ 
     "Sujet: " & oInfo.Subject & Chr(10) & _ 
     "Type: " & oInfo.MIMEType 
  
   MsgBox "Date création: " & oInfo.CreationDate.Day & "/" & oInfo.CreationDate.Month & _ 
     "/" & oInfo.CreationDate.Year & Chr(10) & _ 
     "Modifié par: " & oInfo.ModifiedBy & Chr(10) & _ 
     "Date modification: " & oInfo.ModifyDate.Day & "/" & oInfo.ModifyDate.Month & _ 
     "/" & oInfo.ModifyDate.Year & " " & Format(oInfo.ModifyDate.Hours, "00") & ":" & _ 
     Format(oInfo.ModifyDate.Minutes, "00") & ":" & Format(oInfo.ModifyDate.Seconds, "00") 
  
  
  'Autre possibilité pour lire les propriétés 
  MsgBox oInfo.getPropertyValue("Author") 
End Sub

Il est aussi possible de modifier les propriétés :
Cet exemple modifie la propriété « Auteur ».
Code vb : Sélectionner tout
1
2
3
4
5
6
7
  Dim oInfo As Object 
  
  oInfo = ThisComponent.DocumentInfo 
  oInfo.Author = "mimi" 
  
  'Une autre possibilité de syntaxe pour modifier une propriété 
  oInfo.setPropertyValue("ModifiedBy" , "fifi")

Mis à jour le 26 août 2013 SilkyRoad

Le champ utilisateur permet d'assigner des informations personnalisées au document.
Menu Fichier / Propriétés / Onglet « utilisateur »
Quatre champs sont disponibles.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub AjoutChampUtilisateur 
  Dim oInfo As Object 
  
  oInfo = ThisComponent.DocumentInfo  
  
  'Ajout d'une information personnelle dans la 1er champ: 
  oInfo.setUserFieldName( 0 , "Affaire" )  
  oInfo.setUserFieldValue( 0 , "FAQ OOo" )  
  
  'Lecture du premier champ utilisateur 
  MsgBox "Nom champ utilisateur N°1: " & oInfo.getUserFieldName(0) & Chr(10) & _ 
    "Contenu champ utilisateur N°1: " & oInfo.getUserFieldValue(0) 
  
End Sub

Pour effacer un champ utilisateur, utilisez :
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Sub EffacerChampUtilisateur 
  Dim oInfo As Object 
  
  oInfo = ThisComponent.DocumentInfo  
  
  'Suppression info dans la 1er champ 
  oInfo.setUserFieldName( 0 , "" )  
  oInfo.setUserFieldValue( 0 , "" )  
  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub InformationsImprimanteActive 
  
  MsgBox ThisComponent.Printer(0).Value & Chr(10) & _ 
    "Est occupée: " & ThisComponent.Printer(4).Value 
  
  '  0 = Name 
  '  1 = PaperOrientation ( 0=Portrait , 1=Paysage) 
  '  2 = PaperFormat ( 0=A3 , 1=A4 , 2=A5 , 3=B4 , B5=4 ) 
  '  3 = PaperSize  
  '  4 = IsBusy 
  '  5 = CanSetPaperOrientation 
  '  6 = CanSetPaperFormat 
  '  7 = CanSetPaperSize 
  
End Sub

Mis à jour le 31 juillet 2013 SilkyRoad

Les macros qui sélectionnent des feuilles successives ou des cellules, qui activent/désactivent des objets divers, peuvent provoquer un effet de scintillement à l'écran. Une solution (hormis celle d'éviter les sélections dans les macros) consiste à figer l'écran pendant le déroulement de la macro. C'est l'équivalent de ScreenUpdating = False en VBA.

Pour activer cette option, placez la ligne suivante en début de procédure :

Code vb : Sélectionner tout
ThisComponent.LockControllers

Pour désactiver cette option en fin de procédure :
Code vb : Sélectionner tout
ThisComponent.UnlockControllers

Mis à jour le 26 août 2013 SilkyRoad

Sélectionnez le menu Aide - À propos de LibreOffice ou OpenOffice.
Cette commande ouvre une boîte de dialogue contenant des informations sur le document.

Ensuite, pour obtenir plus d'informations, maintenez la touche Ctrl enfoncée et appuyez successivement sur les lettres S, D et T. Vous trouverez au début des informations sur les numéros de compilation et de version, ainsi qu'une liste des développeurs OOo.
Si vous ne souhaitez pas lire les informations jusqu'à la fin, appuyez sur la touche Échap.

Cette macro de Laurent Godard permet aussi de récupérer la version de LibO/AOO utilisée :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Main 
  MsgBox "Version OOo: " & RecupereVersionOOO 
End Sub 
  
  
Function RecupereVersionOOO() As String 
  '----------------------- 
  'Auteur: Laurent Godard 
  'récupère version de OOo 
  '----------------------- 
  
  Dim aSettings, aConfigProvider 
  Dim aParams2(0) As new com.sun.star.beans.PropertyValue  
  
  aConfigProvider = createUnoService( "com.sun.star.configuration.ConfigurationProvider" )  
  
  aParams2(0).Name = "nodepath"  
  aParams2(0).Value = "/org.openoffice.Setup/Product"  
  
  aSettings = aConfigProvider.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aParams2() ) 
  
  RecupereVersionOOO = aSettings.getbyname("ooSetupVersion") 
End Function

La fonction GetSolarVersion renvoie le numéro interne de la version active de LibO/AOO.
Code vb : Sélectionner tout
1
2
3
Sub Main 
  MsgBox GetSolarVersion 
End Sub

Mis à jour le 26 août 2013 SilkyRoad zoom61

Trois manières différentes :

Code : Sélectionner tout
1
2
3
stardesktop.terminate() 'ferme le doc courant 
DisposeDocument(ThisComponent) 'ferme le doc passé en paramètre 
ThisComponent.close(True) 'méthode de l'objet doc

Mis à jour le 21 octobre 2014 madvic

La commande est la suivante GetSolarVersion().

Cela peut être utile si vous avez une macro qui ne fonctionne qu'avec une version minimum de la suite :

Code obasic : Sélectionner tout
1
2
3
4
5
6
7
If CInt( GetSolarVersion() ) < 410 Then 'Teste la version de la suite 
   Beep 'Son d'erreur 
   MsgBox "Votre version de LibreOffice/OpenOffice ("""&GetSolarVersion()&""") est trop ancienne pour utiliser cette macro, il vous faut un minimum la ""410""." 
   Beep 'Son d'erreur 
   MsgBox "Macro désactivé" 
   Stop 'Désactive l'éxécution de la macro 
End If

Mis à jour le 17 décembre 2014 madvic

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique OpenOffice & LibreOffice