Fa q Open Office

150
Date de publication : 23/09/2006 Dernière mise à jour : 06/03/2007 Cette FAQ a été réalisée pour répondre aux questions concernant de la suite bureautique Open Office. N'hésitez pas à me contacter pour proposer vos contributions ou si vous constatez des erreurs dans cette page: Philippe JOCHMANS Tous les exemples ont été testés avec la version OOo 2.1 & WinXP. Bonne lecture.

Transcript of Fa q Open Office

Page 1: Fa q Open Office

Date de publication : 23/09/2006

Dernière mise à jour : 06/03/2007

Cette FAQ a été réalisée pour répondre aux questions concernant de la suitebureautique Open Office.N'hésitez pas à me contacter pour proposer vos contributions ou si vous constatez deserreurs dans cette page: Philippe JOCHMANSTous les exemples ont été testés avec la version OOo 2.1 & WinXP.Bonne lecture.

Page 3: Fa q Open Office

- 3 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

1. Informations générales (18) .......................................................................................................................................................42. Le tableur Calc (77) ................................................................................................................................................................ 11

2.1. Les feuilles (68) ..............................................................................................................................................................132.1.1. Les cellules (46) .................................................................................................................................................... 22

2.1.1.1. Les formules (9) ........................................................................................................................................... 342.1.1.1.1. Texte (1) ...............................................................................................................................................352.1.1.1.2. Statistique (1) .......................................................................................................................................362.1.1.1.3. Mathématique (1) .................................................................................................................................372.1.1.1.4. Add-In (1) ............................................................................................................................................ 382.1.1.1.5. Les Dates et les Heures (1) ................................................................................................................. 392.1.1.1.6. Classeur et Matrice (1) ........................................................................................................................ 402.1.1.1.7. Information (1) .....................................................................................................................................412.1.1.1.8. Logique (1) .......................................................................................................................................... 422.1.1.1.9. Divers (1) ............................................................................................................................................. 43

2.1.1.2. Les annotations (4) ....................................................................................................................................... 442.1.1.3. Les formats (6) ............................................................................................................................................. 472.1.1.4. Les cellules et plages nommées (6) ............................................................................................................. 50

2.1.2. Les images (1) ....................................................................................................................................................... 532.2. Les graphiques (5) .......................................................................................................................................................... 55

3. Le traitement de texte Writer (27) .......................................................................................................................................... 603.1. Les paragraphes (3) ........................................................................................................................................................ 673.2. Les signets (3) ................................................................................................................................................................ 683.3. Les images (1) ................................................................................................................................................................ 703.4. Les tableaux Writer (4) .................................................................................................................................................. 713.5. Les cadres - TextFrames (5) .......................................................................................................................................... 74

4. Le module Base (10) ............................................................................................................................................................... 775. Le module de dessin Draw (3) ................................................................................................................................................846. Le module de présentation Impress (8) ...................................................................................................................................867. Les boîtes de dialogue BASIC (25) ........................................................................................................................................ 90

7.1. Les cases à cocher: CheckBox (1) ................................................................................................................................. 937.2. Le contrôle picto: ImageControl (2) .............................................................................................................................. 947.3. Les zones de liste: ListBox (7) ...................................................................................................................................... 967.4. Les barres de progression: ProgressBar (1) ................................................................................................................. 1007.5. Les zones de texte: TextField (6) .................................................................................................................................1017.6. Les champs Date / Calendriers (2) ...............................................................................................................................1057.7. La sélection de fichiers: FileControl (1) ...................................................................................................................... 107

8. Les sauvegardes (6) ............................................................................................................................................................... 1089. Les répertoires (8) ................................................................................................................................................................. 11110. Les fichiers (5) .....................................................................................................................................................................11611. Les filtres (5) ....................................................................................................................................................................... 11912. L'éditeur de macros (5) ....................................................................................................................................................... 12313. Automation (4) .....................................................................................................................................................................12514. Les chaines de caractères (5) .............................................................................................................................................. 12715. L'interaction avec d'autres applications (18) ....................................................................................................................... 133

15.1. Les fichiers texte (8) ...................................................................................................................................................14016. Les variables (10) ................................................................................................................................................................ 144

Page 4: Fa q Open Office

- 4 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Informations générales

C'est quoi Open Office ?

Auteurs : Silkyroad ,

OpenOffice.org (aussi appelé OOo) est une suite bureautique libre et multi-plateforme, constituée:D'un traitement de texte (.odt)D'un tableur (.ods)D'un module de présentations (.odp)D'un module de dessins (.odg)D'un module pour les bases de données (.odb)OpenOffice.org est la version libre de StarOffice, éditée par Sun MicroSystems.

lien : Vous pouvez télécharger l'application sur le site officiel OpenOffice.org

lien : Comparez les suites bureautiques libres et commerciales, par Netah25

Comment accéder à l'éditeur de macros (aussi appelé EDI) ?

Auteurs : Silkyroad ,

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 OOo 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 surle 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 utilisantla liste déroulante en haute à 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 basde la fenêtre: Insérer / Module Basic.

Quelle est la différence entre ThisComponent et CurrentComponent ?

Auteurs : 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. CurrentComponentne 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 2 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 2 fichiers.Activez le fichier qui ne contient pas la macro.Lancez la procédure.

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

Page 5: Fa q Open Office

- 5 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox ConvertFromURL( StarDesktop.getCurrentComponent.getURL )End Sub

Est il possible de lire les fichiers OOo si l'application n'est pas installée sur le poste ?

Auteurs : Silkyroad ,

Il existe une visionneuse pour lire les documents issus du traitement de texte Writer (formats .sxw et .odt) si Open Officen'est pas installé sur le poste.

lien : Cliquez sur le lien.

Comment modifier la barre de titre de l'application ?

Auteurs : Silkyroad ,

ThisComponent.CurrentController.Frame.Title = "Nouveau titre"

Comment installer les dictionnaires orthographiques, de césure et de synonymes ?

Auteurs : Silkyroad ,

Si vous disposez d'OpenOffice.org version 2.xUtilisez le menu FichierAssistantsInstaller de nouveaux dictionnairesSuivez les instructions des boîtes de dialogue pour choisir et installer le dictionnaire de votre choix.Ensuite, fermez OpenOffice.org ainsi que le lanceur rapide.Relancez et paramétrez les dictionnaires dans le menuOutilsOptionsParamètres linguistiquesLinguistiqueVous serez peut être obligé de redémarrer le PC pour que le dictionnaire soit opérationnel.

lien : DicOOo Installeur multi plateformes de dictionnaires

Comment visualiser les propriétés, méthodes et interfaces disponibles sur une variable objet ?

Auteurs : Silkyroad ,

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

Ou trouver une description complète des APIs Open Office ?

Auteurs : Silkyroad ,

La page d'accueil de l'API Project.

L'index global.

Page 6: Fa q Open Office

- 6 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

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).

Est il possible de visualiser le code source d'OpenOffice ?

Auteurs : Michaël ,

La source est librement téléchargeable:

OpenOffice.org 2.0.4 Source

OpenOffice.org 2.1.0 Source

Comment interrompre une macro en cours ?

Auteurs : Silkyroad ,

Utilisez le raccourci clavier: Ctrl + Maj + Q

Comment modifier le format par défaut pour l'enregistrement des documents ?

Auteurs : Silkyroad ,

Menu OutilsOptionsSélectionnez "Chargement/Enregistrement" dans le menu de gauchePuis "Général"Dans le champ "Format de fichier par défaut" vous pouvez spécifier le format d'enregistrement pour chaque type dedocument

Comment lire ou modifier les propriétés des fichiers OpenOffice ?

Auteurs : Silkyroad ,

Les propriétés des fichiers OOo sont accessibles par le menu Fichier/Propriétés.Il est possible de lire ces propriétés par macros:

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) & _

Page 7: Fa q Open Office

- 7 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

"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 posiblilité 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".

Dim oInfo As Object oInfo = ThisComponent.DocumentInfo oInfo.Author = "mimi" 'Une autre possiblité de syntaxe pour modifier une propriété oInfo.setPropertyValue("ModifiedBy" , "fifi")

Comment ajouter, lire ou modifier les propriétés champ utilisateur ?

Auteurs : Silkyroad ,

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

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:

Sub EffacerChampUtilisateur Dim oInfo As Object

oInfo = ThisComponent.DocumentInfo 'Suppression info dans la 1er champ oInfo.setUserFieldName( 0 , "" ) oInfo.setUserFieldValue( 0 , "" )

Page 8: Fa q Open Office

- 8 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment récupérer des informations sur l'imprimante active ?

Auteurs : Silkyroad ,

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

Comment figer l'écran pendant le déroulement d'une macro ?

Auteurs : Silkyroad ,

Les macros qui sélectionnent des feuilles successives ou des cellules, qui activent/désactivent des objets divers, peuventprovoquer 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:

ThisComponent.LockControllers

Pour désactiver cette option en fin de procédure:

ThisComponent.UnlockControllers

Existe il des Easter Eggs dans OpenOffice ?

Auteurs : Silkyroad ,

La réponse est oui.Pour découvrir les équipes de développement OOo:Dans Writer, saisissez le mot StarWriterTeam et appuyez ensuite sur la touche F3.Dans Calc, saisissez la formule =STARCALCTEAM() dans une cellule.Un jeu de morpion dans Calc:Saisissez la formule =GAME(E10:G12;"TicTacToe"), par exemple en A1.Le jeu se déroule dans la plage que vous avez désigné (E10:G12).Un jeu de Space Invaders dans Calc:Saisissez la formule =GAME("StarWars") dans une cellule.

Page 9: Fa q Open Office

- 9 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Comment convertir en masse les fichiers de la version 1.x vers la version 2.x ?

Auteurs : Silkyroad ,

Dans la version 1.x, les documents texte étaient créés au format .sxw et les classeurs au format .sxc.Ces formats sont toujours utilisables dans la version 2.x mais vous pouvez aussi les convertir aux formats .odt et .odsqui sont les nouveaux standards OpenDocument:Texte formaté (.odt) application/vnd.oasis.opendocument.textTableur (.ods) application/vnd.oasis.opendocument.spreadsheetPrésentation (.odp) application/vnd.oasis.opendocument.presentationDessin (.odg) application/vnd.oasis.opendocument.graphicsBase de données (.odb) application/vnd.oasis.opendocument.databasePour effectuer la conversion d'un ou plusieurs documents:Menu FichierAssistantsConvertisseur de documentsSélectionnez les types de documents à convertir:Cochez l'option "StarOffice", puis les "Documents texte" et "Classeurs".Cliquez sur le bouton "Suivant".Décochez ou cochez les options qui vous interessent dans la nouvelle fenêtre et paramétrez les différentes zonesd'information.Le champ "Import depuis:" correspond au dossier contenant les fichiers à convertir.Le champ "enregistrer dans:" correspond au dossier de destination pour les nouveaux fichiers convertis.Cliquez sur le bouton "Suivant".La fenêtre de paramétrage s'affiche une nouvelle fois si vous avez choisi de convertir plusieurs types de fichiers(Documents texte et Classeurs).Cliquez sur le bouton "Suivant".Cliquez sur le bouton "Convertir" pour lancer l'opération.Cliquer sur le bouton "Fermer" dans la boite de dialogue.Ouvrez le réperoire de destination que vous avez précédemment indiqué afin de visualiser le résultat de la conversion.Nota:Ce menu peut aussi être utilisé pour convertir les fichiers Microsoft Office.

Comment récupérer des informations sur les numéros decompilation, de version, ainsi qu'une liste des développeurs OOo ?

Auteurs : Silkyroad ,

Sélectionnez le menu Aide - À propos de OpenOffice.org.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 lettresS, D et T. Vous trouverez au début des informations sur les numéros de compilation et de version, ainsi qu'une listedes 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 d'OpenOffice utilisée:

Sub Main MsgBox "Version OOo: " & RecupereVersionOOOEnd Sub

Page 10: Fa q Open Office

- 10 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

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 OpenOffice.org.

Sub Main MsgBox GetSolarVersionEnd Sub

Page 11: Fa q Open Office

- 11 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc

Comment ouvrir un fichier Calc existant ?

Auteurs : Silkyroad ,

Sub ouvrirClasseur Dim Fichier As String Dim Wb As Object Dim Args() Fichier = ConvertToUrl("C:\Documents and Settings\michel\dossier\leTableur.ods") Wb = StarDesktop.loadComponentFromURL(Fichier,"_blank",0 ,Args() )End Sub

Comment créer un nouveau fichier Calc ?

Auteurs : Silkyroad ,

Sub CreerNouveauDocument_CalcDim oDesktop As Object , oDoc As Object Dim Fichier As StringDim Args() , Opt()

oDesktop = createUnoService("com.sun.star.frame.Desktop")

'Définit le type de document à créer '(Utilisez "private:factory/swriter" pour Writer)Fichier = "private:factory/scalc"

'CréationoDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args())''...''Enregistrement du fichieroDoc.storeAsURL ("file:///C:/monFichier.ods", Opt())''...''Fermeture du fichier 'True indique que l'on sauvegarde les modifications éventuelles oDoc.Close( True )End Sub

Comment Retrouver les équivalences de Couleur aux formats Hex , Long et RGB ?

Auteurs : Silkyroad ,

Téléchargez le tableur démo.Ce tableur permet de visualiser des couleurs en paramétrant les valeurs RGB (rouge ,vert ,bleu) dans une boite dedialogue.L'équivalence aux formats Hex et Long s'affiche automatiquement.Il est aussi possible de saisir une valeur Hex ou Long pour rechercher l'équivalence RGB.

Page 12: Fa q Open Office

- 12 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Un TextField permet de visualiser le résultat de la couleur paramétrée. Vous pouvez ensuite récupérer le code couleuren fonction de vos besoins, et dans le format qui vous intéresse (Hex ,Long ou RGB).

Comment utiliser les fonctions Calc par macro ?

Auteurs : Silkyroad ,

Sub UtiserFonctionsCalc_Par_Macro Dim Feuille As Object Dim oFonction as Object oFonction = _ CreateUnoService("com.sun.star.sheet.FunctionAccess")

'Définit la feuille contenant les données Feuille = ThisComponent.Sheets.getByName("Feuille1")

'--- Additionne les valeurs de la plage A1:A10 --- MsgBox oFonction.callFunction("SUM", _ Array(Feuille.getCellRangeByName("A1:A10")))

'--- Affiche la valeur maxi contenue dans la plage A1:A10 --- MsgBox oFonction.callFunction("MAX", _ Array(Feuille.getCellRangeByName("A1:A10"))) End Sub

Page 13: Fa q Open Office

- 13 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles

Comment compter le nombre de feuilles dans le classeur ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent 'Spécifie le tableur contenant la macroMsgBox oDoc.Sheets.Count

Comment vérifier si une feuille existe ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent

'Vérifie si la feuille nommée "Feuille2" existeIf oDoc.Sheets.hasByName("Feuille2") Then MsgBox "La feuille existe" Else MsgBox "La feuille n'existe pas"End If

Comment boucler sur toutes les feuilles du tableur ?

Auteurs : Silkyroad ,

Dim oDoc As ObjectDim i As Integer

oDoc=ThisComponent

For i = 1 to oDoc.Sheets.Count 'Remarque: l'index de la 1ere feuille = 0 MsgBox oDoc.Sheets(i-1).NameNext

Comment afficher le nom de la feuille active ?

Auteurs : Silkyroad ,

Dim oDoc As Object , Feuille As Object

oDoc=ThisComponent

Feuille = oDoc.getCurrentController().getActiveSheet()MsgBox Feuille.getName()

'Une autre solution

Page 14: Fa q Open Office

- 14 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox oDoc.CurrentController.ActiveSheet.getName

Comment supprimer une feuille ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent

'Supprime la feuille nommée "Feuille3"oDoc.GetSheets.RemoveByName("Feuille3")

Comment déplacer une feuille dans le tableur ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent

'Déplace la feuille nommée "Feuille2" à la finoDoc.getSheets.moveByName("Feuille2",oDoc.Sheets.Count)

Comment insérer une nouvelle feuille et la positionner dans le tableur ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent

'Ajoute une feuille, la nomme et place l'onglet en 3eme positionoDoc.GetSheets.insertNewByName("ma nouvelle feuille",2)

Comment renommer une feuille dans le tableur ?

Auteurs : Silkyroad ,

Dim oDoc As Object , Feuille As Object

oDoc=ThisComponent

'renomme la feuille nommée "Feuille1"Feuille = oDoc.getSheets.getByName("Feuille1")

Page 15: Fa q Open Office

- 15 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Feuille.Name = "le nouveau nom"

Comment dupliquer une feuille dans le tableur ?

Auteurs : Silkyroad ,

Dim oDoc As Object

oDoc=ThisComponent

'Duplique la "Feuille2" et la place entre première position oDoc.getSheets.copyByName("Feuille2", "Copie Feuille2", 0)'La syntaxe: copyByName(NomFeuille_A_Dupliquer, NomCopie, IndexPosition)

Comment masquer ou démasquer une feuille ?

Auteurs : Silkyroad ,

Dim oDoc As Object , Feuille As Object

oDoc=ThisComponent

'Masque la feuille nommée "Feuille2"Feuille = oDoc.getSheets.getByName("Feuille2")Feuille.IsVisible = False

'Pour réafficher la feuille'Feuille.IsVisible = True

Comment gérer la protection des feuilles par macro ?

Auteurs : Silkyroad ,

Tout d'abord, voici un exemple pour protéger une feuille.L'équivalent du Menu Outils / Protection / Feuille...

Sub ProtegerFeuille Dim Feuille As Object 'Définit la feuille à Protéger Feuille = ThisComponent.Sheets.GetByName("Feuille1") 'Affecte la protection Feuille.Protect("")

'Exemple avec mot de passe 'Feuille.Protect("MotDePasse") End Sub

Vous pouvez ensuite vérifier si la feuille est protégée.

Sub VerifierProtectionFeuille Dim Feuille As Object

Page 16: Fa q Open Office

- 16 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Définit la feuille à Protéger Feuille = ThisComponent.Sheets.GetByName("Feuille1") 'Renvoie True ou False MsgBox Feuille.IsProtectedEnd Sub

Et pour déprotéger la feuille.

Sub DeProtegerFeuille Dim Feuille As Object 'Définit la feuille à Protéger Feuille = ThisComponent.Sheets.GetByName("Feuille1") 'Déprotection Feuille.UnProtect("")

'Exemple pour Déprotection par mot de passe 'Feuille.UnProtect("MotDePasse") 'Nota1: 'La procédure ne renvoie pas de message d'erreur si le mot 'de passe spécifié est erroné.

'Nota2: '/!\ Les mots de passes sont sensibles à la casse /!\ End Sub

Comment créer un lien vers toutes cellules d'une feuille dans un classeur fermé ?

Auteurs : Silkyroad ,

La procédure crée une liaison vers les cellules d'une feuille dans un classeur fermé.Les données s'affichent dans la première feuille du classeur contenant cette macro.

Sub LiensCellules_SourceClasseurFerme Dim objFeuille As Object Dim sURL As String , strFeuille As String Dim Mde As Variant 'Chemin du classeur fermé sURL = ConvertToURL("C:\Documents and Settings\dossier\NomClasseur.ods") 'Nom de la feuille dans le classeur fermé. strFeuille = "NomFeuille"

Mde = com.sun.star.sheet.SheetLinkMode.NORMAL 'Spécifie la feuille qui va recevoir les données objFeuille = ThisComponent.Sheets(0) 'Création lien objFeuille.link(sURL, strFeuille , "" , "" , Mde) End Sub

Comment supprimer les liens externes entre feuilles ?

Auteurs : Silkyroad ,

Page 17: Fa q Open Office

- 17 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim oDoc As Object , Feuille As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Feuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) 'ou'Feuille.LinkMode = com.sun.star.sheet.SheetLinkMode.NONE

Comment retrouver la lettre d'une colonne à partir de son index ?

Auteurs : Silkyroad ,

Dim i As Integer

i = 5 '0 est l'index de la premiere colonne (A)MsgBox ThisComponent.Sheets(0).Columns( i ).getName

Comment insérer des informations dans les entêtes et pied de page ?

Auteurs : Silkyroad ,

Sub modificationEntete_Et_PiedDePage() Dim leStyle As Object, Entete As Object, piedPage As Object Dim oText As Object, Curseur As Object, leChamp As Object 'Définit la feuille active Feuille = ThisComponent.CurrentController.getActiveSheet leStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName(Feuille.PageStyle) 'Acces à l'entête de page Entete = leStyle.RightPageHeaderContent oText = Entete.LeftText oText.setString ("") 'Efface les données existante dans l'entête de page Set Curseur = oText.CreateTextCursor() With Curseur 'mise en forme .CharWeight = com.sun.star.awt.FontWeight.BOLD 'Gras .CharPosture = com.sun.star.awt.FontSlant.ITALIC .CharFontName = "Arial" .CharHeight = "12" 'taille caractères End With oText.insertString Curseur, "Les données à insérer", False '------------------------------------------------------- 'pour insérer le Numéro de page en pied de page piedPage = leStyle.RightPageFooterContent oText = piedPage.CenterText oText.setString ("") 'RAZ Set Curseur = oText.CreateTextCursor() 'Création d'un champ "PageNumber" leChamp = ThisComponent.createInstance("com.sun.star.text.TextField.PageNumber") oText.insertTextContent Curseur , leChamp , False '------------------------------------------------------- leStyle.RightPageHeaderContent = Entete leStyle.RightPageFooterContent = piedPage

Page 18: Fa q Open Office

- 18 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Pour voir le résultat dans le fichier Open Office:Menu EditerOption "Entête et pied de page"

Comment lire le contenu des entêtes et pieds de page ?

Auteurs : Silkyroad ,

Sub LireContenu_Entete_Et_PiedDePage Dim Feuille As Object , leStyle As Object Dim PiedPage As Object 'Définit la feuille active Feuille = ThisComponent.CurrentController.getActiveSheet leStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName(Feuille.PageStyle) Entete = leStyle.RightPageHeaderContent MsgBox Entete.LeftText.getString 'MsgBox Entete.RightText.getString 'MsgBox Entete.CenterText.getString

PiedPage = leStyle.RightPageFooterContent MsgBox PiedPage.LeftText.getString 'MsgBox PiedPage.RightText.getString 'MsgBox PiedPage.CenterText.getString End Sub

Comment trier les onglets par ordre alphabétique ?

Auteurs : Silkyroad ,

Sub TriOnglets Dim Feuilles As Object Dim i As Integer , j as integer Feuilles = ThisComponent.Sheets If Feuilles.Count > 1 Then For j = 0 To Feuilles.Count - 2 For i = 0 To Feuilles.Count - 2 If Feuilles.getByIndex( i ).Name > Feuilles.getByIndex( i + 1 ).Name Then _ Feuilles.moveByName( Feuilles.getByIndex( i + 1 ).Name , i )

Next i Next j End If End Sub

Cet autre exemple trie les feuilles à partir du 4eme onglet:La position des 3 premiers onglets reste inchangée.

Sub Test

Page 19: Fa q Open Office

- 19 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'trie les feuilles à partir du 4eme onglet '(L'index 3 correspond à 4eme feuille du classeur) TriFeuilles( 3 )End Sub

Sub TriFeuilles( NumFeuille As Integer ) Dim Feuilles As Object Dim i As Integer Dim Cible As Boolean Feuilles = ThisComponent.Sheets If Feuilles.Count > 1 Then Do

Cible = False For i = NumFeuille To Feuilles.Count - 2 If Feuilles.getByIndex( i ).Name > Feuilles.getByIndex( i + 1 ).Name Then Feuilles.moveByName( Feuilles.getByIndex( i + 1 ).Name , i ) Cible = True End If Next Loop Until Cible = False End If End Sub

Comment activer une feuille ?

Auteurs : Silkyroad ,

Cette macro permet d'afficher le 3eme onglet du classeur.

Dim Feuille As Object

'spécifie la 3eme feuille Feuille = ThisComponent.Sheets(2)ThisComponent.CurrentController.ActiveSheet = Feuille

Vous pouvez aussi sélectionner une ou plusieurs cellules lors de l'activation de la feuille:

Dim Feuille As Object

'Spécifie la 2eme feuille Feuille = ThisComponent.Sheets(1)'Active la feuille et sélectionne la cellule A10ThisComponent.CurrentController.Select( Feuille.getCellRangeByName("A10") )

Comment lister le nom des onglets en multisélection ?

Auteurs : Silkyroad ,

Cet exemple permet de récupérer la liste de toutes les feuilles sélectionnées dans le classeur:

Sub NomFeuillesMultiplesSelectionnees()

Page 20: Fa q Open Office

- 20 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim OngletsSelectionnes As String Dim TableauOnglets() As String Dim i As Integer Dim Cible As Object Dim Collect As New Collection Dim NomFeuille As String Cible = ThisComponent.CurrentController

If Cible.Selection.supportsService("com.sun.star.sheet.SheetCellRanges") Then 'S'il y a plusieurs feuilles de sélectionnées. OngletsSelectionnes = ThisComponent.CurrentSelection.RangeAddressesAsString TableauOnglets() = Split( OngletsSelectionnes , ";" )

On Error Resume Next For i = 0 To UBound (TableauOnglets()) NomFeuille = Left( TableauOnglets( i ) , Instr( 1 , TableauOnglets( i ) , "." ) - 1 ) 'Récupère le nom des feuilles sans doublon Collect.Add NomFeuille , Cstr(NomFeuille) Next i On Error GoTo 0

For i = 1 To Collect.Count MsgBox Collect(i) Next Else 'S'il y a une seule feuille de sélectionnée. MsgBox Cible.ActiveSheet.getName End IfEnd Sub

Comment identifier le changement de feuille dans un classeur ?

Auteurs : Silkyroad ,

Cette macro identifie le basculement entre les différents onglets du classeur.Lancez uniquement la macro lancement_GestionEvenement_SheetChange.

Global oListener As Object Global oClasseur As Object

Sub lancement_GestionEvenement_SheetChange oClasseur = ThisComponent oListener = createUnoListener( "Classeur_" , "com.sun.star.beans.XPropertyChangeListener" ) oClasseur.CurrentController.addPropertyChangeListener( "ActiveSheet" , oListener ) End Sub

Sub Classeur_PropertyChange(oEvent) MsgBox oEvent.Source.ActiveSheet.NameEnd Sub

Sub Arret_GestionEvenement_SheetChange oClasseur.CurrentController.removePropertyChangeListener( "ActiveSheet" , oListener )

Page 21: Fa q Open Office

- 21 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment copier la feuille active dans un nouveau classeur ?

Auteurs : Silkyroad ,

Sub CopieFeuilleActive_NouveauClasseur Dim oFrame As Object Dim oDisp As Object Dim Args(2) As New com.sun.star.beans.PropertyValue

oFrame = ThisComponent.CurrentController.Frame oDisp = createUnoService("com.sun.star.frame.DispatchHelper")

Args(0).Name = "DocName" Args(0).Value = "" Args(1).Name = "Index" Args(1).Value = 65535 Args(2).Name = "Copy" Args(2).Value = True

oDisp.ExecuteDispatch(oFrame, ".uno:Move", "", 0, Args()) End Sub

Page 22: Fa q Open Office

- 22 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules

Comment spécifier une cellule par macro ?

Auteurs : Silkyroad ,

Dim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

'-------'Identification par l'adresse de la cellule (A5)Cellule = Feuille.getCellRangeByName("A5")

'------'Identification par la position dans la feuille'Attention: le format est getCellByPosition( NumeroColonne , NumeroLigne )'Exemple cellule A5:Cellule = Feuille.getCellByPosition( 0 , 4 )

Comment identifier la cellule active ?

Auteurs : Silkyroad ,

Sub IdentifierCelluleActive Dim CelluleActive As Object CelluleActive = ThisComponent.getCurrentSelection MsgBox "Index colonne: " & CelluleActive.CellAddress.Column MsgBox "Index ligne: " & CelluleActive.CellAddress.Row MsgBox "Index feuille: " & CelluleActive.CellAddress.SheetEnd Sub

Comment vérifier le type de données contenu dans les cellules ?

Auteurs : Silkyroad ,

Une cellule peut contenir:une valeur numériquedu texteune formuleou être vide.La lecture d'une cellule est effectuée de façon différente en fonction qu'il s'agit de texte ou de valeur numérique. Il doncimportant d'identifier le type de contenu dans la cellule.Si vous écrivez Cellule.Value alors que la cellule est vide, la macro renvoie 0.Si vous écrivez Cellule.Value alors que la cellule contient du texte, la macro renvoie 0.Les formules peuvent contenir du texte ou des valeurs numériques:Si vous écrivez Cellule.Value alors que le résultat de la formule affiche du texte, la macro renvoie 0.Les dates:Si vous écrivez Cellule.Value, la macro renvoie une valeur numérique (Long).Si vous écrivez Cellule.getString, la macro renvoie la date au format texte.

Sub ControlerContenuCellule

Page 23: Fa q Open Office

- 23 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("A5")

Select Case Cellule.Type Case com.sun.star.table.CellContentType.VALUE MsgBox "Numérique:" & Chr(13) & Cellule.Value

Case com.sun.star.table.CellContentType.TEXT MsgBox "Texte:" & Chr(13) & Cellule.getString Case com.sun.star.table.CellContentType.FORMULA MsgBox "Formule"

Case com.sun.star.table.CellContentType.EMPTY Msgbox "Vide"End Select

End Sub

Comment écrire dans une cellule ?

Auteurs : Silkyroad ,

Sub EcrireDansCelluleDim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

'Ecrit valeur numériqueCellule = Feuille.getCellRangeByName("A5")Cellule.Value = 12345

Cellule = Feuille.getCellRangeByName("A6")Cellule.setValue(12345)'----

'Ecrit du texteCellule = Feuille.getCellRangeByName("A7")Cellule.setString("essai")

Cellule = Feuille.getCellRangeByName("A8")Cellule.String = "essai"'----

'Ecrit une DateCellule = Feuille.getCellRangeByName("A9")With Cellule .Value = Now 'Insère la date du jour .NumberFormat = 75 'D'autres valeurs pour NumberFormat: '34 mois '35 trimestre '40 heure '50 date et heure '79 date en toutes lettres '80 date type 15 sept. 2006 '81 date type 15 Juin 2006

Page 24: Fa q Open Office

- 24 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'85 numéro de semaine End With

Cellule = Feuille.getCellRangeByName("A10")Cellule.Value = DateValue("26/05/2006")

Cellule = Feuille.getCellRangeByName("A11")Cellule.Value = CDate("26/05/2006")'----

End Sub

Comment ajouter une formule par macro ?

Auteurs : Silkyroad ,

Cette procédure permet d'ajouter une formule dynamiquement par macro.

Sub InsererFormuleParMacroDim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("B1")'Ecrit la formule en utilisant le langage de la version OOo installéeCellule.FormulaLocal = "=SOMME(A1:A10)"

Cellule = Feuille.getCellRangeByName("B2")'Ecrit la formule en utilisant l'anglaisCellule.Formula = "=SUM(A1:A10)"

'---'Lit la formule contenue dans la cellule B2MsgBox Cellule.Formula & Chr(13) & Cellule.FormulaLocalEnd Sub

Comment supprimer le contenu d'un cellule ?

Auteurs : Silkyroad ,

Sub SupprimeContenuCellule Dim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1") Cellule = Feuille.getCellByPosition( 0 , 4 )

Cellule.clearContents(com.sun.star.sheet.CellFlags.VALUE +_ com.sun.star.sheet.CellFlags.DATETIME +com.sun.star.sheet.CellFlags.STRING +_ com.sun.star.sheet.CellFlags.ANNOTATION +com.sun.star.sheet.CellFlags.FORMULA)

'Description du contenu supprimé:'-------------------------------'com.sun.star.sheet.CellFlags.VALUE: Valeurs numériques'com.sun.star.sheet.CellFlags.DATETIME: Dates et Heures'com.sun.star.sheet.CellFlags.STRING: Texte

Page 25: Fa q Open Office

- 25 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'com.sun.star.sheet.CellFlags.ANNOTATION: Annotations(Commentaires)'com.sun.star.sheet.CellFlags.FORMULA: FormulesEnd Sub

Astuce:Lorsque vous supprimez le contenu des cellules manuellement (en utilisant la touche "SUPPR"), la boîte de dialogue"Supprimer du contenu" s'affiche automatiquement et vous devez la valider en cliquant sur le bouton "OK".Pour supprimer le contenu des cellules sans afficher cette fenêtre, utilisez la touche clavier "RETOUR" (symboliséepar une flèche).

Comment compter le nombre de données différentes dans une plage de cellules ?

Auteurs : Silkyroad ,

Cette fonction permet de compter les éléments différents dans une plage de cellules.

'NomFeuille: spécifie la feuille contenant la plage à tester.

'Définition de la plage à tester: ' ColDebut: Numéro de la 1ere colonne dans la plage à contrôler ' ColFin: Numéro de la derniere colonne dans la plage à contrôler ' LigDebut: Numéro de la 1ere ligne dans la plage à contrôler ' LigFin: Numéro de la derniere ligne dans la plage à contrôler

'Blancs: Compte les cellules vides si l'argument = true

Function NbDiff_OOo(NomFeuille As String, ColDebut As Integer, _ ColFin As Integer, LigDebut As Integer, LigFin As Integer, Blancs As Boolean) As Integer

Dim Ws As Object, Cellule As Object Dim Resultat As Variant Dim Tableau() Dim J As Integer, K As Integer

Ws = ThisComponent.Sheets(NomFeuille) NbDiff_OOo = 0 K = 1

For X = ColDebut - 1 To Colfin - 1 For Y = LigDebut - 1 To LigFin - 1 Verif = False Cellule = Ws.getCellByposition( X , Y ) Resultat = Cellule.getString If Blancs <> False Or Cellule.Type <> com.sun.star.table.CellContentType.EMPTY Then If UBound( Tableau ) = -1 Then ReDim Preserve Tableau(1) Tableau(1) = Resultat Else For J = LBound( Tableau ) To UBound( Tableau ) If Tableau( J ) = Resultat Then Verif = True Exit For End If Next J If Verif = False Then K = K + 1 ReDim Preserve Tableau(K) Tableau(K) = Resultat

Page 26: Fa q Open Office

- 26 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End If End If End If Next Y Next X

NbDiff_OOo = UBound( Tableau ) End Function

La procédure pour appeler la fonction:

Sub Test'Exemple: Plage A1:A10 dans le Feuille1 MsgBox NbDiff_OOo("Feuille1" ,1 ,1 ,1 ,10 ,True ) End Sub

Vous pouvez aussi appeler la fonction en insérant cette formule dans une cellule:

=NbDiff_OOo("Feuille1";1;1;1;10;Vrai)

Comment empêcher la mise en majuscule de la premièrelettre de chaque phrase saisie dans les cellules ?

Auteurs : Silkyroad ,

Vous devez modifier les paramètres d'autocorrection:Utilisez le menu OutilsAutoCorrectionSélectionnez l'onglet "Options" dans la boîte de dialogue.Décochez la ligne "Majuscule en début de phrase".Cliquez sur le bouton "OK" pour valider.

Comment identifier la plage de cellules utilisée dans une feuille ?

Auteurs : Silkyroad ,

Sub PlageUtilisee Dim Feuille As Object, Curseur As Object Dim Cible As Object 'Spécifie la 2eme feuille du classeur Feuille = ThisComponent.Sheets.getByIndex(1)

Curseur = Feuille.createCursor() Curseur.gotoStartOfUsedArea(False) Curseur.gotoEndOfUsedArea(True) Cible = Curseur.getRangeAddress() MsgBox "Première ligne: " & Cible.StartRow + 1 & CHR(10) & _ "Première colonne: " & Cible.StartColumn + 1 & CHR(10) & _ "Dernière ligne: " & Cible.EndRow + 1 & CHR(10) & _ "Dernière colonne: " & Cible.EndColumn + 1

Page 27: Fa q Open Office

- 27 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment retrouver le numéro de la dernière ligne non vide ?

Auteurs : Silkyroad ,

Cette macro récupère le numéro de la dernière ligne non vide, dans la première feuille du classeur:

Sub DerniereLigneNonVideDim oCurseur As Object

'Définit la 1ere feuilleoCurseur = ThisComponent.Sheets(0).createCursor oCurseur.gotoEndOfUsedArea( False )

'L'index de la première ligne = 0 MsgBox oCurseur.RangeAddress.EndRowEnd Sub

Comment insérer un lien hypertexte dans une cellule ?

Auteurs : Silkyroad ,

Sub InsertionLienHyperTexteCellule Dim Cellule As Object , ChampURL As Object Dim oTexte As Object

'Spécifie la cellule A1 dans la 1ere Feuille Cellule = ThisComponent.Sheets(0).GetCellByPosition(0,0)

ChampURL = _ ThisComponent.createInstance("com.sun.star.text.TextField.URL")

'Définit le texte qui va s'afficher dans la cellule ChampURL.Representation = "La Description" 'Définit le lien ChampURL.URL = "http://www.developpez.com" oTexte = Cellule.getText("") 'Insertion du lien oTexte.insertTextContent(oTexte.createTextCursor(), ChampURL, False) End Sub

Comment extraire les liens hypertextes contenus dans une cellule ?

Auteurs : Silkyroad ,

Sub ExtraireLiensCellule 'Nota: 'Une même cellule peut contenir plusieurs liens. Dim Cellule As Object , oTextfields As Object Dim i As Integer 'Spécifie la cellule A1 dans la 1ere Feuille Cellule = ThisComponent.Sheets(0).GetCellByPosition(0,0)

Page 28: Fa q Open Office

- 28 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oTextfields = Cellule.TextFields 'Vérifie s'il y a des liens dans la cellule If oTextfields.Count = 0 Then MsgBox "Il n'y a pas de lien dans la cellule." Exit Sub End If 'Boucle sur les liens contenus dans la cellule For i = 0 To oTextfields.Count - 1 'URL= le lien 'Representation = la description MsgBox ConvertFromURL(oTextFields.getByIndex( i ).Url) & _ Chr(10) & oTextFields.getByIndex( i ).Representation Next i

End Sub

Comment modifier la description d'un lien hypertexte ?

Auteurs : Silkyroad ,

La macro modifie la description du premier lien hypertexte contenu dans la cellule A1.Nota:Une cellule peut contenir plusieurs liens.

Sub ModifierDescriptionLienCellule Dim Cellule As Object , oTextfields As Object 'Spécifie la cellule A1 dans la 1ere Feuille Cellule = ThisComponent.Sheets(0).GetCellByPosition(0,0) oTextfields = Cellule.TextFields 'Vérifie s'il y a des liens dans la cellule If oTextfields.Count = 0 Then MsgBox "Il n'y a pas de lien dans la cellule." Exit Sub End If 'Modifie la description. 'oTextFields(0) correspond au 1er lien dans la cellule. oTextFields(0).Representation = "La nouvelle description"

End Sub

Comment sélectionner une cellule et y appliquer un collage du presse papier ?

Auteurs : Silkyroad ,

Sub SelectionCellule_Puis_Collage Dim oCC As Object , Cellule As Object Dim Args() As New com.sun.star.beans.PropertyValue

'Selection cellule C2 oCC = ThisComponent.CurrentController Cellule = oCC.ActiveSheet.getCellRangeByName("C2") oCC.Select(Cellule)

Page 29: Fa q Open Office

- 29 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Collage Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dispatcher.executeDispatch(oCC.Frame, ".uno:Paste", "", 0, Args)End Sub

Comment boucler sur une plage de cellules ?

Auteurs : Silkyroad ,

Sub BouclePlageCellules Dim Feuille As Object, PlageCellules As Object Dim Plages As Object, oEnum As Object, Cellule As Object

'Définit une feuille nommée "Feuille1" dans le classeur Feuille = ThisComponent.Sheets.getByName("Feuille1") 'Définit la plage de cellules PlageCellules = Feuille.getCellRangeByName("A1:A5")

Plages = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges") Plages.insertByName("", PlageCellules) oEnum = Plages.Cells.CreateEnumeration

'Boucle sur la plage While oEnum.hasMoreElements 'Nota: 'Ne renvoie rien si la cellule est vide Cellule = oEnum.NextElement MsgBox Cellule.String Wend End Sub

Comment fusionner une plage de cellules ?

Auteurs : Silkyroad ,

Sub FusionnerPlageCellules Dim Feuille As Object Dim Plage As Object Feuille = ThisComponent.Sheets.getByIndex(0) Plage = Feuille.getCellRangeByPosition( 3 , 9 , 6 , 9 ) 'D10:G10 Plage.Merge( True ) Feuille.getCellByPosition( 3 ,9 ).setString("test")End Sub

Comment identifier les doublons dans une plage de cellules ?

Auteurs : Silkyroad ,

Cet exemple permet de visualiser les doublons contenus dans une plage de cellules, en utilisant la fonction de Formatconditionnel.Le format conditionnel permet d'appliquer une mise en forme spécifique lorsqu'une condition particulière est remplie.Cette fonction permet ainsi de mieux visualiser certaines données mais aussi de les masquer (en appliquant par exemple

Page 30: Fa q Open Office

- 30 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

la même couleur au texte et au fond de la cellule). Vous pouvez accéder à cette fonction dans le Menu Format / Formatconditionnel.Vous pouvez ajouter des "styles de cellules" en plus de ceux proposés par défaut, à partir du menu Format / Styles etFormatage (ou de la touche raccourci F11).Si par exemple vous souhaitez identifier les doublons dans la plage A1:A20,* Sélectionnez la cellule A1.* Menu Format* Format conditionnel* Condition1, sélectionnez l'option "La formule est:"* Indiquez dans le champ conditionnel:

NB.SI($A$1:$A$20;A1)>1

* Précisez le style de cellule.* Cliquez sur le bouton OK pour valider.* Appliquez ensuite le même format dans les autres cellules de la plage à tester.

Comment transférer le contenu d'une plage de cellules vers un nouveau document Writer ?

Auteurs : Silkyroad ,

Sub Transfert_PlageCellulesCalc_Vers_Writer Dim oDesktop As Object , oDoc As Object , oText As Object , oCursor As Object Dim Fichier As String , Resultat As String Dim Args() , Opt() Dim Feuille As Object, PlageCellules As Object Dim Plages As Object, oEnum As Object, Cellule As Object

oDesktop = createUnoService("com.sun.star.frame.Desktop") 'Définit le type de document à créer Fichier = "private:factory/swriter" 'Création du nouveau fichier Writer oDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args())

'Définit une feuille nommée "Feuille1" dans le classeur Feuille = ThisComponent.Sheets.getByName("Feuille1") 'Définit la plage de cellules PlageCellules = Feuille.getCellRangeByName("A1:A5")

Plages = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges") Plages.insertByName("", PlageCellules) oEnum = Plages.Cells.CreateEnumeration

'Boucle sur la plage de cellules à copier While oEnum.hasMoreElements 'Nota: 'Ne renvoie rien si la cellule est vide Cellule = oEnum.NextElement Resultat = Resultat & Cellule.String & Chr(10) Wend

oText = oDoc.CurrentController.ViewCursor.Text oCursor = oText.createTextCursor 'Insertion des données dans le document Writer oText.insertString oCursor, Resultat , False

Page 31: Fa q Open Office

- 31 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Enregistrement du fichier 'oDoc.StoreAsURL ( ConvertToURL("C:\monFichier.odt") , Opt()) 'Fermeture du fichier 'True indique que l'on sauvegarde les modifications éventuelles 'oDoc.Close( True )End Sub

Comment adapter la largeur d'une colonne au contenu des cellules ?

Auteurs : Silkyroad ,

La macro ci dessous ajuste la largeur de la deuxième colonne au contenu des cellules:

ThisComponent.Sheets(0).Columns(1).OptimalWidth = True

Comment identifier l'évènement sélection de cellule dans la feuille ?

Auteurs : Silkyroad ,

La procédure détecte la sélection de cellules dans la feuille de calcul.Si la sélection est effectuée dans la première feuille et dans les colonnes F à J, la valeur 1 s'inscrit dans la cellule. Lecontenu est effacé si la cellule contient la valeur 1.Vous devez simplement lancer la macro Add_SelectionChangeListener.

'--- Source --- 'http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOobbs2%2F1 '--------------

Global oSelectionChangeListener As Object Public oController As Object

'Lance le gestionnaire d'évènements Sub Add_SelectionChangeListener() oController = ThisComponent.CurrentController 'Objet pour gérer l'événement SelectionChange oSelectionChangeListener = CreateUnoListener( _ "SelectionChange_", "com.sun.star.view.XSelectionChangeListener" ) 'Attribue l'objet évènement au classeur oController.addSelectionChangeListener( oSelectionChangeListener ) End Sub

Sub Remove_SelectionChangeListener() oController = ThisComponent.CurrentController oController.removeSelectionChangeListener( oSelectionChangeListener ) End Sub

Sub SelectionChange_selectionChanged( evt ) Dim obj As Object , Cellule As Object Dim tc As Integer , NumFeuille As Integer Dim tr As Long obj = evt.Source.Selection

Page 32: Fa q Open Office

- 32 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

If obj.ImplementationName = "ScCellObj" Then tr = obj.CellAddress.Row tc = obj.CellAddress.Column NumFeuille = evt.source.Selection.RangeAddress.Sheet

'Vérifie si la sélection est effectuée dans la 1ere feuille du classeur If NumFeuille = 0 Then 'Vérifie si la sélection est effectuée dans les colonnes F à J If tc >= 5 And tc <= 9 Then Cellule = ThisComponent.getSheets.getByIndex( NumFeuille ). _ getCellByPosition( tc , tr ) If Cellule.getString = "" Then Cellule.setValue(1) Else Cellule.setString("") End If ThisComponent.CurrentController.select( obj.SpreadSheet.getCellByPosition( 0, tr + 1 ) ) oFrame = ThisComponent.CurrentController.getFrame() executeCommand( ".uno:Deselect", oFrame ) End If End If End If End Sub

Sub SelectionChange_disposing( ) End Sub

Sub executeCommand( sCommand As String, oFrame As Object ) Dim aArr(0) As New com.sun.star.beans.PropertyValue Dim oDispatch As Object oDispatch = CreateUnoService( "com.sun.star.frame.DispatchHelper") oDispatch.executeDispatch( oFrame, sCommand, "", 0, aArr()) End Sub

Comment identifier la modification du contenu dans une cellule ?

Auteurs : Silkyroad ,

La procédure détecte la modification du contenu de la cellule B1, dans la première feuille du classeur.Le fond de la cellule modifiée est colorié en bleu. La modification suivante enlève la couleur de fond. Vous devezsimplement lancer la macro lancement_GestionEvenement.

Global oListener As Object Global Cellule As Object

Sub lancement_GestionEvenement 'Objet pour gérer l'événement Change dans la cellule B1, dans la 1ere feuille Cellule = ThisComponent.Sheets(0).GetCellRangeByName("B1") oListener = CreateUnoListener( "Classeur_" , "com.sun.star.util.XModifyListener" ) Cellule.addmodifylistener(olistener) End Sub

Page 33: Fa q Open Office

- 33 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sub Classeur_Modified(oEvent) If oEvent.Source.CellBackColor = RGB(255,255,255) Then oEvent.Source.CellBackColor = RGB(0,0,255) 'Bleu Else oEvent.Source.CellBackColor = RGB(255,255,255) 'Blanc End If End Sub

Sub Classeur_Disposing(oEvent) End Sub

Page 34: Fa q Open Office

- 34 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules

Page 35: Fa q Open Office

- 35 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Texte

Comment utiliser les fonctions de la catégorie Texte ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 36: Fa q Open Office

- 36 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Statistique

Comment utiliser les fonctions de la catégorie Statistique ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 37: Fa q Open Office

- 37 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Mathématique

Comment utiliser les fonctions de la catégorie Mathématique ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 38: Fa q Open Office

- 38 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Add-In

Comment utiliser les fonctions de la catégorie Add-In ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 39: Fa q Open Office

- 39 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Les Dates et les Heures

Comment utiliser les fonctions de la catégorie Dates et Heures ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 40: Fa q Open Office

- 40 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Classeur et Matrice

Comment utiliser les fonctions des catégories Classeur et Matrice ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 41: Fa q Open Office

- 41 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Information

Comment utiliser les fonctions de la catégorie Informations ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 42: Fa q Open Office

- 42 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Logique

Comment utiliser les fonctions de la catégorie Logique ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 43: Fa q Open Office

- 43 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formules > Divers

Comment utiliser les fonctions diverses ?

Auteurs : Silkyroad ,

Accédez aux exemples d'utilisation

Page 44: Fa q Open Office

- 44 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les annotations

Comment insérer une annotation dans une cellule ?

Auteurs : Silkyroad ,

Première méthode.

Sub ajoutCommentaireCellule_V01'équivalent des commentaires dans Excel''********************************'sans macro: 'sélectionnez une cellule 'Menu Insertion 'notes 'saisir le texte'********************************

Dim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("A1")Cellule.Annotation.String = "Le commentaire"''Remarque:'si une annotation existe déja dans la cellule, les anciennes infos seront écraséesEnd Sub

Deuxième méthode.

Sub ajoutCommentaireCellule_V02Dim oDoc As Object , Feuille As ObjectDim Cellule As ObjectDim Nte As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")Cellule = Feuille.getCellRangeByName("A1")

'Crée une nouvelle annotationFeuille.Annotations.insertNew(Cellule.CellAddress, "Ceci est un test de commentaire.")Nte = Cellule.Annotation.AnnotationShape

'Spécifie que l'annotation s'adapte à la taille du texteNte.TextAutoGrowWidth = TrueNte.TextAutoGrowHeight = True

Nte.FillStyle = com.sun.star.drawing.FillStyle.SOLID'Applique une couleur dans l'annotationNte.FillColor = RGB( 255,225,225 )

Page 45: Fa q Open Office

- 45 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment modifier une annotation ?

Auteurs : Silkyroad ,

Cet exemple ajoute des infos dans un commentaire existant à la suite des anciennes données.

Sub ajoutDansCommentaireExistantDim oDoc As Object , Feuille As ObjectDim Cellule As ObjectDim leTexteExistant As String

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("A1")'Récupération des informations existantes dans le commentaireleTexteExistant = Cellule.Annotation.getString

Cellule.Annotation.String = _ leTexteExistant & chr(13) & "Mon nouveau commentaire"

End Sub

Comment supprimer une annotation ?

Auteurs : Silkyroad ,

Sub SupprimeCommentaire'-------------------------------------'sans macro: 'sélectionnez la cellule 'Menu Insertion 'notes 'Supprimez le contenu de l'annotation'-------------------------------------

Dim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("A1")Cellule.clearContents(com.sun.star.sheet.CellFlags.ANNOTATION)

End Sub

Comment boucler sur l'ensemble des annotations dans la feuille ?

Auteurs : Silkyroad ,

Sub boucleSurAnnotationsDim I As IntegerDim Resultat As StringDim Feuille As Object , oDoc As Object

Page 46: Fa q Open Office

- 46 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

'Boucle sur les annotations de la FeuilleFor I = 0 To Feuille.Annotations.Count-1'Renvoie: 'Contenu de l'annotation 'Numero de la colonne 'Numero de la ligne 'Auteur 'Est visible 'Date de création

Resultat = Feuille.Annotations.getByIndex(i).getString & Chr(13) & Chr(13) & _ "Colonne: " & Feuille.Annotations.getByIndex(i).Position.Column + 1 & Chr(13) & _ "Ligne: " & Feuille.Annotations.getByIndex(i).Position.Row + 1 & Chr(13) & _ "Auteur: " & Feuille.Annotations.getByIndex(i).Author & Chr(13) & _ "Visible: " & Feuille.Annotations.getByIndex(i).IsVisible & Chr(13) & _ "Date: " & Feuille.Annotations.getByIndex(i).Date MsgBox ResultatNext i

End Sub

Page 47: Fa q Open Office

- 47 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les formats

Comment appliquer une mise en forme dans une cellule ?

Auteurs : Silkyroad ,

Sub MiseEnFormeCelluleDim oDoc As Object , Feuille As ObjectDim Cellule As Object

oDoc = ThisComponentFeuille = oDoc.getSheets.getByName("Feuille1")

Cellule = Feuille.getCellRangeByName("A5")

With Cellule .setString( " mon texte " ) 'insére du texte dans la cellule .CellBackColor = RGB(0,0,0) 'indique la couleur de fond .paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER 'alignement centré .RotateAngle = 9000 'Rotation 9000 = 90° .CharColor = RGB(255,0,0) 'couleur des caractères .CharHeight = 16 'Taille catactères .CharWeight = com.sun.star.awt.FontWeight.BOLD 'gras .CharPosture = com.sun.star.awt.FontSlant.ITALIC 'italique .CharFontName = "Arial" 'Font .CharUnderline = com.sun.star.awt.FontUnderline.DOUBLE 'souligné doubleEnd With

'Ajuste la hauteur de la 5eme ligne au contenu des cellules. Feuille.Rows(4).OptimalHeight = True

End Sub

Comment compter le nombre de cellules contenant une couleur de fond spécifique?

Auteurs : Silkyroad ,

Cette fonction compte le nombre de cellules dans la plage B3:B10 dont la couleur de fond est identique à la couleurde fond de la cellule A1.

'--- Compte le nombre de couleurs identiques à une cellule de base. ---

' CellBase est la cellule qui contient la couleur de référence.

' Définition de la plage à tester: ' ColDebut: Numero de la 1ere colonne dans la plage à contrôler ' ColFin: Numero de la derniere colonne dans la plage à contrôler ' LigDebut: Numero de la 1ere ligne dans la plage à contrôler ' LigFin: Numero de la derniere ligne dans la plage à contrôler Function NbCouleursCible(NomFeuille As String, CellBase As String, _ ColDebut As Integer, ColFin As Integer, LigDebut As Integer, _ LigFin As Integer) As Integer

Dim MaCoul As Double Dim X As Integer, Y As Integer , Resultat As Integer Dim Ws As Object, Cellule As Object

Ws = ThisComponent.Sheets(NomFeuille)

' Récupère la valeur de la couleur dans la cellule de base. MaCoul = Ws.getCellRangeByName(CellBase).CellBackColor

Page 48: Fa q Open Office

- 48 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

NbCouleursCible = 0

For X = ColDebut - 1 To Colfin - 1 For Y = LigDebut - 1 To LigFin - 1 Cellule = Ws.getCellByposition( X , Y ) If Cellule.CellBackColor = MaCoul Then Resultat = Resultat + 1 Next Y Next X

NbCouleursCible = Resultat End Function

Sub Test ' Compte le nombre de cellules dans la plage B3:B10 dont la ' couleur est identique à la cellule A1. MsgBox NbCouleursCible("Feuille1" ,"A1" ,2 ,2 ,3 ,10 ) End Sub

Il est aussi possible d'insérer cette formule dans une cellule.

=NBCOULEURSCIBLE("Feuille1";"A1";2;2;3;10)

Comment ajouter automatiquement un texte personnalisé à la suite de la valeur saisie dans une cellule ?

Auteurs : Silkyroad ,

Il est possible d'afficher automatiquement un texte à la suite d'une valeur saisie dans une cellule:Par exemple une unité de mesure ou une description complémentaire...Sélectionnez la cellule ou la plage de cellules.Menu FormatCellulesOnglet "Nombres"Sélectionnez l'option "Défini par l'utilisateur" dans la liste "Catégorie".Saisissez par exemple 0,00" Mon unité de mesure" dans le champ "Description de format".Cliquez sur le bouton "OK" pour valider.Désormais le texte Mon unité de mesure est affiché à la suite des valeurs saisies dans la cellule.Pensez à réadapter la largeur des colonnes si ### s'affiche dans la cellule.

Comment transformer une valeur décimale en fraction ?

Auteurs : Silkyroad ,

Par exemple, pour que 5,5 donne 11/2Appliquez à la cellule le format "Défini par l'utilisateur": ???#/???#

Comment masquer la donnée saisie dans une cellule ?

Auteurs : Silkyroad ,

Appliquez à la cellule le format "Défini par l'utilisateur": ;;; (3 points virgules).

Page 49: Fa q Open Office

- 49 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Comment ne pas faire apparaitre la valeur Zéro (0) dans une cellule ?

Auteurs : Silkyroad ,

Appliquez à la cellule le format "Défini par l'utilisateur": [=0]"";Standard

Page 50: Fa q Open Office

- 50 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les cellules > Les cellules et plages nommées

Comment ajouter un nom dans le classeur ?

Auteurs : Silkyroad ,

Un nom est une chaîne de caractères (sans espace) qui représente une cellule ou une plage de cellules. Utilisez des nomslorsque vous avez besoin de faire références à des plages complexes ou pour une meilleure compréhension de votreprojet.Par exemple, vous pouvez remplacer une formule classique:=SOMME(A1:A10)*B1par=SOMME(A1:A10)*CoefficientCoefficient étant le nom préalablement donné à la cellule B1.Pour ajouter un nom manuellement,utilisez le menu InsertionNomsDéfinirComplètez le champ "Nom"Le champ "Assigné à" permet de préciser la cellule ou la plage à nommerCliquez sur le bouton "Ajouter"puis sur le bouton OK pour valider.Pour ajouter un nom par macro:

Sub AjoutNom Dim oNom As Object Dim oCellAdress As New com.sun.star.table.CellAddress '-------------- 'La procédure renvoie une erreur si le nom existe déja 'dans le classeur. '-------------- 'Premier exemple oNom = ThisComponent.NamedRanges 'Nomme la plage B2:C5 dans la feuille nommée Feuille1 oNom.addNewByName( "TestNom1" , "$Feuille1.$B2:$C5" , oCellAdress , 0 )

'Deuxième exemple 'Nomme la cellule A10 dans la feuille nommée Feuille2 oNom.addNewByName( "TestNom2", "$Feuille2.$A10:$A10" , createUnoStruct( "com.sun.star.table.CellAddress" ) , 0 ) End Sub

Comment vérifier l'existence d'un nom dans le classeur ?

Auteurs : Silkyroad ,

Sub VerifierExistenceNom Dim LeNom As String LeNom = "NomTest" If ThisComponent.NamedRanges.HasByName( LeNom ) Then MsgBox "Il existe un Nom '" & LeNom & "' dans le classeur." Else MsgBox "Le Nom '" & LeNom & "' n'existe pas dans le classeur." End If

Page 51: Fa q Open Office

- 51 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment lister les cellules et plages nommées dans le classeur ?

Auteurs : Silkyroad ,

Sub ListeNoms Dim i As Integer Dim Tableau() Tableau = ThisComponent.NamedRanges.ElementNames For i = LBound (Tableau) To UBound (Tableau) MsgBox Tableau(i) Next i End sub

Comment récupérer des informations sur une cellule ou plage nommée ?

Auteurs : Silkyroad ,

Sub RecupererInformationsNom Dim Resultat As String Dim oNom As Object Dim Plages As Object, oEnum As Object, Cellule As Object 'Définit le premier nom dans le classeur oNom = ThisComponent.NamedRanges.getByIndex(0) Resultat = "Nom: " & oNom.Name & CHR(10) & _ "Référence: " & oNom.Content & CHR(10) & _ "Index feuille: " & oNom.ReferencePosition.Sheet & CHR(10) & _ "Nom feuille: " & oNom.ReferredCells.SpreadSheet.Name & CHR(10) & _ "Première colonne: " & oNom.ReferredCells.RangeAddress.StartColumn + 1 & CHR(10) & _ "Dernière colonne: " & oNom.ReferredCells.RangeAddress.EndColumn + 1 & CHR(10) & _ "Première ligne" & oNom.ReferredCells.RangeAddress.StartRow + 1 & CHR(10) & _ "Dernière ligne: " & oNom.ReferredCells.RangeAddress.EndRow + 1

MsgBox Resultat

'--- Boucle sur les cellules du nom --- ' 'Nota: Ne renvoie rien si les cellules sont vides. ' Plages = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges") Plages.insertByName("", oNom.ReferredCells) oEnum = Plages.Cells.CreateEnumeration

While oEnum.hasMoreElements Cellule = oEnum.NextElement MsgBox Cellule.String Wend

Page 52: Fa q Open Office

- 52 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment supprimer le contenu d'une cellule ou plage nommée ?

Auteurs : Silkyroad ,

Sub SuppressionContenuCelluleNommee Dim oNom As Object 'Définit le premier nom dans le classeur oNom = ThisComponent.NamedRanges.getByIndex(0) 'Supprime le contenu de la cellule/plage nommée oNom.ReferredCells.clearContents(com.sun.star.sheet.CellFlags.VALUE +_ com.sun.star.sheet.CellFlags.DATETIME +com.sun.star.sheet.CellFlags.STRING +_ com.sun.star.sheet.CellFlags.ANNOTATION +com.sun.star.sheet.CellFlags.FORMULA)

'Description du contenu supprimé: '------------------------------- 'com.sun.star.sheet.CellFlags.VALUE: Valeurs numériques 'com.sun.star.sheet.CellFlags.DATETIME: Dates et Heures 'com.sun.star.sheet.CellFlags.STRING: Texte 'com.sun.star.sheet.CellFlags.ANNOTATION: Annotations(Commentaires) 'com.sun.star.sheet.CellFlags.FORMULA: FormulesEnd Sub

Comment supprimer les noms ?

Auteurs : Silkyroad ,

Pour supprimer un nom spécifique:

Sub SupprimerNom 'Supprime un nom appelé "TestNom1" ThisComponent.NamedRanges.removeByName("TestNom1")End Sub

Pour supprimer tous les noms du classeur:

Sub SupprimerTousLesNoms Dim i As Integer Dim Cible As String

'Boucle sur les noms du classeur For i = ThisComponent.NamedRanges.count - 1 To 0 Step -1 'Récupére le nom Cible = ThisComponent.NamedRanges.getByIndex(i).name 'Suppression ThisComponent.NamedRanges.removeByName(Cible) next i

End Sub

Page 53: Fa q Open Office

- 53 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les feuilles > Les images

Comment créer une planche contact dans Calc, à partir de toutes les images jpg d'un répertoire ?

Auteurs : Silkyroad ,

Cette procédure Calc permet de choisir un répertoire à partir d'une boîte de dialogue. Toutes les images .jpg sont ensuiteaffichées en miniature dans la feuille de calcul (5 lignes et 4 colonnes par page imprimable).Remarque:La procédure est sensible à la casse: jpg n'est pas identique à JPG.

Option Explicit Sub CreationPlancheContact 'testé avec WinXP et OOo 2.0.3 'http://www.oooforum.org/forum/viewtopic.php?t=12312 Dim sGraphicURL As String , Chemin As String , NextFile as String Dim oDrawPage As Object , oGraphic As Object Dim oFolderDialog as Object, oUcb as Object Dim choix As Integer ,i As Integer ,j As Integer ,k As Integer Dim oLeft As Double , oTop as Double ,NumLig as Double , Largeur As Double Dim Taille as new com.sun.star.awt.Size Dim Emplacement as new com.sun.star.awt.Point

NumLig= ThisComponent.Sheets(0).RowPageBreaks(0).position Largeur= ThisComponent.Sheets(0).Rows(0).Height

'--- Affiche la boîte de dialogue pour sélectionner le répertoire contenant les fichiers .jpg --- oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker") oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess") oFolderDialog.SetDisplayDirectory("C:\Documents and Settings")'Adaptez le chemin par défaut

choix = oFolderDialog.Execute() If choix = 1 Then Chemin=ConvertFromUrl(oFolderDialog.getDirectory())

'Boucle sur toutes les images du répertoire cible'Attention la procédure est sensible à la casse'(jpg n'est pas identique à JPG) NextFile=Dir(Chemin & "\*.jpg",0)

Do While Len(NextFile) >0 i = i + 1 j = j + 1 sGraphicURL =ConvertToURL(Chemin & "\" & NextFile)

oDrawPage =ThisComponent.Sheets(0).getDrawpage() oGraphic =ThisComponent.createInstance("com.sun.star.drawing.GraphicObjectShape") oGraphic.GraphicURL =sGraphicURL oDrawPage.add(oGraphic)

Taille.width = 3000 'Dimension horizontale image (3000 = 30 millimètres) Taille.height = 3000 'Dimension verticale image oGraphic.setsize(Taille)

Emplacement.X = oLeft Emplacement.Y = oTop oGraphic.setposition(Emplacement)

oLeft = oLeft + Taille.width + 350 'Distance horizontale entre 2 images If i =4 then oLeft =0 i =0 oTop = oTop + Taille.height + 500 ' Distance verticale entre 2 images End If

Page 54: Fa q Open Office

- 54 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

if j = 20 Then '4 colonnes et 5 lignes par page d'impression k =k + 1 oTop = NumLig * Largeur * k j = 0 End If

NextFile=Dir() Loop End Sub

Page 55: Fa q Open Office

- 55 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le tableur Calc > Les graphiques

Comment créer un graphique par macro ?

Auteurs : Silkyroad ,

Il existe plusieurs types de graphiques: * LineDiagram (Linéaires) * PieDiagram (Secteurs) * AreaDiagram (Surfaces) * BarDiagram (Barres) * XYDiagram (Nuages de points)Description de la méthode addNewByName: .addNewByName(aName ,aRect ,aRanges ,bColumnHeaders , bRowHeaders) aName permet de nommer le graphique. aRect Spécifie la position et les dimensions du graphique. aRanges Spécifie la plage source du graphique. bColumnHeaders: La 1ere ligne de la source est utilisée pour définir les étiquettes si la valeur True est attribuée. bRowHeaders: La 1ere colonne de la source est utilisée pour définir les étiquettes si la valeur True est attribuée.

Consultez l'API Guide pour plus d'informations.Cet exemple montre comment créer un graphique type XYDiagram dans la 2eme feuille du classeur. La source dedonnées est dans la 1ere feuille.

Sub CreationGraphiqueDim oDoc As Object Dim Rect As New com.sun.star.awt.Rectangle Dim Source(0) As New com.sun.star.table.CellRangeAddress Dim oCharts As Object , oChart As Object oDoc = ThisComponent

'Le graphique sera positionné dans la 2eme feuille du classeur oCharts = oDoc.Sheets(1).Charts

'--- Spécfie la position et les dimensions du graphique --- Rect.X = 1000 'horizontal Rect.Y = 500 'vertical Rect.Width = 24000 'Largeur Rect.Height = 13000 'Hauteur'----------------------------------------------------------

'--- Spécifie la source du graphique ---'Les données sont dans la plage A1:D30'La première colonne correspond à l'axe des abscisses (une série de dates par exemple)'Les autres colonnes contiennent les valeurs d'ordonnées'La première ligne contient les étiquettes des séries Source(0).Sheet = 0 '1ere feuille du graphique Source(0).StartColumn = 0 'Ligne 1 Source(0).StartRow = 0 'Colonne A Source(0).EndColumn = 3 'Colonne D Source(0).EndRow = 29 'Ligne 30'---------------------------------------

'Création du graphiqueoCharts.addNewByName("MonGraphique",Rect ,Source(),True , True)

'Place le graphique dans la feuille de calculoChart = oCharts.getByName("MonGraphique").EmbeddedObject

With oChart 'Type de graphique (Scatters) .Diagram = oChart.createInstance("com.sun.star.chart.XYDiagram")

Page 56: Fa q Open Office

- 56 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Lissage des lignes (0: pas de lissage, 1: spline cubique, 2: spline B) oChart.Diagram.SplineType = 0 'Change le symbole des points oChart.Diagram.SymbolType = com.sun.star.chart.ChartSymbolType.SYMBOL1

'Modifie la couleur de fond du graphique .Diagram.wall.FillColor =RGB(150,150,150) 'Spécifie la valeur maxi de l'étiquette des ordonnées .Diagram.YAxis.Max = 6000 'Attribue un titre à l'axe des abscisses .Diagram.HasXAxisTitle = True .Diagram.YAxisTitle.string = "Les valeurs" 'Attribue un titre à l'axe des ordonnées .Diagram.HasYAxisTitle = True .Diagram.XAxisTitle.string = "Dates" 'La premiere ligne contient les étiquettes des séries .DataSourceLabelsInFirstColumn = False .DataSourceLabelsInFirstRow = True 'Roration des étiquettes pour l'axe des abscisses .Diagram.XAxis.TextRotation = 9000 '90 degrés 'redéfinit la taille des étiquettes pour les abscisses et les ordonnées .Diagram.YAxis.CharHeight = 4 .Diagram.XAxis.CharHeight = 4 'Attribue un titre au graphique puis un couleur à la chaîne de caractères .Title.String = "Le titre du graphique" .Title.CharColor = RGB(200,0,0)End With

oDoc.Sheets(0).getCellByPosition(0,0).String = "MonGraphique"

End Sub

Comment boucler sur les graphiques d'une feuille ?

Auteurs : Silkyroad ,

Voici un exemple qui permet de boucler sur tous les graphiques de la 2eme feuille.La procédure renvoie le nom de chaque graphique ainsi que la plage source.

Sub BoucleGraphiquesFeuilleDim oDoc As Object Dim oChart As ObjectDim i As Integer oDoc = ThisComponent

'Boucle sur les graphiques de la 2eme feuilleFor i = 0 To oDoc.Sheets(1).Charts.Count - 1 ochart = oDoc.Sheets(1).charts(i).EmbeddedObject 'La procédure récupère: '*le nom de chaque graphique '*la plage de données source MsgBox oDoc.Sheets(1).charts(i).Name & Chr(13) & _ ochart.ChartRangeAddress

Page 57: Fa q Open Office

- 57 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Next iEnd Sub

Comment modifier un graphique ?

Auteurs : Silkyroad ,

La procédure suivante permet de changer la source de données, le titre du graphique et quelques mises en forme.

Sub ModifierGraphiqueDim oDoc As Object Dim oChart As Object oDoc = ThisComponent

'Définit l'objet graphique (Le 1er graphique de la 2eme feuille)oChart = oDoc.Sheets(1).Charts(0).EmbeddedObject '---- 'Remarque: 'Si vous connaissez le nom du graphique, vous pouvez utiliser cette syntaxe: 'oChart = oDoc.Sheets(1).Charts.getByName("MonGraphique").EmbeddedObject '---- 'Spécifie la nouvelle plage de données source oChart.ChartRangeAddress = "Feuille1.$A$1:.$B25"

'Modifie le titre du graphiqueoChart.Title.String = "Le nouveau titre"

'Modifie la couleur de fond du graphiqueoChart.Diagram.wall.FillColor = RGB(250,200,200)

'Modifie l'épaisseur de la courbeoChart.Diagram.Linewidth = 100

'Modifier l'étiquette de l'axe des abscissesoChart.Diagram.XAxisTitle.String = "azerty"

'***************************** 'Important: '---------- 'Il est parfois nécessaire de lancer le recalcul automatique (touche F9) 'pour visualiser le résultat. '***************************** End Sub

Comment ajouter des séries et des points dans une source de données ?

Auteurs : Silkyroad ,

Cet exemple permet de rédéfinir la plage source du graphique en ajoutant 5 lignes et 2 colonnes par rapport à la plagede cellules initiale.Une plage $A$1:$B$25 deviendra $A$1:$D$30

Sub Ajouter_Series_Et_PointsDim oDoc As Object Dim oChart As Object

Page 58: Fa q Open Office

- 58 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim Plage oDoc = ThisComponent

'Définit l'objet graphique (Le 1er graphique de la 2eme feuille)oChart = oDoc.Sheets(1).Charts(0)

'Récupère la plage actuellePlage = oChart.getRanges()

'Ajoute 5 lignes par rapport à la source initialePlage(0).EndRow = Plage(0).EndRow + 5oChart.setRanges(Plage)

'Ajoute 2 colonnes par rapport à la source initialePlage(0).EndColumn = Plage(0).EndColumn + 2oChart.setRanges(Plage)

'--------------'Par exemple, une plage initiale $A$1:$B$25 deviendra $A$1:$D$30'-------------- End Sub

Comment exporter un graphique au format image ?

Auteurs : Silkyroad ,

Sub ExporterGraphique_FormatImage Dim Fichier As String Dim TabFiltre(3) As New com.sun.star.beans.PropertyValue Dim Tableau (2) As New com.sun.star.beans.PropertyValue Dim CheminURL As New com.sun.star.util.URL Dim Obj As Object Dim oGEF As Variant Fichier = ConvertToURL( "C:\ExportGraphique.jpg" )

'Spécifie le 1er objet (en l'ocurrence un graphique incorporé) contenu dans la 1er onglet Obj = ThisComponent.DrawPages.getByIndex( 0 ).getByIndex( 0 )

TabFiltre(0).Name = "PixelWidth" 'Largeur en pixels TabFiltre(0).Value = 900 TabFiltre(1).Name = "PixelHeight" 'Hauteur en pixels TabFiltre(1).Value = 700 TabFiltre(2).Name ="Quality" 'de 1 à 100% TabFiltre(2).Value = 80 TabFiltre(3).Name ="ColorMode" '0=Couleur , 1=Niveaux de Gris TabFiltre(3).Value = 0 oGEF = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) oGEF.SetSourceDocument( Obj )

CheminURL.complete = Fichier Tableau(0).Name = "MediaType" Tableau(0).Value = "image/jpeg" Tableau(1).Name = "URL" Tableau(1).Value = CheminURL Tableau(2).Name = "FilterData" Tableau(2).Value = TabFiltre oGEF.Filter( Tableau() )

Page 59: Fa q Open Office

- 59 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Page 60: Fa q Open Office

- 60 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer

Comment vérifier si un mot est présent dans un document Writer ?

Auteurs : Silkyroad ,

Cette procédure retrouve un mot spécifique, le colorie en rouge et modifie sa mise en forme afin de mieux le visualiserdans le document.

Sub retrouverMotDim oSearch As Object , Cible As ObjectDim Tableau As VariantDim x As long

oSearch = ThisComponent.createSearchDescriptor

With oSearch .SearchString = "essai" 'la chaîne à identifier .SearchWords = TrueEnd With Tableau = ThisComponent.FindAll(oSearch)MsgBox "Le mot recherché est présent " & Tableau.count & " fois."

For x = 0 To Tableau.Count - 1 Cible = Tableau(x)

Cible.CharWeight = com.sun.star.awt.FontWeight.BOLD 'gras Cible.CharPosture = com.sun.star.awt.FontSlant.ITALIC 'italique Cible.CharFontName = "Arial" 'police Cible.CharUnderline = com.sun.star.awt.FontUnderline.SINGLE 'souligné Cible.CharBackcolor = RGB(255,0,0) 'couleur de fondNextEnd Sub

Comment remplacer une chaîne de caractères dans un document Writer ?

Auteurs : Silkyroad ,

Sub RemplacerChaine Dim oDoc As Object Dim Remplace As Object Dim Ancien As String , Nouveau As String

Ancien = "Mme" Nouveau = "Madame"

oDoc = ThisComponent Remplace = oDoc.createReplaceDescriptor

Remplace.SearchString = Ancien Remplace.ReplaceString = Nouveau oDoc.replaceAll(Remplace)

End Sub

Si vous souhaitez remplacer plusieurs chaînes en une seule fois, utilisez:

Sub RemplacerPlusieursChaines Dim oDoc As Object

Page 61: Fa q Open Office

- 61 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim Remplace As Object Dim Ancien(3) As String , Nouveau(3) As String Dim i As Long

Ancien() = Array("Mme" , "Mlle" , "Mr") Nouveau() = Array("Madame" , "Mademoiselle" , "Monsieur")

oDoc = ThisComponent Remplace = oDoc.createReplaceDescriptor

For i = 0 To 2 Remplace.SearchString = Ancien(i) Remplace.ReplaceString = Nouveau(i) oDoc.replaceAll(Remplace) Next i

End Sub

Comment insérer un saut de page à l'emplacement du curseur ?

Auteurs : Silkyroad ,

Sub Insertion_SautDePage Dim oCurseur As Object Dim Cible As Object

oCurseur = ThisComponent.getCurrentController().getViewCursor() Cible = oCurseur.getText() Cible.insertControlCharacter( oCurseur, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False ) oCurseur.BreakType = com.sun.star.style.BreakType.PAGE_BEFOREEnd Sub

Comment créer un lien hypertexte dans le document ?

Auteurs : Silkyroad ,

La procédure suivante ajoute un lien hypertexte à l'emplacement du curseur.Lesxemple

Sub InsererLien_EmplacementCurseur Dim oCurseur As Object , oTexte As Object

oCurseur = ThisComponent.CurrentController.getViewCursor() oTexte = oCurseur.getText() oTexte.insertString(oCurseur, "La description", True)

With oCurseur 'Spécifie l'URL du lien hypertexte .HyperLinkURL = "http://www.developpez.com" 'Spécifie le nom du lien .HyperLinkName = "Nom lien hypertexte"

'--- pour créer un lien vers un document odt --- '.HyperLinkURL = ConvertToURL("C:\LeDocument.odt") ' 'Pour atteindre un signet lors de l'ouverture du fichier: '.HyperLinkURL = ConvertToURL("C:\LeDocument.odt") & "#LeSignet" '-----------------------------------------------

Page 62: Fa q Open Office

- 62 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'--- Pour créer un lien à l'intérieur du même document --- 'Cet exemple permet d'atteindre un signet nommé "NomSignet" '.HyperLinkURL = "#NomSignet" '--------------------------------------------------------- End With End Sub

Comment récupérer les informations statistiques d'un document ?

Auteurs : Silkyroad ,

Par exemple, si vous souhaitez connaître le nombre de pages, de mots, de caractères, d'images, de paragraphes, detableaux ou de lignes dans un document:Lorsque le fichier est ouvert,Utilisez le menu FichierPropriétésOnglet "Statistiques".Pour récupérer ces informations par macro:

Sub LireProprietes_Statisques_Writer Dim Resultat As String Dim Curseur As Object Curseur = ThisComponent.currentController.getViewCursor Curseur.jumpToLastPage() Resultat = "Nombre de caractères: " & ThisComponent.CharacterCount & Chr(10) & _ "Nombre d'images: " & ThisComponent.GraphicObjects.Count & Chr(10) & _ "Nombre de mots: " & ThisComponent.WordCount & Chr(10) & _ "Nombre de paragraphes: " & ThisComponent.ParagraphCount & Chr(10) & _ "Nombre de tableaux: " & ThisComponent.TextTables.Count & Chr(10) & _ "Nombre de pages: " & Curseur.Page & Chr(10) & _ "Nombre de lignes: " & ThisComponent.CurrentController.LineCount MsgBox ResultatEnd Sub

Comment récupérer le nom et la taille de la police à l'emplacement du curseur ?

Auteurs : Silkyroad ,

Sub NomPolice_EmplacementCurseur Dim Curseur As Object Curseur = ThisComponent.CurrentController.ViewCursor MsgBox "Nom: " & Curseur.CharFontName & Chr(10) & _ "Taille: " & Curseur.CharHeightEnd Sub

Comment extraire tout ce qui se trouve entre deux mots clés ?

Auteurs : Silkyroad ,

La procédure extrait le texte contenu entre deux mots identiques "MotCle".La procédure fonctionne uniquement si les deux mots servant de balise sont dans le même paragraphe.

Page 63: Fa q Open Office

- 63 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sub ExtractionPlageTexteDelimite Dim Plage As Object Dim Cible As String Dim oCSD As Object oCSD = ThisComponent.createSearchDescriptor Cible = "MotCle" & ".*" & "MotCle" With oCSD .SearchString = Cible .SearchRegularExpression = True End With Plage = ThisComponent.FindFirst( oCSD ) If IsNull(Plage) Then Msgbox "Non trouvé" Else Msgbox Plage.String End If End Sub

Comment comparer deux versions d'un document ?

Auteurs : Silkyroad ,

Lorsque vous disposez de Deux versions d'un même fichier, il est parfois utile de comparer la copie et l'original.OOo dispose d'un outil permettant:* De regrouper les deux documents dans le fichier original.* D'identifier les modifications.* D'accepter ou de refuser chaque différence.Ouvrez votre document original,puis sélectionnez le menu Édition / Comparer des documentsSélectionnez la copie du document et cliquez sur le bouton "Insérer".OpenOffice.org combine les deux documents dans votre document initial. Tous les passages de texte qui s'affichent dansvotre document, mais pas dans la copie, sont identifiés comme des insertions, et tous les passages de texte manquantsdans votre document initial sont identifiés comme des suppressions.Vous pouvez alors accepter les "insertions", auquel cas le texte correspondant reste dans sa forme d'origine, ou accepterles "suppressions", auquel cas le texte marqué (contenu dans la copie) n'est pas inséré dans le document.La fonction de révision est disponible pour les documents texte et les classeurs.

Comment afficher un document en plein écran ?

Auteurs : Silkyroad ,

Sans macro, vous pouvez utiliser le Menu Affichage/Plein écranLa procédure suivante permet d'obtenir le même résultat:Noubliez pas de créer un bouton pour revenir en mode normal, en cas de besoin.La macro ne fonctionne pas toujours lorsqu'elle est lancée depuis l'éditeur de macros.

Sub AffichagePleinEcran Dim oFrame As Object Dim oDispatcher As Object Dim Args(0) As New com.sun.star.beans.PropertyValue

Page 64: Fa q Open Office

- 64 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oFrame = ThisComponent.CurrentController.Frame oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Args(0).Name = "FullScreen" Args(0).Value = True oDispatcher.executeDispatch( oFrame , ".uno:FullScreen", "", 0, Args() )End Sub

Cette macro peut également être utilisée dans Calc.

Comment changer le type de guillemets dans les documents ?

Auteurs : Silkyroad ,

Utilisez la procédure suivante pour utiliser les guillemets

" à la place de << et >>

Menu OutilsAutoCorrectionOnglets "Guillemets typographiques"Décochez l'option "Remplacer" dans la zone "Guillemets doubles".Cliquez sur le bouton OK pour valider.Cette option est applicable pour les différents type de fichiers OOo.Vous pouvez aussi définir des caractères personnalisés en cliquant sur les boutons à droite des champs "En début demot" et "En fin de mot". Ces boutons permettent d'afficher la table de caractères.

Comment scinder chaque page d'un fichier Writer pour créer de nouveaux documents ?

Auteurs : Silkyroad ,

L'objectif est d'extraire chaque page du document pour créer de nouveaux fichiers.La macro boucle sur toutes les pages, sélectionne le contenu de chaque page, copie la sélection, effectue un collage dansun nouveau fichier et l'enregistre.Une option permet de créer une copie de chaque fichier au format pdf.

Sub ExtractionPages_Dans_DocumentWriter Dim NbPages As Integer , NumPage As Integer Dim Curseur As Object , oTextCurseur As Object Dim Debut As Variant , Fin As Variant Dim ArgsProprietes(2) As New com.sun.star.beans.PropertyValue Dim Document As Object , Dispatcher As Object Dim Args() Dim oDesktop As Object , oDoc As Object Dim Fichier As String , NomFichier As String Dim Destination As Variant 'Fige l'écran ThisComponent.LockControllers

'Compte le nombre de pages dans le document Curseur = ThisComponent.currentController.ViewCursor Curseur.GoToEnd(False) NbPages = Curseur.Page

Page 65: Fa q Open Office

- 65 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'On sort s'il n'y a qu'une page If NbPages = 1 Then Exit Sub 'Positionne le curseur au début du document Curseur.GoToStart( True ) '--- Spécifie le filtre de conversion --- ArgsProprietes(0).Name = "FilterName" ArgsProprietes(0).Value = "writer_pdf_Export" ArgsProprietes(1).Name = "CompressMode" ArgsProprietes(1).Value = 1

'Boucle sur toutes les pages For NumPage = 1 To NbPages 'Source: 'http://www.oooforum.org/forum/viewtopic.phtml?t=20670&sid=1c0970c54c1cdd27e6659496a86851f7 'JohnV oTextCurseur = ThisComponent.Text.createTextCursor Curseur.gotoRange( oTextCurseur , False ) Do While Curseur.Page <> NumPage If Not oTextCurseur.gotoNextParagraph( False ) Then End End If Curseur.gotoRange( oTextCurseur , False ) Loop Debut = ThisComponent.Text.createTextCursorByRange(oTextCurseur) Do While Curseur.Page <> NumPage + 1 If Not oTextCurseur.gotoNextParagraph( False ) Then oTextCurseur.gotoEndOfParagraph( False ) GoTo MarkIt End If Curseur.gotoRange( oTextCurseur , False ) Loop

oTextCurseur.gotoPreviousParagraph( False ) oTextCurseur.gotoEndOfParagraph( False )

MarkIt: Fin = ThisComponent.Text.createTextCursorByRange( oTextCurseur ) 'Sélectionne le contenu de la Xeme page Curseur.gotoRange( Debut , False ) Curseur.gotoRange( Fin , True )

'--- 'Copie la Xeme page sélectionnée Document = ThisComponent.CurrentController.Frame Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dispatcher.executeDispatch(Document, ".uno:Copy", "", 0, Array())

'Crée un nouveau document Writer oDesktop = createUnoService("com.sun.star.frame.Desktop") Fichier = "private:factory/swriter" oDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args()) 'Effectue un collage dans le nouveau document Destination = oDoc.CurrentController.Frame Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dispatcher.executeDispatch(Destination, ".uno:Paste", "", 0, Array())

'Sauvegarde le nouveau fichier au format odt NomFichier = ConvertToURL( "C:\Copie Page" & NumPage & ".odt" ) oDoc.storeAsURL(NomFichier, Args())

Page 66: Fa q Open Office

- 66 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Crée une copie au format pdf NomFichier = ConvertToURL( "C:\CopiePDF Page" & NumPage & ".pdf" ) oDoc.storeToUrl( NomFichier , ArgsProprietes()) 'Ferme le fichier oDoc.Close( False ) '---

'Positionne le curseur au début du document Curseur.GoToStart( True ) Next NumPage ThisComponent.UnlockControllers MsgBox "Terminé." End Sub

Page 67: Fa q Open Office

- 67 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer > Les paragraphes

Comment boucler sur les paragraphes d'un document ?

Auteurs : Silkyroad ,

Sub boucleSurParaGraphesDim leTexte As Object , TextElement As ObjectDim i As Integer

leTexte = ThisComponent.Text.createEnumeration

While leTexte.hasMoreElements TextElement = leTexte.nextElement If TextElement.supportsService("com.sun.star.text.Paragraph") Then _ Print TextElement.String

WendEnd Sub

Comment supprimer un paragraphe précis dans le document ?

Auteurs : Silkyroad ,

La macro supprime le deuxième paragraphe dans le document Writer.

Sub SuppressionParaGrapheDim leTexte As Object , TextElement As ObjectDim i As Integer

leTexte = ThisComponent.Text.createEnumeration

'Boucle dans le document While leTexte.hasMoreElements TextElement = leTexte.nextElement

'Compte les paragraphes If TextElement.supportsService("com.sun.star.text.Paragraph") Then _ i = i + 1 'Suppression s'il s'agit du 2eme paragraphe If i = 2 Then 'Suppression TextElement.Dispose 'On sort de la procédure quand le paragraphe est supprimé Exit Sub End If WendEnd Sub

Comment déplacer un paragraphe complet rapidement ?

Auteurs : Michaël ,

Placez vous dans votre paragraphe puis maintenez la touche Contrôle enfoncée.Ensuite déplacez vous avec les touches fléchées haut et bas selon l'endroit où vous voulez aller.

Page 68: Fa q Open Office

- 68 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer > Les signets

Comment insérer un signet à l'emplacement du curseur ?

Auteurs : Silkyroad ,

Pour insérer un signet manuellement:Menu InsertionRepère de texte

Sub creerBookmarkEmplacementCurseurDim Doc As Object , Cursor As Object'insérer un bookmark(signet)à l'emplacement du curseur

Doc = ThisComponentCursor = Doc.currentcontroller.ViewCursor

Bookmark = Doc.createInstance("com.sun.star.text.Bookmark")'Spécifie le nom du nouveau signetBookmark.Name = "Xmark"'Insertion du signetDoc.Text.insertTextContent(Cursor, Bookmark, True)

'Ajoute du texte dans le signetDoc.getBookmarks().getByName("Xmark").getAnchor.setString("test ajout texte")

End Sub

Comment positionner le curseur à l'emplacement d'un signet ?

Auteurs : Silkyroad ,

Sub AtteindreSignetDim Doc As Object , oCC As Object , oCursor As ObjectDim BookMark As Object

Doc = ThisComponentoCC = Doc.getCurrentController()

'Définit le signet cible BookMark = Doc.BookMarks.GetByName("Xmark")

oCursor = Doc.text.createTextCursorByRange(BookMark.Anchor) oCC.Select(oCursor)

End Sub

Pour visualiser manuellement la liste des signets contenus dans le document, faites un clic droit en bas à gauche dansla barre d'état (à l'emplacement du numéro de la page active).Vous pouvez ensuite sélectionner un des noms pour positionner le curseur à l'emplacement du signet.

Comment boucler sur les signets d'un document ?

Auteurs : Silkyroad ,

Sub BoucleSignetsDim Doc As Object , Signets As Object

Page 69: Fa q Open Office

- 69 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim i As Integer

Doc = ThisComponentSignets = Doc.getBookmarks()

For i = 0 to Signets.Count() - 1 MsgBox "Nom: " & Signets.getByIndex(i).Name & Chr(13) & _ "Contenu: " & Signets.getByIndex(i).Anchor.StringNext i

End Sub

Page 70: Fa q Open Office

- 70 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer > Les images

Comment créer une planche contact dans Writer, à partir de toutes les images jpg d'un répertoire ?

Auteurs : Silkyroad ,

Cette procédure Writer permet de choisir un répertoire à partir d'une boîte de dialogue. Toutes les images .jpg sontensuite affichées en miniature dans le document.Remarque:La procédure est sensible à la casse: jpg n'est pas identique à JPG.

Sub CreationPlancheContact_Writer

'testé avec WinXP et OOo 2.0.3

Dim sGraphicURL As String , Chemin As String , NextFile as String Dim oDrawPage As Object , oGraphic As Object Dim oFolderDialog as Object, oUcb as Object Dim choix As IntegerDim Taille as new com.sun.star.awt.Size Dim Emplacement as new com.sun.star.awt.Point Dim oLeft As Double , oTop as Double

oCurseur = ThisComponent.getCurrentController().getViewCursor()

'--- Affiche la boîte de dialogue pour sélectionner le répertoire contenant les fichiers .jpg --- oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker") oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")

choix = oFolderDialog.Execute() If choix = 1 Then Chemin=ConvertFromUrl(oFolderDialog.getDirectory())

'Boucle sur toutes les images du répertoire cible'Attention la procédure est sensible à la casse'(jpg n'est pas identique à JPG) NextFile=Dir(Chemin & "\*.JPG",0)

Do While Len(NextFile) >0 sGraphicURL =ConvertToURL(Chemin & "\" & NextFile)

oDrawPage =ThisComponent.getDrawpage() oGraphic =ThisComponent.createInstance("com.sun.star.drawing.GraphicObjectShape") oGraphic.GraphicURL =sGraphicURL oDrawPage.add(oGraphic)

Taille.width = 3000 'Dimension horizontale image Taille.height = 3000 'Dimension verticale image oGraphic.setsize(Taille) Emplacement.X = oLeft Emplacement.Y = oTop oGraphic.setposition(Emplacement) oGraphic.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER NextFile=Dir() Loop End Sub

Page 71: Fa q Open Office

- 71 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer > Les tableaux Writer

Comment insérer un tableau dans le document ?

Auteurs : Silkyroad ,

La procédure ajoute un tableau dans le document puis remet en forme les cellules.

Sub InsertionTableauWriter Dim oDoc As Object , oText As Object , oCurseur As Object Dim oTable As Object Dim NumLigne As Integer , NimColonne As Integer Dim Cellule As Object Dim Tcs() oDoc = ThisComponent oText = oDoc.getText() oCurseur = oText.createTextCursor() '--- création tableau --- oTable = oDoc.createInstance( "com.sun.star.text.TextTable" ) 'Définit les dimensions du tableau: 'Table de 5 colonnes et 20 lignes oTable.initialize( 20 , 5 ) 'Insertion du tableau dans le document, à l'emplacement du curseur oText.insertTextContent( oCurseur, oTable, False ) '-----------------------

'--- Modifie la largeur de la 1ere colonne --- Tcs = oTable.TableColumnSeparators Tcs(0).Position = 1000 oTable.TableColumnSeparators = Tcs() '---------------------------------------------

'Boucle sur les cellules du tableau pour la mise en forme For NumLigne = 0 To oTable.Rows.getCount() - 1 For NumColonne = 0 To oTable.Columns.getCount() - 1 'Définit la cellule du tableau Cellule = oTable.getCellByPosition( NumColonne, NumLigne ) 'Modifie la couleur de fond de la cellule Cellule.BackColor = RGB( 235 , 235 , 125 ) oText = Cellule.getText() oCurseur = oText.createTextCursor() 'Spécifie l'alignement des données dans la cellule 'oCurseur.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT oCurseur.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER 'oCurseur.paraAdjust = com.sun.star.style.ParagraphAdjust.LEFT

'Applique une mise en forme particulière dans la 1ere colonne If NumColonne = 0 Then oCurseur.setPropertyValue("CharRotation", 900) 'Rotation 900 = 90° oCurseur.CharColor = RGB(255,0,0) 'couleur des caractères oCurseur.CharHeight = 8 'Taille catactères oCurseur.CharWeight = com.sun.star.awt.FontWeight.BOLD 'gras oCurseur.CharPosture = com.sun.star.awt.FontSlant.ITALIC 'italique oCurseur.CharFontName = "Arial" 'Font oCurseur.CharUnderline = _ com.sun.star.awt.FontUnderline.SINGLE 'souligné simple oCurseur.CharBackcolor = RGB(0,0,0) 'couleur de fond du texte End If

Page 72: Fa q Open Office

- 72 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Insère du texte dans la cellule oText.insertString( oCurseur, "C" & NumColonne + 1 & "/R" & _ NumLigne + 1 , False ) Next NumColonne Next NumLigne End Sub

Comment ajouter une ligne dans un tableau ?

Auteurs : Silkyroad ,

Cet exemple montre comment ajouter une ligne à la 5eme ligne du premier tableau.

Sub AjoutLignesTableau Dim oTable As Object , Lignes As Object 'Spécifie le 1er tableau du document oTable = ThisComponent.TextTables.getByIndex(0) Lignes = oTable.getRows() 'Ajoute une ligne à la 5eme ligne 'insertByIndex(numéro de ligne pour l'insertion , nombre de lignes à insérer) 'L'insex de la 1ere ligne = 0 Lignes.insertByIndex(4, 1)End Sub

Comment savoir sur quelle page est positionné un tableau spécifique ?

Auteurs : Silkyroad ,

Sub PositionTableau_NumeroPage Dim oDoc As Object , oCurseur As Object , oTable As Object Dim oVueCurseur As Object Dim NumPage As Integer oDoc = ThisComponent oVueCurseur = oDoc.CurrentController.ViewCursor 'getByIndex(2) correspond au 3eme tableau dans le document oTable = oDoc.TextTables.getByIndex(2) 'Pour spécifier un tableau à partir de son nom, utilisez: 'oTable = oDoc.TextTables.getByName("LeNom") oCurseur = oTable.getCellByName("A1").createTextCursor oVueCurseur.gotoRange(oCurseur, FALSE) NumPage = oVueCurseur.getPage MsgBox "Le Tableau est sur la page: " & NumPage

Page 73: Fa q Open Office

- 73 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment insérer une image dans une cellule d'un tableau Writer ?

Auteurs : Silkyroad ,

Sub InsertionImage_Dans_TableauWriter Dim oTable As Object , oImage As Object Dim Cellule As Object , Texte As Object , Curseur As Object

'--- Définit l'image qui va être insérée dans la cellule du tableau --- oImage = ThisComponent.createInstance( "com.sun.star.text.GraphicObject" ) 'Nécessite d'être connecté à internet oImage.GraphicURL = "http://www.developpez.com/template/logo.gif" oImage.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER '--- 'getByIndex(0) correspond au 1er tableau dans le document oTable = ThisComponent.TextTables.getByIndex(0) 'Définit la première cellule dans le tableau Cellule = oTable.getCellByPosition(0,0) Texte = Cellule.getText() Curseur = Texte.createTextCursor() Texte.insertTextContent( Curseur , oImage , False )

End Sub

Page 74: Fa q Open Office

- 74 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le traitement de texte Writer > Les cadres - TextFrames

Comment boucler sur les cadres contenus dans un document ?

Auteurs : Silkyroad ,

Les cadres (aussi appelés TextFrames) sont accessibles en utilisant le menu Insertion/Cadres.Cet exemple boucle sur tous les cadres du document pour en récupérer certaines informations:*Le nom*Le texte contenu*Les dimensionsEt modifie:*La propriété d'impression du cadre*La protection de la taille, de la position et du contenu

Sub BoucleCadres Dim i As Integer For i = 0 To Ubound( ThisComponent.TextFrames.ElementNames() ) 'Affiche le nom de chaque cadre MsgBox ThisComponent.TextFrames.ElementNames (i) '--- quelques exemples d'actions sur les cadres With ThisComponent.TextFrames.getByIndex( i ) 'Récupère le contenu du cadre MsgBox .String 'Récupère les dimensions du cadre MsgBox .Height & " x " & .Width 'Désactive l'option d'impression de chaque cadre .setPropertyValue( "Print" , False ) 'protége la taille du cadre .Text.SizeProtected = True 'protège la position du cadre .Text.PositionProtected = True 'protège le contenu du cadre .Text.ContentProtected = True End With Next iEnd Sub

Comment atteindre un cadre spécifique ?

Auteurs : Silkyroad ,

L'exemple positionne le curseur dans le premier cadre du document.

Sub AtteindreCadreSpecifique Dim oFrame As Object 'Spécifie le 1er cadre dans le document oFrame = ThisComponent.TextFrames.getByIndex(0) 'Positionne le curseur dans le cadre

Page 75: Fa q Open Office

- 75 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

ThisComponent.CurrentController.Select( oFrame.Text.Start )

End Sub

Comment récupérer et modifier la position d'un cadre ?

Auteurs : Silkyroad ,

Utilisez la macro ci dessous pour récupérer la position d'un cadre:

Sub RecupererPositionCadre Dim oFrame As Object

'Spécifie un cadre nommé "Cadre1" oFrame = ThisComponent.TextFrames.getByName("Cadre1") MsgBox oFrame.HoriOrientPosition & " x " & oFrame.VertOrientPositionEnd Sub

La procédure suivante modifie la position du cadre:

Sub ModifierPositionCadre Dim oFrame As Object

'Spécifie un cadre nommé "Cadre1" oFrame = ThisComponent.TextFrames.getByName("Cadre1")

With oFrame .HoriOrientPosition = 4000 .VertOrientPosition = 6000 End With End Sub

Comment créer un cadre par macro ?

Auteurs : Silkyroad ,

Sub CreationCadre Dim oFrame As Object Dim Curseur As Object Curseur = ThisComponent.Text.createTextCursor() oFrame = ThisComponent.createInstance( "com.sun.star.text.TextFrame" )

'Insertion du cadre à l'emplacement du curseur ThisComponent.Text.insertTextContent( Curseur , oFrame , False ) With oFrame .Name = "LeCadre" .setString( "Mon texte dans le cadre" ) .BackColor = RGB( 255 , 0 , 0 ) 'définit le type d'ancrage .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PAGE 'Définit la largeur du cadre par rapport à la largeur de la page (en pourcentage) '.FrameWidthPercent = 90

Page 76: Fa q Open Office

- 76 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'position horizontale .HoriOrient = com.sun.star.text.HoriOrientation.NONE .HoriOrientRelation = com.sun.star.text.RelOrientation.PAGE_FRAME .HoriOrientPosition = 4000

'position verticale .VertOrient = com.sun.star.text.VertOrientation.NONE .VertOrientRelation = com.sun.star.text.RelOrientation.PAGE_FRAME .VertOrientPosition = 10000

.Width = 5000 '.FrameIsAutomaticHeight = False '.Height = 5000 'pour adapter le cadre à la taille du texte '.WidthType = 2 End With

End Sub

Comment modifier les bordures d'un cadre ?

Auteurs : Silkyroad ,

Sub ModificationBordures Dim oFrame As Object Dim Tableau As Variant 'Spécifie un cadre nommé "LeCadre" oFrame = ThisComponent.TextFrames.getByName("LeCadre")

'Array( Color , InnerLineWidth , OuterLineWidth , LineDistance ) Tableau = Array(0, 0, 0, 0) With oFrame .setPropertyValue( "TopBorder" , Tableau ) .setPropertyValue( "BottomBorder" , Tableau ) .setPropertyValue( "LeftBorder" , Tableau ) .setPropertyValue( "RightBorder" , Tableau ) End With

End Sub

Page 77: Fa q Open Office

- 77 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le module Base

Comment débuter avec OOo Base ?

Auteurs : Silkyroad ,

Grace au tutoriel de Cyril Beaussier, vous allez apprendre pas-à-pas à créer votre première base au format natifOpenOffice. Vous y aborderez l'utilisation des assistants pour la création des tables et des formulaires, le mode ébaucheet l'éditeur de relations.

lien : Consultez le tutoriel de Cyril Beaussier

Comment se connecter à une base et créer une requète par macro ?

Auteurs : Silkyroad ,

Cet exemple effectue une requête dans la base de données enregistrée "Bibliography" (Base démo fournie dans le packd'installation Open Office).Une base est dite enregistrée lorsque vous pouvez la visualiser en utilisant le menu Afficher/Sources de données (ou parla touche raccourci F4) depuis Calc et Writer.Pour enregistrer une Base:Menu OutilsOptionsSélectionnez "OpenOffice.org Base" dans l'arborescenceDouble cliquez sur "Bases de données"Cliquez sur le bouton "Nouveau"Utilisez le bouton "Parcourir" pour rechercher la base sur le disquePuis Validez en cliquant sur OK dans toutes les boîtes de dialogue.Remarque:Le nom des champs et des tables est encadré par des doubles guillemets dans la requête.

Sub RequeteBase_V01Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As ObjectDim strSQL As String

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") 'Connection à la base de données enregistrée "Bibliography" '(Base démo fournie dans le pack d'installation Open Office) 'Une base est dite enregistrée lorsque vous pouvez la visualiser 'en utilisant le menu Afficher/Sources de données(ou par la touche raccourci F4). 'Pour enregistrer une Base: 'Menu Outils 'Options 'Sélectionnez "OpenOffice.org Base" dans l'arborescence 'Double cliquez sur "Bases de données" 'Cliquez sur le bouton "Nouveau" 'Utilisez le bouton "Parcourir" pour rechercher la base sur le disque 'Puis Validez en cliquant sur OK dans toutes les boîtes de dialogue. oDB = oDBContext.getbyName("Bibliography")

'Si la base est protégée par un mot de passe, utilisez'oBase = oDB.getConnection("Login", "MotDePasse")oBase = oDB.getConnection("","") oStatement = oBase.createStatement()

strSQL = "SELECT ""Identifier"",""Publisher"",""ISBN"" FROM ""biblio"" " & _ "WHERE ""Author""='Böhm, Franz'"

Page 78: Fa q Open Office

- 78 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oRequete = oStatement.executeQuery( strSQL )

If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) & " / " & _ oRequete.getString(2) & " / " & oRequete.getString(3) WendEnd If

oRequete.CloseoStatement.CloseoBase.CloseoBase.DisposeEnd Sub

Cet autre exemple permet de se connecter à une base non enregistrée.

Sub RequeteBase_V02Dim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As ObjectDim strSQL As String , Fichier As String

Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDB = oDBContext.getbyName(Fichier)

oBase = oDB.getConnection("","") oStatement = oBase.createStatement()

strSQL = "SELECT ""ID"",""Champ1"",""Champ2"" FROM ""maTable"" " & _ "WHERE ""Champ2""=12345"oRequete = oStatement.executeQuery( strSQL )

If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) & " / " & _ oRequete.getString(2) & " / " & oRequete.getString(3) WendEnd If

oRequete.CloseoStatement.CloseoBase.CloseoBase.DisposeEnd Sub

Quelles sont les méthodes pour lire le contenu d'une requête ?

Auteurs : Silkyroad ,

Comme vous pouvez le voir dans l'exemple précédent, la méthode getString permet de lire le contenu de la requêteau format texte.

'Vérifie que le résultat de la requête n'est pas vide.If Not IsNull(oRequete) Then 'Boucle sur chaque ligne résultat de la requête While oRequete.next 'Exemple pour 3 champs type String. 'Les paramètres 1, 2 et 3 définissent les numéros de colonnes. MsgBox oRequete.getString(1) & " / " & _

Page 79: Fa q Open Office

- 79 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oRequete.getString(2) & " / " & oRequete.getString(3) WendEnd If

Le tableau suivant liste quelques méthodes disponibles en fonction du type de champ à lire dans la base:

Méthode Type de donnéegetString StringgetBoolean BooleangetDouble DoublegetDate DategetTime TimegetTimestamp DateTime

Exemple de lecture d'un champ Date au format JJ/MM/AA hh:mm:ss dans la base:

If Not IsNull(oRequete) Then While oRequete.next MsgBox oRequete.getString(1) 'renvoie un format AAAA-MM-JJ

MsgBox oRequete.getDate(1)'.Year 'renvoie un format AAAA 'MsgBox oRequete.getDate(1).Month 'renvoie un format MM 'MsgBox oRequete.getDate(1).Day 'renvoie un format JJ MsgBox oRequete.getTimestamp(1).Year 'renvoie un format AAAA MsgBox oRequete.getTimestamp(1).Month 'renvoie un format MM 'MsgBox oRequete.getTimestamp(1).Day 'renvoie un format JJ MsgBox oRequete.getTimestamp(1).Hours 'renvoie un format hh 'MsgBox oRequete.getTimestamp(1).Minutes 'renvoie un format mm 'MsgBox oRequete.getTimestamp(1).Seconds 'renvoie un format ss 'MsgBox oRequete.getTimestamp(1).HundredthSeconds WendEnd If

lien : api.openoffice.org

Comment ajouter un enregistrement dans une table ?

Auteurs : Silkyroad ,

Sub AjoutEnregistrementDim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As ObjectDim strSQL As String , Fichier As String

Fichier = ConvertToURL("C:\Documents and Settings\mimi\OOoBase.odb")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDB = oDBContext.getbyName(Fichier)

oBase = oDB.getConnection("","") oStatement = oBase.createStatement()

'--- Ajoute un enregistrement ---strSQL = _ "INSERT INTO ""maTable"" (""ChampTexte"", ""ChampNum"") Values('azerty', 12345)"oRequete = oStatement.executeQuery( strSQL ) '--------------------------------

Page 80: Fa q Open Office

- 80 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oRequete.CloseoStatement.CloseoBase.CloseoBase.DisposeEnd Sub

Comment supprimer des enregistrements dans une table ?

Auteurs : Silkyroad ,

Sub SupprimerEnregistrementDim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As ObjectDim strSQL As String , Fichier As String

Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDB = oDBContext.getbyName(Fichier)

oBase = oDB.getConnection("","") oStatement = oBase.createStatement()

'Supprime les enregistrements si le Champ2 contient la valeur 12345strSQL = "DELETE FROM ""maTable"" WHERE ""Champ2""=12345 "oRequete = oStatement.executeQuery( strSQL ) '------------------------------------------------------------------

oRequete.CloseoStatement.CloseoBase.CloseoBase.DisposeEnd Sub

Comment mettre à jour des enregistrements dans une table ?

Auteurs : Silkyroad ,

Sub MiseAJourEnregistrementDim oDBContext As Object , oDB As Object , oBase As Object Dim oStatement As Object , oRequete As ObjectDim strSQL As String , Fichier As String

Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDB = oDBContext.getbyName(Fichier)

oBase = oDB.getConnection("","") oStatement = oBase.createStatement()

'Mise à jour d'enregistrements:'Insère le mot "Cloture" dans le Champ1 si le Champ2 contient la valeur 10strSQL = "UPDATE ""maTable"" SET ""Champ1""='Cloture' WHERE ""Champ2"" = 10"oRequete = oStatement.executeQuery( strSQL ) '-----------------------------

oRequete.CloseoStatement.CloseoBase.CloseoBase.Dispose

Page 81: Fa q Open Office

- 81 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment ajouter une nouvelle table par macro ?

Auteurs : Silkyroad ,

Sub CreerTableDim oDBContext As Object , oDB As Object , oBase As Object Dim Fichier As StringDim NouvelleTable As Object, CollectionTables As Object, NouveauChamp As Object

Fichier = ConvertToURL("C:\Documents and Settings\mimi\dossier\OOoBase.odb")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDB = oDBContext.getbyName(Fichier)

oBase = oDB.getConnection("","")

'------ creation nouvelle table -----------CollectionTables = oBase.Tables NouvelleTable = CollectionTables.createDataDescriptorNouvelleTable.Name = "gestionStock" 'nom de la nouvelle table 'Description 1er champNouveauChamp = NouvelleTable.Columns.createDataDescriptorNouveauChamp.Name = "NomProduit" 'nom champNouveauChamp.Type = com.sun.star.sdbc.DataType.VARCHAR '(1) champ type texteNouveauChamp.Precision = 200NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'ajout du champ 'Description 2eme champNouveauChamp = NouvelleTable.Columns.createDataDescriptorNouveauChamp.Name = "NbStock" 'nom champNouveauChamp.Type = com.sun.star.sdbc.DataType.INTEGER '(2) champ type numériqueNouveauChamp.Precision = 10NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'insertion de la nouvelle tableCollectionTables.appendByDescriptor(NouvelleTable)'----------------------------------------

oBase.CloseoBase.DisposeEnd Sub

Comment activer/enregistrer une source de données ?

Auteurs : Silkyroad ,

Une source est dite enregistrée lorsque vous pouvez la visualiser en utilisant le menu Afficher/Sources de données (oupar la touche raccourci F4) depuis Calc ou Writer.

Sub Integrer_SourceDonnees()Dim oDBContext As Object, oDataSource As Object Dim Source As String, Chemin As StringDim Array()

'Le nom qui s'affichera quand vous visualiserez

Page 82: Fa q Open Office

- 82 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'la source depuis Calc ou Writer (touche F4).Source = "OOoBase"'Répertoire contenant la base de donnéesChemin = ConvertToURL("C:\Documents and Settings\mimi\dossier")

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")oDataSource = createUnoService("com.sun.star.sdb.DataSource")

'Vérifie s'il existe deja une base intégrée portant ce nomIf oDBContext.hasByName(Source) then MsgBox "Opération annulée. Vérifiez le nom." , , "Message" Exit SubEnd If

'Attention au format URL: bien saisir un Slash /'Chemin & "/OOoBase.odb" correspond au chemin complet de votre base de donnéesoDataSource.databaseDocument.storeAsURL(Chemin & "/OOoBase.odb", Array())Chemin = "sdbc:dbase:" & Chemin

oDBContext.registerObject(Source , oDataSource) oDataSource.setPropertyValue("URL", Chemin) oDataSource.databaseDocument.Store()'Sauvegarde'oDataSource.databaseDocument.Close(True)End Sub

Comment désactiver une source de données ?

Auteurs : Silkyroad ,

Sub Desactiver_SourceDeDonnees() Dim oDBContext As Object, Source As String

'Le nom de la source à désactiver Source = "OOoBase" oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")

If oDBContext.hasByName(Source) Then oDBContext.revokeObject(Source) Else MsgBox "Opération annulée. Vérifiez le nom." , , "Message" End If End Sub

Pour désactiver une source manuellement:Menu OutilsOptionsSélectionnez "OpenOffice.org Base" dans l'arborescenceDouble cliquez sur "Bases de données"Sélectionnez une source dans la listeCliquez sur le bouton "Annuler" pour désactiver la source de données.Puis Validez en cliquant sur OK dans toutes les boîtes de dialogue.

Page 83: Fa q Open Office

- 83 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

La source n'est plus visible en utilisant le menu Afficher/Sources de données (ou par la touche raccourci F4) depuisCalc ou Writer

Comment créer une requête pour identifier les enregistrements vides dans une table ?

Auteurs : Silkyroad ,

Lorsque vous créez une requête (en vue SQL par exemple), vous pouvez préciser la valeur IS NULL sur un ou plusieurschamps, dans la clause WHERE.La clause WHERE exprime les conditions de recherches.La requête suivante renvoie les enregistrements de la Table1, si le champ "Matricule" est vide:

SELECT * FROM Table1 WHERE Matricule IS NULL

Inversement, pour renvoyer les matricules non vides, utilisez IS NOT NULL:

SELECT * FROM Table1 WHERE Matricule IS NOT NULL

Page 84: Fa q Open Office

- 84 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le module de dessin Draw

Comment transférer un fichier palette de couleurs personnalisé d'un poste à un autre ?

Auteurs : Silkyroad ,

Dans OpenOffice, Il est possible de personnaliser les palettes de couleurs et de les sauvegarder (type .soc) pour uneréutilisation ultérieure. Vous pouvez aussi copier ces fichiers sur d'autres postes de travail.Sur le poste Source:Menu FormatRemplissageOnglet "Couleurs"Cliquez sur l'icône "Sauvegarder la palette de couleurs"Vous pouvez ainsi récupérer le nom de votre fichier personnaliséNota:Les fichiers .soc sont généralement stockés dans le répertoire:C:\Documents and Settings\mimi\Application Data\OpenOffice.org2\user\configCopiez le fichier .soc sur une clé USB ou un CD pour effectuer le transfert.Sur le poste de destination:Enregistrez le fichier .soc sur le disque.Ensuite, ouvrez DrawMenu FormatRemplissageOnglet "Couleurs"Cliquez sur l'icône "Charger la palette de couleurs"Recherchez et ouvrez votre fichier palette de couleurs personnaliséCliquez sur le bouton "OK" pour valider.Vous pouvez maintenant utiliser cette palette.

Comment définir un modèle personnalisé par défaut ?

Auteurs : Silkyroad ,

Tout d'abord, ouvrez une page vierge et modifiez le styliste:Utilisez le menu Format/Styles et formatage (raccourci clavier: F11)Faites un clic droit sur chaque Style que vous souhaitez modifier.Sélectionnez l'option "Modifier".Effectuez les personnalisations en fonction de vos préférences.Cliquez sur le bouton OK pour valider.Vous pouvez aussi ajouter des styles personnalisés (Format/Styles et formatage/Clic droit/Nouveau).Vous allez ensuite sauvegarder le fichier en tant que modèle:Menu Fichier/Modèle de document/Enregistrer.Nommez le nouveau modèle.Sélectionnez la catégorie "Mes modèles".Cliquez sur le bouton OK pour valider.Et pour définir le fichier comme modèle par défaut:Menu Fichier/Modèle de document/Gérer.Double cliquez sur le dossier "Mes modèles" dans la boîte de dialogue.Sélectionnez le nom du modèle créé précédemment.Cliquez sur le bouton "Commandes".Sélectionnez l'option "Définir comme modèle par défaut".Cliquez sur le bouton "Fermer".Vous pouvez ouvrir un nouveau dessin pour vérifier le nouveau modèle par défaut.(Menu Fichier/Nouveau/Dessin)

Page 85: Fa q Open Office

- 85 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Pour rétablir le modèle standard:Menu Fichier/Modèle de document/Gérer.Cliquez sur le bouton "Commandes".Sélectionnez l'option "Rétablir modèle par défaut".Cliquez sur le bouton "Fermer".

Comment récupérer le nom et le numéro de la page active ?

Auteurs : Silkyroad ,

Sub Recuperer_Nom_Numero_PageActiveDim LaPage As Object

LaPage = ThisComponent.getCurrentController.CurrentPage

MsgBox "Nom: " & LaPage.Name & " Numéro: " & LaPage.Number End Sub

Page 86: Fa q Open Office

- 86 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Le module de présentation Impress

Comment boucler sur les pages d'une présentation ainsi que sur chacun des objets placé sur les pages ?

Auteurs : Silkyroad ,

Cette procédure ouvre une présentation, boucle sur chaque page pour afficher son nom et le nombre d'objet qu'ellecontient.Ensuite la macro boucle sur chaque objet pour en récupérer les dimensions.

Sub BoucleObjetsPresentation Dim Fichier As String Dim Array() As Variant Dim oDoc As Object , oPage As Object Dim i As Integer , j As Integer

Fichier = "C:\Documents and Settings\mimi\dossier\maPresentation.odp" Fichier = ConvertToURL(Fichier) 'Ouvre la présentation oDoc = StarDesktop.LoadComponentFromURL( Fichier , "_blank", 0, Array() ) 'Boucle sur les slides For i = 0 To oDoc.getDrawPages().getCount() - 1 oPage = oDoc.getDrawPages.getByIndex(i) 'Affiche le nom de la page et compte le nombre de Shapes qu'elle contient MsgBox oPage.getCount() & " shape(s)" & _ " dans la page nommée '" & oPage.getName & "'" 'Boucle sur les objets de la page For j = 0 To oPage.getCount() - 1 oShape = oPage.getByIndex(j) MsgBox "Dimensions " & oShape.getSize.Width & " x " & oShape.getSize.Height Next j

Next iEnd Sub

Comment ouvrir une présentation et la démarrer en mode plein écran ?

Auteurs : Silkyroad ,

Sub DemarrerPresentation Dim Fichier As String Dim Array() As Variant Dim oDoc As Object

Fichier = "C:\Documents and Settings\mimi\dossier\maPresentation.odp" Fichier = ConvertToURL(Fichier) 'Ouvre la présentation oDoc = StarDesktop.LoadComponentFromURL( Fichier , "_blank", 0, Array() )

'Démarre la présentation en mode plein ecran oDoc.Presentation.Start

Page 87: Fa q Open Office

- 87 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment masquer une page dans une présentation ?

Auteurs : Silkyroad ,

Cet exemple permet de masquer le 3eme Slide dans la présentation

ThisComponent.DrawPages(2).Visible = False

Si vous souhaitez réafficher le Slide:

ThisComponent.DrawPages(2).Visible = True

Comment dupliquer une page dans la présentation ?

Auteurs : Silkyroad ,

La macro ci dessous duplique la 3eme page de la présentation

Sub DupliqueSlideImpress Dim oDoc As Object

oDoc = ThisComponent 'Duplique la 3eme page dans le même fichier oDoc.Duplicate(oDoc.DrawPages(2))

End Sub

Remarque:Le nouveau Slide est systématiquement placé à droite du Slide copié et nommé en fonction de sa position dans laprésentation.Dans notre exemple la nouvelle page va être nommée "Page 4" et les autres pages seront automatiquement renomméesen conséquence.

Comment créer une présentation dynamiquement ?

Auteurs : Silkyroad ,

Cet exemple nécessite d'être connecté à internet afin de récupérer l'image qui va s'afficher dans la présentation.

Sub CreerPresentation Dim oDoc As Object , oPage As Object Dim Arg() As Variant 'Creation présentation oDoc = StarDesktop.loadComponentFromURL( "private:factory/simpress", "_blank", 0, Arg() ) '--- 'Spécifie la premiere page (qui est automatiquement créée en même 'temps que la nouvelle présentation).

Page 88: Fa q Open Office

- 88 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oPage = oDoc.DrawPages.getByIndex(0) 'Renomme la page oPage.Name = "DVP 1" AjoutImage ( oDoc , oPage , "http://www.developpez.com/template/logo.gif" , _ 6500 , 3500 , 500 , 500 ) AjoutTexte ( oDoc , oPage , "Bienvenue à vous !" , _ 14000 , 2500 , 7000 , 6000 , RGB(235,235,180) ) '--- '--- Ajoute une deuxième page --- oPage = oDoc.DrawPages.insertNewByIndex(1) '(1) correspond à l'index de la 2eme page oPage.Name = "DVP 2" AjoutImage ( oDoc , oPage , "http://www.developpez.com/template/logo.gif" , _ 6500 , 3500 , 500 , 500 ) AjoutTexte ( oDoc , oPage , "J'espère que cet exemple vous aura aidé..." , _ 14000 , 3000 , 7000 , 6000 , RGB(235,235,180) ) '--- 'Démarre la présentation en mode plein ecran oDoc.Presentation.StartEnd Sub

Function AjoutImage( oCmp As Object , oPge As Object , Fichier As String , Largeur As Long , _ Hauteur As Long , Verti As Long , Horiz As Long ) Dim oImage As Object Dim oSize As New com.sun.star.awt.Size Dim oPos As New com.sun.star.awt.Point '--- insère une image, la redimensionne et la positionne et la page --- '(Cet exemple nécessite d'être connecté à internet pour récupérer l'image) oImage = oCmp.createInstance("com.sun.star.drawing.GraphicObjectShape") oImage.GraphicURL = ConvertToURL(Fichier) 'Ajoute l'image oPge.Add(oImage)

'Définit la taille oSize.Width = Largeur oSize.Height = Hauteur oImage.Size = oSize

'Définit la Position oPos.x = Horiz oPos.y = Verti oImage.Position = oPosEnd Function

Function AjoutTexte( oCmp As Object , oPge As Object , leTexte As String , Largeur As Long , _ Hauteur As Long , Verti As Long , Horiz As Long , Couleur As Long) Dim oShape As Object Dim oSize As New com.sun.star.awt.Size Dim oPos As New com.sun.star.awt.Point '--- insère une zone de texte , la redimensionne et la positionne et la page --- oShape = oCmp.createInstance("com.sun.star.drawing.TextShape")

'Définit la taille oSize.Width = Largeur oSize.Height = Hauteur

Page 89: Fa q Open Office

- 89 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oShape.Size = oSize

'Définit la Position oPos.x = Horiz oPos.y = Verti oShape.Position = oPos

'Définit la couleur de fond pour la zone de texte oShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID oShape.FillColor = Couleur 'Ajoute la zone de texte oPge.Add(oShape)

'insère le texte oShape.getText().setString( leTexte ) oShape.getText().CharHeight = 40 'taille caractèresEnd Function

Comment revenir sur la première diapo lorsque l'on est arrivé à la fin de la présentation ?

Auteurs : Silkyroad ,

Menu DiaporamaParamètres du diaporamaSélectionnez l'option "Type" = AutoIndiquez la durée 00:00:00Cliquez sur le bouton "OK" pour valider.

Comment faire pour ne pas afficher les entêtes et pieds de page sur la première diapo ?

Auteurs : Silkyroad ,

Dans une présentation, la première diapo est souvent utilisée comme page d'accueil. Il est parfois utile de masquer lesinformations apparaissant dans les entêtes et pieds de page de cette première diapo, par soucis d'esthétique.Menu AffichageEn-têtes et pieds de pageOnglet "Diapo"Cochez par exemple l'option "Numéro de diapo" pour numéroter automatiquement les pages.Cocher ensuite l'option "Ne pas afficher sur la première diapo".Cliquez sur le bouton "Appliquer partout" pour valider.

Est il possible d'intégrer des fichiers son ou vidéo dans une présentation ?

Auteurs : Silkyroad ,

Il est possible de lire des fichiers audios ou vidéos dans une présentation. Ces fichiers multimédias sont associés sousforme de liens externes.Il n'est actuellement pas possible d'incorporer les fichiers multimédias dans un diaporama (OOo 2.1). Vous devrezrecréer le lien si vous déplacez la présentation.Le plus pratique pour distribuer ou déplacer la présentation, est de stocker les fichiers multimédias et .odp dans lemême répertoire.

Page 90: Fa q Open Office

- 90 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC

Comment afficher une boîte de dialogue BASIC ?

Auteurs : Silkyroad ,

Les boîtes de dialogue permettent de créer une Interface utilisateur adaptée à votre projet. Vous pouvez y ajouter descontrôles afin d'effectuer des saisies depuis ce support personnalisé ou pour visualiser des informations.Pour créer une boîte de dialogue:Placez vous dans l'éditeur de macrosFaites un clic droit dans la barre d'onglets des modules, en bas de la page.Sélectionnez l'option "Insérer" dans la liste déroulante.Sélectionnez "Boîte de dialogue BASIC".Placez cette macro dans un Module.

Global oDialog1 As Object

Sub AfficherBoiteDialogue

DialogLibraries.LoadLibrary( "Standard" ) 'Dialog1 est le nom de la Form (Clic droit sur l'objet / propriétés / onglet Général / Nom) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

'Attribue un titre dans la fenêtre odialog1.Title = "Le titre" 'Modifie la couleur de fond de la boîte de dialogue oDialog1.Model.BackgroundColor = RGB(235,235,125)

'Redéfinit les dimensions de la boîte de dialogue oDialog1.Model.Height = 200 'Hauteur oDialog1.Model.Width =400 'Largeur

'Redéfinit les position de la boîte de dialogue à l'écran oDialog1.Model.PositionX = 0 'Position horizontale oDialog1.Model.PositionY = 100 'Position verticale

'Affiche la boîte de dialogue oDialog1.Execute()

End Sub

Pour fermer la boîte de dialogue par macro, utilisez:

Sub FermetureFormBasic 'Ferme la boîte de dialogue oDialog1.endExecute

'Libère les ressources oDialog1.DisposeEnd Sub

Comment adapter les dimensions de la boîte de dialogue à la taille de l'écran ?

Auteurs : Silkyroad ,

Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongDeclare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,ByVal nIndex As Long) As Long

Page 91: Fa q Open Office

- 91 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Private Const Largeur As Long = 8Private Const Hauteur As Long = 10

Sub affichageBoiteDialogue_adapterTailleEcran Dim Hdc As Long , H As Long , V As Long Dim oDialog1 As Object Hdc = GetDC(0)

DialogLibraries.LoadLibrary( "Standard" ) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

H = GetDeviceCaps(Hdc, Largeur) V = GetDeviceCaps(Hdc, Hauteur)-50 iXPos = 0 iYPos = 0

oDialog1.setPosSize(iXPos, iYPos, H, V, com.sun.star.awt.PosSize.POSSIZE)

oDialog1.Execute()

'Ferme la boîte de dialogue oDialog1.endExecute

'Libère les ressources oDialog1.Dispose End Sub

Comment lister le nom des boîtes de dialogues contenues dans le fichier ?

Auteurs : Silkyroad ,

Sub ListerNomsDialogues Dim Tableau() As String Dim i As Integer

Tableau = DialogLibraries.Standard.getElementNames()

For i = 0 To UBound(Tableau) Msgbox Tableau(i) Next iEnd Sub

Comment boucler sur l'ensemble des contrôles de la boîte de dialogue ?

Auteurs : Silkyroad ,

La variable oDialog1 est supposée déclarée en type "Global" lors du lancement de la boîte de dialogue.

Sub BoucleControles Dim Tableau() Dim i As Integer Tableau = oDialog1.Controls For i = 0 To UBound(Tableau) MsgBox Tableau(i).Model.Name & " --> " & Tableau(i).ImplementationName Next i

Page 92: Fa q Open Office

- 92 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment ajouter un objet dynamiquement dans une boîte de dialogue BASIC ?

Auteurs : Silkyroad ,

Cet exemple crée dynamiquement une listBox dans la boîte de dialogue en cours d'affichage.Ajoutez préalablement un bouton dans la boîte de dialogue et associez y la macro suivante:

Sub AjoutListBox Dim oDialogModel As Object , oListBoxModel As Object Dim NomObj As String Dim i As Integer Dim oActionListener As Object NomObj = "NomListBox" oDialogModel = oDialog1.Model 'Définit le modèle d'objet à ajouter (ListBox) 'http://api.openoffice.org/docs/common/ref/com/sun/star/awt/module-ix.html oListBoxModel = oDialogModel.createInstance( "com.sun.star.awt.UnoControlListBoxModel" ) With oListBoxModel .Name = NomObj .PositionX = 80 'position horizontale .PositionY = 10 'position verticale .Width = 50 'largeur .Height = 100 'hauteur End With 'Ajoute la ListBox dans la boîte de dialogue oDialogModel.insertByName( NomObj , oListBoxModel )

For i = 1 To 10 'Ajout des données dans la ListBox oDialog1.getControl( NomObj ).AddItem ("Donnée" & i , i - 1 ) Next i 'Association des évènements à l'objet créé dynamiquement oActionListener = createUnoListener("ListBox_", "com.sun.star.awt.XActionListener") oDialog1.getControl( NomObj ).addActionListener( oActionListener ) End Sub

'--- Les évènements de la ListBoxSub ListBox_disposing(oEvent)End Sub

'Affiche le contenu de la ligne sélectionnée lors d'un double clicSub ListBox_actionPerformed(oEvent) MsgBox oEvent.Source.SelectedItem & " Ligne: " & oEvent.Source.SelectedItemPos + 1End Sub

Page 93: Fa q Open Office

- 93 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Les cases à cocher: CheckBox

Comment identifier le statut d'une case à cocher ?

Auteurs : Silkyroad ,

Sub StatutCheckBox Dim oCheck As Object 'Définit la case à cocher dans la boîte de dialogue oCheck = oDialog1.getControl("CheckBox1") 'Vérifie le statut: Select Case oCheck.State Case 0 'Attribue un texte dans le Label de la case à cocher oCheck.Label = "Décoché" MsgBox "Décoché" Case 1 oCheck.Label = "Coché" MsgBox "Coché" Case 2 'La propriété "Statut triple" doit être paramétrée à vrai 'Pour attribuer ce statut par macro, utilisez: 'oDialog1.getControl("CheckBox1").Model.TriState = True oCheck.Label = "Null" MsgBox "Null" End SelectEnd Sub

Une autre possibilité en utilisant le gestionnaire d'évènement:

Sub StatutCheckBox_V02(Event As Object) Dim oCheck As Object oCheck = Event.Source 'Vérifie le statut: Select Case oCheck.State Case 0 'Attribue un texte dans le Label de la case à cocher oCheck.Label = "Décoché" MsgBox "Décoché" Case 1 oCheck.Label = "Coché" MsgBox "Coché" Case 2 'La propriété "Statut triple" doit être paramétrée à vrai 'Pour attribuer ce statut par macro, utilisez: 'oDialog1.getControl("CheckBox1").Model.TriState = True oCheck.Label = "Null" MsgBox "Null" End SelectEnd Sub

Page 94: Fa q Open Office

- 94 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Le contrôle picto: ImageControl

Comment choisir un fichier image sur le disque et l'afficher dans la boîte de dialogue ?

Auteurs : Silkyroad ,

Cet exemple nécessite d'insérer une contrôle Picto dans la boîte de dialogue BASIC.

Sub AffichageImage Dim oImage As Object Dim Fichiers() As Variant Dim oFilePicker As Object 'Définit le contrôle Picto oImage = oDialog1.getControl( "ImageControl1" ) 'Définit la boîte de dialogue qui va permettre de sélectionner un fichier oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" ) 'Définit les types de fichiers à afficher dans la fenêtre de recherche oFilePicker.appendFilter( "FichiersImage (bmp, gif, jpg)", "*.bmp;*.gif;*.jpg" ) 'Définit un titre. oFilePicker.setTitle( "Sélectionnez un fichier:" ) 'Si un fichier a été sélectionné ... If oFilePicker.Execute() Then Fichiers = oFilePicker.getFiles()

'Pour récupérer le chemin du fichier sélectionné. 'MsgBox ConvertFromURL(Fichiers(0)) '--- Affichage de l'image ----- oImage.Model.ImageURL = ConvertToURL( Fichiers(0) ) '------------------------------ Else MsgBox "Opération annulée" End If

End Sub

Comment déplacer un objet ImageControl dans une boîte dialogue BASIC ?

Auteurs : Silkyroad ,

Cet exemple montre comment donner l'effet de mouvement à un contrôle image placé dans la boîte de dialogue.La boîte de dialogue est nommé "Dialog1".Ajoutez un objet image nommé "ImageControl1" et un CommandButton nommé "CommandButton1".Placez l'image de votre choix dans l'objet image: Clic droit sur le contrôle / Propriétés / Onglet "général" / Image.(Privilégiez une image simple et de petite taille pour améliorer l'effet visuel).Associez la macro "DeplacementImage" à l'évènement "lors du déclenchement" du CommandButton: Clic droitsur le contrôle / Propriétés / Onglet "évènements" / Cliquez sur le bouton "Assigner" / Sélectionnez la macro"DeplacementImage" / Cliquez sur le bouton OK dans toutes les fenêtres ouvertes.

Global oDialog1 As Object

Sub AfficherBoiteDialogue

DialogLibraries.LoadLibrary( "Standard" ) 'Dialog1 est le nom de la Form (Clic droit sur l'objet / propriétés / onglet Général / Nom) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

Page 95: Fa q Open Office

- 95 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Masque l'objet image nommé "ImageControl1" au démarrage oDialog1.getControl("ImageControl1").Visible = False

'Modifie la couleur de fond de la boîte de dialogue oDialog1.Model.BackgroundColor = RGB(200,235,225)

'Redéfinit les dimensions de la boîte de dialogue oDialog1.Model.Height = 300 'Hauteur oDialog1.Model.Width = 330 'Largeur 'Affiche la boîte de dialogue oDialog1.Execute()

End Sub

Sub DeplacementImage Dim oImage As Object Dim x As Integer 'Masque le bouton de lancement oDialog1.getControl("CommandButton1").Visible = False

'Définit l'objet image oImage = oDialog1.getControl("ImageControl1")

'définit la position initiale With oImage .Visible = True .Model.PositionX = 30 .Model.PositionY = 25 .Model.Height = 40 .Model.Width = 50 End With

'Déplacement de l'image dans la boite de dialogue Basic With oImage For x = 1 To 30 .Model.PositionX = .Model.PositionX + x .Model.PositionY = .Model.PositionY + x .Model.Height = .Model.Height + (x * 2) .Model.Width = .Model.Width + (x * 2) Wait (40) Next x .Visible = False End With

'Réaffiche le bouton de lancement oDialog1.getControl("CommandButton1").Visible = True End Sub

Page 96: Fa q Open Office

- 96 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Les zones de liste: ListBox

Comment remplir une ListBox en utilisant les données contenues dans une colonne ?

Auteurs : Silkyroad ,

Global oDialog1 As Object

Sub AfficherBoiteDialogue_RemplissageListBox Dim lesCellules As Object , Plage As Object Dim Cellule As Object Dim X As Long

DialogLibraries.LoadLibrary( "Standard" ) 'Dialog1 est le nom de la Form (Clic droit sur l'objet / propriétés / onglet Général / Nom) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

'Indique la colonne A dans la feuille Colonne = ThisComponent.Sheets("Feuille1").Columns(0) lesCellules = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges") lesCellules.insertByName("",Colonne) Plage = lesCellules.Cells.createEnumeration

'Boucle sur les cellules de la colonne A. While Plage.hasMoreElements Cellule = Plage.nextElement

'--- Remplissage de la ListBox: 'AddItem (Donnée à ajouter , Position dans ListBox ) '0 correspond à la 1ere ligne de la ListBox oDialog1.getControl("ListBox1").AddItem (Cellule.String, X ) '----------------------------- X = X + 1 Wend

'Affiche la boîte de dialogue oDialog1.Execute()

End Sub

Comment récupérer l'élément sélectionné dans la ListBox ?

Auteurs : Silkyroad ,

Sub LireContenuLigneSelectionneeDim j As Integer

'Récupère la position de l'élément sélectionné.j = oDialog1.getControl("ListBox1").getSelectedItemPos()

'Vérifie si un élément de la ListBox est sélectionné'Renvoie -1 si rien n'est sélectionné.If j = -1 Then Exit Sub

MsgBox "Vous avez sélectionné la ligne " & j +1 & " qui contient la donnée: " & _ oDialog1.getControl("ListBox1").SelectedItem

Page 97: Fa q Open Office

- 97 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment boucler sur tous les éléments de la ListBox ?

Auteurs : Silkyroad ,

Sub BoucleElementsListBox Dim i As Integer, X As Integer

i = oDialog1.getControl("ListBox1").getItemCount()

For X = 0 TO i - 1 MsgBox oDialog1.getControl("ListBox1").getItem(X) Next End Sub

Comment remplir une ListBox à partir d'un tableau ?

Auteurs : Silkyroad ,

Sub RemplissageListBox_Par_Tableau Dim Tableau(19) As Integer Dim i As Integer Dim Mini As Integer, Maxi As Integer

'--- Remplissage du tableau à partir de données numériques 'générées de façon aléatoire. Mini = 10 Maxi = 15

'Initialie le générateur de nombres aléatoires Randomize For i = 0 To 19 'Insère un nombre aléatoire entre 10 et 15 dans le tableau Tableau(i) = Int((Maxi - Mini + 1) * Rnd + Mini) Next i '-------------

'Remplissage de la ListBox en utilisant le Tableau oDialog1.getControl("ListBox1").Model.StringItemList = Tableau()End Sub

Comment boucler sur les sélections multiples d'une ListBox ?

Auteurs : Silkyroad ,

Sub BoucleElements_MultiSelection_ListBox Dim Tableau() As Variant Dim i As Integer

Tableau = oDialog1.getControl("ListBox1").SelectedItems

For i = 0 To UBound( Tableau() ) MsgBox Tableau(i) Next i

Page 98: Fa q Open Office

- 98 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

La propriété doit être préalablement paramétrée pour autoriser la multisélection.Cela peut être effectué manuellement dans les propriétés de l'objet ou par macro lors de l'intialisation de la boîte dedialogue:

oDialog1.getControl("ListBox1").Model.MultiSelection = True

Comment supprimer un élément dans la ListBox ?

Auteurs : Silkyroad ,

Cet exemple supprime le premier élément dans la ListBox.

Sub SuppressionElementListBox Dim Obj As Object

'Définit la ListBox dans la boîte de dialogue Obj = oDialog1.GetControl("ListBox1") 'Supprime le 1er élément dans la ListBox Obj.RemoveItems( 0 , 1 )End Sub

Pour supprimer l'élément sélectionné, utilisez:

Sub SuppressionElementSelectionne Dim Obj As Object Dim j As Integer

'Récupère la position de l'élément sélectionné. j = oDialog1.getControl("ListBox1").getSelectedItemPos()

'Vérifie si un élément de la ListBox est sélectionné 'Renvoie -1 si rien n'est sélectionné. If j = -1 Then Exit Sub 'Définit la ListBox dans la boîte de dialogue Obj = oDialog1.GetControl("ListBox1") 'Supprime l'élément sélectionné Obj.RemoveItems( j , 1 )End Sub

Comment changer le type de police dans une ListBox ?

Auteurs : Silkyroad ,

Dim oListBox As Object Dim oFont As Object 'Spécifie la ListBox dans la boîte de dialogue. oListBox = oDialog1.getControl("ListBox1") oFont = oListBox.Model.FontDescriptor 'Définit la nouvelle police

Page 99: Fa q Open Office

- 99 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oFont.Name = "Mistral" 'Modifie la taille de la police oFont.Height = "16" 'Applique le changement de police oListBox.Model.FontDescriptor = oFont

Page 100: Fa q Open Office

- 100 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Les barres de progression: ProgressBar

Comment utilise t'on les barres de progression ?

Auteurs : Silkyroad ,

Sub BarreDeProgression Dim x As Integer Dim oBar As Object 'Définit la barre de progression dans la boîte de dialogue oBar = oDialog1.getControl("ProgressBar1") 'Définit les valeurs mini et maxi de la barre oBar.setRange(0, 1000) 'Attribue une valeur à la barre oBar.setValue(0)

'Boucle pour modifier la valeur de la barre For x = 0 To 1000 Step 10 'Attribue une valeur à la barre oBar.setValue(x) 'Temporisation pour permettre de visualiser la progression Wait 10 '(en millisecondes) Next

End Sub

Page 101: Fa q Open Office

- 101 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Les zones de texte: TextField

Comment lire et écrire dans une zone de texte ?

Auteurs : Silkyroad ,

'Insère la date du jour dans la zone de texte.odialog1.getControl("TextField1").Text = Date

'Lit le contenu de la zone de texteMsgBox oDialog1.getControl("TextField1").getText

Comment changer la mise en forme d'une zone de texte ?

Auteurs : Silkyroad ,

Cet exemple modifie la couleur du texte et la couleur de fond.

Dim Obj As Object 'Définit la zone de texte Obj = oDialog1.GetControl("TextField1") 'Modifie la couleur du texte (Blanc) Obj.Model.TextColor = RGB(255 , 255, 255) 'Modifie la couleur de fond (Noir) Obj.Model.BackgroundColor = RGB(0, 0, 0)

Comment sélectionner la totalité du contenu de la zone de texte ?

Auteurs : Silkyroad ,

Dim oSelection As New com.sun.star.awt.Selection

'Remplit la zone de texte pour le test oDialog1.getControl("TextField2").Text = "Ma chaîne" 'Définit le début de la sélection oSelection.Min = 0 'Définit la fin de la sélection (L'exemple prend en compte tous les caractères 'de la zone de texte). oSelection.Max = Len(oDialog1.getControl("TextField2").Text) 'Applique le focus sur la zone de texte. oDialog1.getControl("TextField2").setFocus 'Sélectionne la zone définie oDialog1.getControl("TextField2").Selection = oSelection

Comment remplacer la chaîne de caractères sélectionnée dans la zone de texte ?

Auteurs : Silkyroad ,

Sub RemplacementSelection Dim Avant As String , Apres As String Dim Cible As String, LaChaine As String Dim NouvelleChaine As String

Page 102: Fa q Open Office

- 102 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Indique la chaîne qui va remplacer la sélection NouvelleChaine = "La description" 'Vérifie si la zone de texte est vide. If odialog1.getControl("TextField1").Text = "" Then Exit Sub 'Vérifier s'il y a une sélection dans la zone de texte If odialog1.getControl("TextField1").SelectedText = "" Then Exit Sub

'Récupère la chaine sélectionnée dans la zone de texte Cible = odialog1.getControl("TextField1").SelectedText 'Récupère le contenu complet de la zone de texte laChaine = odialog1.getControl("TextField1").Text 'Récupère la position de la donnée à remplacer dans la zone de texte Position = Instr ( laChaine , Cible )

If laChaine = Cible Then odialog1.getControl("TextField1").Text = NouvelleChaine Exit Sub End If

'Récupère la position de la chaine avant la sélection Avant = Left ( laChaine , Position - 1 ) 'Récupère la position de la chaine après la sélection Apres = Right ( laChaine , Len ( laChaine) -Len( Cible) - Position + 1 )

'Modifie la zone de texte odialog1.getControl("TextField1").Text = Avant & NouvelleChaine & Apres End Sub

Comment identifier la saisie du clavier dans le TextField et n'autoriser que les données numériques ?

Auteurs : Silkyroad ,

Ajoutez la procédure ci dessous dans un module du fichier Open Office.Créez une zone de texte nommée TextField1 dans la boîte de dialogue.Clic droit sur l'objetPropriétésOnglet EvènementsPour attribuer la macro "UtilisationClavier" à l'évènement "Touche "enfoncée":Cliquez sur le bouton "Assigner" dans la fenêtre "Assignation de macro".Recherchez le module contenant la macro dans l'arborescence de gauche (liste des bibliothéques, et les modules desfichiers OOo ouverts.)Ensuite, sélectionnez la macro "UtilisationClavier" dans la liste de droite.Cliquez sur OK pour valider.Cliquez sur OK dans la fenêtre "Assignation de macro".Fermez la fenêtre "Propriétés TextField".

'Source adaptée: Basic Programmer's Guide DialogsSub UtilisationClavier(Event As Object) Dim Cible As String Dim Msg As String Dim oSelection As New com.sun.star.awt.Selection Select Case Event.KeyCode Case com.sun.star.awt.Key.RETURN Msg = "Touche Entrée"

Case com.sun.star.awt.Key.TAB Msg = "Touche tabultation"

Case com.sun.star.awt.Key.DELETE

Page 103: Fa q Open Office

- 103 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Msg = "Touche suppression"

Case com.sun.star.awt.Key.ESCAPE Msg = "Touche Echap"

Case com.sun.star.awt.Key.DOWN Msg = "Touche Fleche bas"

Case com.sun.star.awt.Key.UP Msg = "Touche Fleche haut"

Case com.sun.star.awt.Key.LEFT Msg = "Touche Fleche gauche"

Case com.sun.star.awt.Key.RIGHT Msg = "Touche Fleche droite"

Case Else Select Case Event.KeyChar 'Si les touches ne correspondent pas au clavier numérique: Case Is < 48, Is > 57 Msg = "Vous devez saisir uniquement des valeurs numériques."

'--- Supprime le contenu le caractère erroné Cible = odialog1.getControl("TextField1").getText odialog1.getControl("TextField1").Text = Left( Cible , Len(Cible) - 1 ) '--- Repositionne le curseur en fin de zone oSelection.Min = Len(odialog1.getControl("TextField1").Text) oSelection.Max = Len(oDialog1.getControl("TextField1").Text) oDialog1.getControl("TextField1").Selection = oSelection End SelectEnd Select

If Msg <> "" Then MsgBox Msg End Sub

Comment identifier quelle zone de texte a pris le focus ?

Auteurs : Silkyroad ,

Vous pouvez utiliser le Listener (gestionnaire d'évènement) XFocusListener pour identifier la prise ou la perte de focussur un contrôle.L'exemple ci dessous applique le gestionnaire d'évènement sur les zones de texte contenues dans la boîte de dialogueDialog1. Chaque objet type "TextField" (UnoEditControl) change ensuite de couleur lorsqu'il prend le focus.

Global oDialog1 As ObjectPrivate oFocusListener As Object

Sub AfficherBoiteDialogue Dim Tableau() Dim i As Integer DialogLibraries.LoadLibrary( "Standard" ) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

'Définit le Listener (gestionnaire d'évènements) oFocusListener = createUnoListener("TextBox_", "com.sun.star.awt.XFocusListener") Tableau = oDialog1.Controls

'Boucle sur les contrôles de la boîte de dialogue BASIC.

Page 104: Fa q Open Office

- 104 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

For i = 0 To UBound(Tableau) 'Identie les TextBox et associe le Listener If Tableau(i).ImplementationName = "stardiv.Toolkit.UnoEditControl" Then _ Tableau(i).addFocusListener( oFocusListener ) Next i 'Affiche la boîte de dialogue BASIC. oDialog1.Execute()

End Sub

'Evenement perte du focusSub TextBox_focusLost( oEvent As Object ) Dim Cible As Object

'Identifie le contrôle Cible = oEvent.Source.Model 'Modifie la couleur de fond du contrôle Cible.Backgroundcolor = RGB(255, 255, 255)End Sub

'Evenement prise du focusSub TextBox_focusGained( oEvent As Object) Dim Cible As Object

'Identifie le contrôle Cible = oEvent.Source.Model 'Modifie la couleur de fond du contrôle Cible.Backgroundcolor = RGB(150, 150, 200)End Sub

Page 105: Fa q Open Office

- 105 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > Les champs Date / Calendriers

Commment transférer la date sélectionnée dans uncontrôle DateField vers une cellule de la feuille de calcul ?

Auteurs : Silkyroad ,

'---'La boîte de dialogue est composée:' d'un objet CommandButton' d'un objet DateField (calendrier) dont le format d'affichage est JJ.MM.AAAA,' et d'une propriété "déroulante" = oui.'---

Option Explicit

Global oDialog1 As Object

Sub AfficheBoiteDeDialogue() DialogLibraries.LoadLibrary( "Standard" ) 'Dialog1 est le nom de la Form '(Clic droit sur l'objet / propriétés / onglet Général / Nom) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 ) '--- Indique la date qui va s'afficher par défaut dans le contrôle "DateField1" oDialog1.getControl("DateField1").Date = 20070101 'AAAAMMJJ

'--- Permet de définir une date mini et maxi utilisable dans le calendrier oDialog1.getControl("DateField1").Model.DateMin = 20070101 oDialog1.getControl("DateField1").Model.DateMax = 20071231 '--- 'Affiche la boîte de dialogue oDialog1.Execute()End Sub

'--- La macro est rattachée au CommandButton de la boite de dialogue ---'La date sélectionnée dans le DateField est insérée dans la cellule A2 de la feuille de calcul.Sub InsertionDate() Dim Feuille As Object Dim oNumberFormats As Variant Dim Loc As New com.sun.star.lang.Locale 'Définit la 1ere feuille du classeur Feuille = ThisComponent.Sheets(0)

oNumberFormats = ThisComponent.NumberFormats 'Insére la date sélectionnée dans la cellule A2 With Feuille.getCellByPosition( 0 , 1 ) 'spécifie le format de la cellule .NumberFormat = oNumberFormats.getStandardFormat( com.sun.star.util.NumberFormat.DATE , Loc ) .Value = CDateFromIso( oDialog1.getControl("DateField1").Date ) End WithEnd Sub

Comment afficher la date du jour dans un contrôle DateField ?

Auteurs : Silkyroad ,

Page 106: Fa q Open Office

- 106 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oDialog1.getControl("DateField1").Date = CDateToISO( Date )

Page 107: Fa q Open Office

- 107 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les boîtes de dialogue BASIC > La sélection de fichiers: FileControl

Comment utiliser l'objet FileControl ?

Auteurs : Silkyroad ,

L'objet FileControl permet d'afficher la boîte de dialogue "Ouvrir" et de sélectionner un fichier.Après avoir choisi un fichier, vous pouvez récupérer le chemin complet en utilisant cette macro:

Sub Main Dim oFichier As Object 'Définit le contrôle "Sélection de fichier" dans la boîte de dialogue BASIC. oFichier = oDialog1.getControl("FileControl1") 'Affiche le texte contenu dans le contrôle (le chemin du fichier sélectionné). MsgBox oFichier.TextEnd Sub

Vous pouvez spécifier un chemin par défaut lors de l'initialisation de la boîte de dialogue BASIC.Si le chemin indiqué n'existe pas, c'est le répertoire courant qui sera affiché par défaut.

Global oDialog1 As Object

Sub AfficherBoiteDialogue

DialogLibraries.LoadLibrary( "Standard" ) oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

'Définit le contrôle "Sélection de fichier" dans la boîte de dialogue. oFichier = oDialog1.getControl("FileControl1") 'Définit le chemin par défaut. 'Si le chemin indiqué n'existe pas c'est le répertoire courant qui est affiché. oFichier.Text = "C:\Documents and Settings\mimi" 'Affiche la boîte de dialogue oDialog1.Execute()

End Sub

Page 108: Fa q Open Office

- 108 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les sauvegardes

Comment sauvegarder un fichier ?

Auteurs : Silkyroad ,

Cet exemple montre comment sauvegarder un classeur.

Sub EnregistrerSousDim Fichier As StringDim Args(0) As New com.sun.star.beans.PropertyValue

Fichier = ConvertToURL("C:\Documents and Settings\michel\dossier\monClasseur.ods")

'****************************************'Propriété pour ajouter un mot de passe lors de l'enregistrement: 'Args(0).Name = "Password" 'Args(0).Value = "123456"

'La liste des propriétés:'http://api.openoffice.org/docs/common/ref/com/sun/star/document/MediaDescriptor.html'*****************************************

ThisComponent.storeAsURL(Fichier, Args())

End Sub

lien : Consultez l'API Guide pour obtenir la liste des propriétes de sauvegarde

Comment enregistrer les modifications ?

Auteurs : Silkyroad ,

ThisComponent.Store

Comment créer une copie de sauvegarde ?

Auteurs : Silkyroad ,

Les copies de sauvegarde permettent l'enregistrement sans modifier le fichier ouvert en mémoire.

Sub Creer_CopieDeSauvegardeDim Fichier As StringDim Args(0) As New com.sun.star.beans.PropertyValue

'--- Ajoute la date du jour dans le nom de la sauvegarde: YYYYMMDD Fichier = _ConvertToURL("C:\Documents and Settings\michel\Sauvegarde " & CDateToIso(Date) & ".ods"

ThisComponent.storeToURL(Fichier,Args())

Page 109: Fa q Open Office

- 109 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment afficher la boîte de dialogue Enregistrer Sous ?

Auteurs : Silkyroad ,

Sub boiteDialogueEnregistrerSous Dim oFrame As Object ,oDisp As Object Dim Array()

oFrame = ThisComponent.CurrentController.getFrame() oDisp = createUnoService("com.sun.star.frame.DispatchHelper") oDisp.executeDispatch(oFrame , ".uno:SaveAs", "", 0 , Array())end Sub

Comment récupérer des informations sur la sauvegarde d'un fichier ?

Auteurs : Silkyroad ,

Sub informations_Sauvegardes

'--- Retrouve le chemin de stockage du fichier ---

'Nota: Renvoie une chaîne vide si le fichier n'est pas enregistréMsgBox ConvertFromURL( ThisComponent.getURL() )'Renvoie chemin complet du fichier'(Renvoie une chaîne vide s'il s'agit d'un document non sauvegardé)MsgBox ConvertFromUrl(ThisComponent.GetLocation)'--------------------------------------------------

'--- Vérifie si le fichier est enregistré sur le disque ---

MsgBox ThisComponent.HasLocation'Renvoie False si le document n'a jamais été sauvegardé '----------------------------------------------------------

'Vérifie si le document contient des modifications non enregistréesMsgBox ThisComponent.isModified'False: pas de modification'True: modifications non enregistrées

End Sub

Comment annuler l'indicateur de modifications ?

Auteurs : Silkyroad ,

Cette procédure permet de spécifier qu'il n'y a pas de modifications non enregistrées dans le fichier.

Sub Annule_IndicationModifications

'Vérifie le statut de l'indicateur de modificationMsgBox ThisComponent.IsModified

'Annule l'indication de modification

Page 110: Fa q Open Office

- 110 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

ThisComponent.setModified(False)

'Vérifie le statut de l'indicateur de modificationMsgBox ThisComponent.IsModified

End Sub

Page 111: Fa q Open Office

- 111 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les répertoires

Comment lister tous les fichiers d'un répertoire depuis Open Office ?

Auteurs : Silkyroad ,

Première méthode:

Sub ListeFichiersDuRepertoire_V01''Liste tous les fichiers d'un répertoire'Les fichiers masqués sont pris en compte'Cet exemple permet aussi de vérifier si le répertoire est vide'Dim Direction As String , Resultat As String

'Indiquez le répertoire cible'(la procédure ne renvoie pas d'erreur si le dossier n'existe pas)Direction=Dir("C:\Documents and Settings\michel\dossier\general\*.*",0)''------'Un autre exemple pour lister uniquement les fichiers de type PDF:'Direction=Dir("C:\Documents and Settings\michel\dossier\general\*.pdf",0)'------

Do While Len(Direction) > 0 Resultat = Resultat & Chr(13) & Direction Direction=Dir()Loop

If Resultat="" then MsgBox "Le répertoire est vide." Else Msgbox Resultat ,,"Liste des fichiers." End IfEnd Sub

Une deuxième solution: Le chemin complet est renvoyé.

Sub ListeFichiersDuRepertoire_V02''Liste tous les fichiers d'un répertoire'Les fichiers masqués sont pris en compte'Cet exemple permet aussi de vérifier si le répertoire est vide'Dim Chemin As String , NomObj As String , Resultat As StringDim oSimpleFileAccess As ObjectDim i As Integer Dim Tableau()

'Attention: La procédure provoque une erreur si le dossier n'existe pas Chemin ="C:\Documents and Settings\michel\dossier\general\" oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" ) 'Transfert la liste des fichiers dans un TableauTableau = oSimpleFileAccess.getFolderContents(ConvertToURL( Chemin ), True )

If UBound(Tableau)= -1 Then MsgBox "Le répertoire est vide." For i = 1 To UBound(Tableau) + 1 NomObj = Tableau( i-1 ) If Not oSimpleFileAccess.isFolder( NomObj ) Then _ Resultat = Resultat & ConvertFromURL( NomObj ) & Chr(13) Next i

Page 112: Fa q Open Office

- 112 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox ResultatEnd Sub

Comment lister les dossiers contenus dans un répertoire ?

Auteurs : Silkyroad ,

Première méthode.Nota: les sous répertoires ne sont pas pris en compte.

Sub listerRepertoires_V01Dim Cible As String , Chemin As String

Chemin ="C:\Documents and Settings\michel\dossier\general\"Cible =Dir(Chemin ,16)

If Cible <> "" Then Do If Cible <>"." And Cible <>".." Then MsgBox Cible '".." et "." correspondent aux dossiers Parent et courant Cible =Dir Loop Until Cible =""End IfEnd Sub

Deuxième possibilité.

Sub listerRepertoires_V02Dim Chemin As String , NomObj As StringDim oSimpleFileAccess As ObjectDim i As Integer Dim Tableau()

Chemin ="C:\Documents and Settings\michel\dossier\general\" oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" ) Tableau = oSimpleFileAccess.getFolderContents(ConvertToURL( Chemin ), True ) For i = 1 To UBound(Tableau) + 1 NomObj = Tableau( i-1 ) If oSimpleFileAccess.isFolder( NomObj ) Then _ MsgBox ConvertFromURL( NomObj ) Next iEnd Sub

Comment vérifier l'existence d'un répertoire ?

Auteurs : Silkyroad ,

Sub VerifieExistenceRepertoire_V01Dim Chemin As String

Chemin = "C:\Documents and Settings\michel\dossierOOo"

If Dir(Chemin,vbDirectory) > "" then MsgBox "Ce dossier existe." Else

Page 113: Fa q Open Office

- 113 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox "Ce dossier n'existe pas."End IfEnd Sub

Une deuxième solution consiste à utiliser la fonction FileExists.

Sub VerifieExistenceRepertoire_V02Dim Dossier As String, urlDossier As String Dossier = "C:\Documents and Settings\michel\dossierOOo" urlDossier = ConvertToURL( Dossier )'Renvoie False ou True MsgBox FileExists( urlDossier )End Sub

Comment créer un nouveau répertoire ?

Auteurs : Silkyroad ,

Sub creerRepertoire'Crée un nouveau dossier nommé "DossierSauvegarde"'Les répertoires parents seront aussi créés s'ils n'existaient pasMkDir "C:\mon projet\DossierSauvegarde\Archives" End Sub

Comment afficher une boîte de dialogue pour sélectionner un dossier ?

Auteurs : Silkyroad ,

Sub selectionRepertoire Dim Dossier As Object Dim Valeur As Integer Dossier = _ CreateUnoService("com.sun.star.ui.dialogs.FolderPicker") Valeur = Dossier.Execute()

If Valeur = 1 Then _ MsgBox ConvertFromUrl(Dossier.getDirectory()) End Sub

Comment lister les répertoires spécifiques d'Open Office (PathSettings) ?

Auteurs : Silkyroad ,

Cet exemple doit être placé dans un classeur Calc: le résultat s'affiche dans la feuille de calcul.

Sub lister_PathSettings Dim j As Integer , i As integer , x As IntegerDim oPathSettings As Object , objProprieteSetInfo As Object Dim Tableau() , TabChemin()Dim objPropriete As Object , Feuille As ObjectDim ValPropriete As String , NomPropriete As String , Chemin As String

Page 114: Fa q Open Office

- 114 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oPathSettings = CreateUnoService( "com.sun.star.util.PathSettings" )

objProprieteSetInfo = oPathSettings.getPropertySetInfo()'Transfert les données dans le tableau Tableau = objProprieteSetInfo.getProperties()

'Spécifie la 1ere feuille du classeurFeuille = ThisComponent.Sheets(0)

'Boucle sur le tableau pour extraire les résultats For i = LBound( Tableau ) To UBound( Tableau ) objPropriete = Tableau( i ) NomPropriete = objPropriete.Name ValPropriete = oPathSettings.getPropertyValue( NomPropriete ) Feuille.getCellByPosition( 0 , x ).setString( NomPropriete ) If Len( ValPropriete ) > 0 Then TabChemin = Split( ValPropriete, ";" ) For j = LBound( TabChemin ) To UBound( TabChemin ) Chemin = ConvertFromURL( TabChemin( j )) Feuille.getCellByPosition( 1 , x ).setString( NomPropriete & " : " & Chemin ) x = x + 1 Next End If x = x + 1 Next i End Sub

Comment ouvrir l'explorateur Windows sur un répertoire précis ?

Auteurs : Silkyroad ,

Sub ouvrirExplorateurWindows() Dim oShell As Object oShell = createUnoService("com.sun.star.system.SystemShellExecute")

'La procédure renvoie un message d'erreur si le répertoire n'existe pasoShell.execute(ConvertToUrl("C:\Documents and Settings\michel\dossier"), "", 0) End Sub

Comment créer un raccourci sur le bureau ?

Auteurs : Silkyroad ,

La procédure crée un raccourci sur le bureau pour le fichier contenant cette macro.

Sub CreerRaccourciBureau() Dim WshShell As Object , Raccourci As Object Dim dirBureau As String

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") WshShell = oObj.createInstance("WScript.Shell") dirBureau = Environ("USERPROFILE") & "\Bureau\" 'adaptez le chemin du bureau

Raccourci = WshShell.createShortcut( dirBureau & "monFichier.lnk") Raccourci.TargetPath = ConvertFromURL( ThisComponent.Location )

Page 115: Fa q Open Office

- 115 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Raccourci.IconLocation = "C:\dating.ico" 'Attribue un icône spécifique au raccourci Raccourci.Save

End Sub

Page 116: Fa q Open Office

- 116 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les fichiers

Comment vérifier l'existence d'un fichier ?

Auteurs : Silkyroad ,

Première méthode:

Sub VerifierExistenceFichier_V01 Dim oSFA As ObjectDim Fichier As String, urlFichier As String

oSFA = createUnoService( "com.sun.star.ucb.SimpleFileAccess" ) Fichier = "C:\Documents and Settings\michel\dossier\nomFichier.txt"

urlFichier = ConvertToURL( Fichier ) If oSFA.exists( urlFichier ) Then MsgBox "Le fichier existe."

End Sub

Cette deuxième méthode utilise la fonction FileExists

Sub VerifierExistenceFichier_V02Dim Fichier As String, urlFichier As String Fichier = "C:\Documents and Settings\michel\dossier\nomFichier.txt" urlFichier = ConvertToURL( Fichier ) MsgBox FileExists( urlFichier )End Sub

Comment copier un fichier sur le disque ?

Auteurs : Silkyroad ,

La procédure crée une copie de fichier vers un autre répertoire.Nota:Le fichier original n'est pas supprimé.

Sub CopierFichierDim Source As String , Destination As StringDim oSFA As Object

Source = ConvertToUrl("C:\monFichier.ods") Destination = ConvertToUrl("C:\Documents and Settings\michel\dossier\monFichier.ods")

oSFA = createUNOService ("com.sun.star.ucb.SimpleFileAccess") oSFA.copy(Source, Destination)End Sub

Comment afficher une boîte de dialogue pour sélectionner un fichier ?

Auteurs : Silkyroad ,

Cette exemple affiche la boîte de dialogue "Ouvrir".Le fichier sélectionné est ensuite ouvert.

Page 117: Fa q Open Office

- 117 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sub selectionFichier_puisOuverture() Dim Fichier As Object , ShExec As Object Dim X As Integer

Fichier = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")'Spécifie le chemin par défaut lors de l'affichage de la boîte de dialogue Fichier.SetDisplayDirectory("C:\Documents and Settings\michel\dossier") 'Affiche la boîte de dialogue "Ouvrir"X = Fichier.Execute()

If X = 1 Then MsgBox ConvertFromURL( Fichier.Files(0) )

'Permet d'ouvrir le fichier sélectionné ShExec = createUnoService("com.sun.star.system.SystemShellExecute") ShExec.execute(Fichier.Files(0), "", 0) End If End Sub

Comment récupérer des informations sur les propriétés des fichiers ?

Auteurs : Silkyroad ,

Il est possible de récupérer certaines informations sur différents types de fichiers, sans les ouvrir.Cet exemple affiche les données qui apparaissent dans l'onglet "Général" lorsque vous faites un clic droit sur un fichier,depuis l'explorateur Windows.

Sub Test() proprietesFichier_getFile "C:\Documents and Settings\mimi\dossier\Nom Classeur.xls" proprietesFichier_getFile "C:\dossier\monAppli.exe" proprietesFichier_getFile "C:\dossier\le fichier.pdf"End Sub

Sub proprietesFichier_getFile( Fichier As String ) Dim oObj As Object , Cible As Object Dim Valeur As Object Dim Resultat As String oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") Cible = oObj.createInstance("Scripting.fileSystemObject") Valeur = Cible.GetFile(Fichier) Resultat = "Chemin : " & Valeur.ParentFolder.Path & Chr(10) & Chr(10) & _ "Chemin court : " & Valeur.shortpath & Chr(10) & Chr(10) & _ "Nom court : " & Valeur.ShortName & Chr(10) & Chr(10) & _ "Date creation : " & CDate( Valeur.DateCreated.Value ) & Chr(10) & Chr(10) & _ "Date derniere modification : " & CDate( Valeur.DateLastModified.Value ) & Chr(10) & Chr(10) & _ "Date dernier acces : " & CDate( Valeur.DateLastAccessed.Value ) & Chr(10) & Chr(10) & _ "Taille fichier : " & Valeur.Size & " octets" & Chr(10) & Chr(10) & _ "Type fichier : " & Valeur.Type & Chr(10) & Chr(10) & _ "Extension fichier : " & Cible.GetExtensionName(Valeur) & Chr(10) & Chr(10) & _ "Nom fichier sans extension : " & Cible.GetBaseName(Valeur) & Chr(10) & Chr(10) & _ "Nom fichier : " & Cible.GetFileName(Valeur) & Chr(10) & Chr(10) & _ "Chemin et nom complet : " & Cible.GetAbsolutePathName(Valeur) MsgBox Resultat

Page 118: Fa q Open Office

- 118 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment retrouver la date et l'heure de création ou de dernière modification d'un fichier ?

Auteurs : Silkyroad ,

La fonction FileDateTime permet de récupérer la date et l'heure de création ou de dernière modification d'un fichier,sans avoir besoin de l'ouvrir:

Sub Main Dim Fichier As String

'La procédure renvoie une erreur si le fichier n'existe pas. Fichier = "C:\repertoire\NomFichier.pdf" MsgBox FileDateTime( Fichier )End Sub

Page 119: Fa q Open Office

- 119 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les filtres

Comment lister le nom des filtres disponibles ?

Auteurs : Silkyroad ,

Sub ListerFiltresConversion()Dim oDesktop As Object , oDoc As Object Dim Fichier As StringDim Args()Dim filtresFact As ObjectDim nomFiltres As VariantDim i As Integer

'--------oDesktop = createUnoService("com.sun.star.frame.Desktop")Fichier = "private:factory/scalc"'Création d'un nouveau tableur pour lister le résultat de la macrooDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args())

'Spécifie le 1ere feuille du classeurFeuille = oDoc.getSheets.getByIndex(0)'-------

'--- Liste les filtres --- filtresFact = createUnoService( "com.sun.star.document.FilterFactory" )

nomFiltres = filtresFact.getElementNames() For i = LBound(nomFiltres) To UBound(nomFiltres) Feuille.getCellByPosition( 0 , i ).String = nomFiltres( i ) Next'-------------------------

'--- Ajuste la taille de la colonne en fonction du contenu ---Feuille.Columns(0).OptimalWidth = true '-------------------------------------------------------------End Sub

Comment créer une copie du classeur au format PDF ?

Auteurs : Silkyroad ,

Le classeur doit être préalablement sauvegardé au format natif.L'exemple va créer un copie au format pdf dans le même répertoire. Si le classeur contient plusieurs onglets, ils seronttous enregistrés, à la suite, dans le même fichier pdf.

Sub Convertir_Calc_Vers_PDFdim ArgsProprietes(2) as new com.sun.star.beans.PropertyValue dim Fichier as string dim oDoc as object

'--- Le fichier Calc doit être préalablement enregistré ---'sinon .URL renvoie une chaîne vide.'----------------------------------------------------------

'Indique le nom de la sauvegarde au format pdf.'(Le fichier pdf sera cré dans le même répertoire que le tableur.)Fichier = _ Left( ThisComponent.URL , Len(ThisComponent.URL) - 4 ) & ".pdf"

'--- Sauvegarde les modifications dans le classeur ---ThisComponent.Store

Page 120: Fa q Open Office

- 120 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'--- Spécifie le filtre de conversion ---ArgsProprietes(0).Name = "FilterName" ArgsProprietes(0).Value = "calc_pdf_Export" ArgsProprietes(1).Name = "CompressMode"ArgsProprietes(1).Value = 1 '--- Crée une copie de sauvegarde au format PDF ---'Remarque: Tous les onglets non vides sont enregistrés à la suite, dans le'même fichier pdf. ThisComponent.storeToUrl( Fichier , ArgsProprietes()) End Sub

Comment créer une copie d'une présentation Impress au format Flash (.swf) ?

Auteurs : Silkyroad ,

Sub Conversion_Impress_Flash Dim ArgsProprietes(1) As new com.sun.star.beans.PropertyValue Dim Fichier As String Fichier = ConvertToURL( "C:\leFichier.swf" )

'--- Spécifie le filtre de conversion --- ArgsProprietes(0).Name = "FilterName" ArgsProprietes(0).Value = "impress_flash_Export"

'--- Crée une copie de sauvegarde au format Flash (.swf) --- ThisComponent.storeToUrl( Fichier , ArgsProprietes()) End Sub

Comment convertir un fichier sxw au format odt par macro ?

Auteurs : Silkyroad ,

Dans la version 1.x, les documents texte étaient créés au format .sxw.Ces formats sont toujours utilisables dans la version 2.x mais vous pouvez aussi les convertir aux formats .odt qui sontle nouveau standard OpenDocument:Pour effectuer la conversion d'un ou plusieurs documents:Menu FichierAssistantsConvertisseur de documentsSélectionnez les types de documents à convertir:Cochez l'option "StarOffice", puis les "Documents texte" et "Classeurs".Cliquez sur le bouton "Suivant".Décochez ou cochez les options qui vous interessent dans la nouvelle fenêtre et paramétrez les différentes zonesd'information.Le champ "Import depuis:" correspond au dossier contenant les fichiers à convertir.Le champ "enregistrer dans:" correspond au dossier de destination pour les nouveaux fichiers convertis.Cliquez sur le bouton "Suivant".La fenêtre de paramétrage s'affiche une nouvelle fois si vous avez choisi de convertir plusieurs types de fichiers(Documents texte et Classeurs).Cliquez sur le bouton "Suivant".Cliquez sur le bouton "Convertir" pour lancer l'opération.Cliquer sur le bouton "Fermer" dans la boite de dialogue.Ouvrez le réperoire de destination que vous avez précédemment indiqué afin de visualiser le résultat de la conversion.

Page 121: Fa q Open Office

- 121 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Vous pouvez aussi effectuer les conversions par macro:cet exemple ouvre un fichier sxw et le convertit au format odt.

Sub Conversion_SXW_Vers_ODT Dim Cible As String , CibleURL As String Dim Fichier As Object Dim Args(0) As New com.sun.star.beans.PropertyValue Dim Args2(2) As New com.sun.star.beans.PropertyValue

'Les arguments pour masquer le fichier pendant le traitement Args(0).Name = "Hidden" 'nom de l'argument Args(0).Value = True 'valeur de l'argument Cible = "C:\essai.sxw" 'Adresse au format URL, du document sxw à convertir CibleURL = convertToURL(Cible) 'Ouverture du document sxw Fichier = StarDesktop.LoadComponentFromURL( CibleURL , "_blank", 0 , Args() ) 'modification de l'adresse en .odt CibleURL = convertToURL( left( Cible, len(Cible)-3 ) + "odt" )

'Les arguments pour enregister le document en .odt Args2(0).Name = "URL" Args2(0).Value = CibleURL Args2(1).Name = "FilterName" Args2(1).Value = "writer8" Args2(2).Name = "SelectionOnly" Args2(2).Value = True

'Sauvegarde du fichier Fichier.storeAsURL( CibleURL , Args2() ) 'Fermeture Fichier.Close( True ) End Sub

Comment convertir chaque feuille d'un classeur au format CSV ?

Auteurs : Silkyroad ,

L'exemple boucle sur les feuilles du classeur et enregistre chacune au format CSV, dans le même répertoire que lefichier original.Le classeur original est supposé deja enregistré sur le disque.

Dim oDoc As Object Dim i As Integer Dim EnrArgs(1) As New com.sun.star.beans.PropertyValue Dim Chemin As String , NomFeuille As String

oDoc = ThisComponent

' Boucle sur les feuilles For i = 1 to oDoc.Sheets.Count NomFeuille = oDoc.Sheets(i-1).Name ' Active la feuille ThisComponent.CurrentController.ActiveSheet = oDoc.Sheets(i-1)

Chemin = Left(oDoc.URL, Len(oDoc.URL) - Len(Dir(ConvertFromURL(oDoc.URL)))

Page 122: Fa q Open Office

- 122 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'--- Spécifie le filtre de conversion --- EnrArgs(0).Name = "FilterName" EnrArgs(0).Value = "Text - txt - csv (StarCalc)"

' Sauvegarde dans le même répertoire que le classeur original oDoc.storeToURL( ConvertToURL(Chemin & NomFeuille & ".csv"), EnrArgs()) Next

Page 123: Fa q Open Office

- 123 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > L'éditeur de macros

Comment lister le nom des modules contenus dans le document ?

Auteurs : Silkyroad ,

Cette procédure permet de récupérer le nom des modules contenus dans le fichier.

Sub ListeModules Dim Tableau() Dim I As Integer

Tableau()= ThisComponent.BasicLibraries.getByName("Standard").ElementNames

For I = 0 To UBound(Tableau()) MsgBox Tableau(I) Next I End Sub

Comment récupérer le contenu d'un module ?

Auteurs : Silkyroad ,

Sub RecupererContenuModule MsgBox ThisComponent.BasicLibraries.getByName("Standard").getByName("Module1")

'Deuxième possibilité MsgBox ThisComponent.LibraryContainer.getByName("Standard").ModuleContainer. _ getByName("Module1").SourceEnd Sub

Comment afficher l'éditeur de macros par macro ?

Auteurs : Silkyroad ,

Sub AfficherEditeurMacros() Dim oDisp As Object Dim Args() oDisp = createUnoService( "com.sun.star.frame.DispatchHelper" ) oDisp.executeDispatch( StarDesktop, "slot:30783", "", 0, Args() ) End Sub

Comment créer dynamiquement un nouveau module et une macro ?

Auteurs : Silkyroad ,

Ces procédures permettent de créer un nouveau module et d'y insérer une macro dynamiquement.Remarque:Si l'éditeur de macro est ouvert lorsque vous lancez la procédure: fermez puis réouvrez le afin de visualiser le résultat.

Sub CreationNouveauModule Dim Librairie As Object

Page 124: Fa q Open Office

- 124 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Librairie = ThisComponent.BasicLibraries.GetByName("Standard") Librairie.InsertByName("NomModule", "REM Test") End Sub

Un autre exemple

Sub CreerModule_Et_MacroDynamiquement Dim laMacro As String Dim Librairie As Object Librairie = ThisComponent.BasicLibraries.GetByName("Standard") 'Prépare le contenu de la nouvelle macro laMacro = Chr(13) & Chr(13) & "Sub Test" & Chr(13) laMacro = laMacro & "MsgBox " & Chr(34) & "Coucou" & Chr(34) & Chr(13) laMacro = laMacro & "End Sub"

'Crée le module et la macro Librairie.InsertByName("NomModule2", laMacro)

End Sub

Comment supprimer un module ?

Auteurs : Silkyroad ,

Cet exemple permet de supprimer un module nommé "Module1".Remarque:Si l'éditeur de macro est ouvert lorsque vous lancez la procédure: fermez puis réouvrez le afin de visualiser le résultat.

Sub SupprimerModule Dim Librairie As Object Librairie = ThisComponent.BasicLibraries.getByName("Standard") Librairie.removeByName("Module1")End Sub

Important:Cette macro, placée dans le module à supprimer, provoque un plantage du fichier.

Page 125: Fa q Open Office

- 125 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Automation

Comment utiliser OpenOffice avec Delphi ?

Auteurs : Atlantis ,

Consultez la FAQ DELPHI

Comment utiliser OpenOffice avec VB et VBA ?

Auteurs : Silkyroad ,

Consultez le tutoriel: piloter Open Office depuis Excel

Comment récupérer la valeur d'une constante ?

Auteurs : Silkyroad ,

Lorsque vous pilotez OpenOffice depuis VB ou VBA, il n'est pas possible d'utiliser directement les constantes del'application OOo.Vous devez remplacer la constante pas sa valeur afin de faire fonctionner vos procédures.Par exemple, ces lignes OpenOffice:

ArgsDoc(0).Name = "MacroExecutionMode"ArgsDoc(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN

seront utilisées ainsi lors d'un pilotage depuis VB ou VBA:

ArgsDoc(0).Name = "MacroExecutionMode"ArgsDoc(0).Value = 4

Pour connaitre la valeur d'une constante, vous pouvez créer une macro dans OpenOffice comme dans l'exemple cidessous:

Sub MainMsgBox com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARNEnd Sub

Comment masquer OpenOffice pendant le traitement d'une macro VB/VBA ?

Auteurs : Silkyroad ,

Dans l'exemple suivant, OpenOffice reste masqué pendant le déroulement de la procédure:La macro VB/VBA ouvre un classeur OOo pour insérer une donnée dans la cellule A1, puis referme le fichier.

Option Explicit

Sub Test() Dim serviceManager As Object, Desktop As Object, Document As Object Dim Fichier As String Dim Args(0) As Object

Page 126: Fa q Open Office

- 126 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim T As Date 'Appel fonction de conversion Fichier = ConvertToURL("C:\LeClasseur.ods") 'Création d'une instance Open Office Set serviceManager = CreateObject("com.sun.star.ServiceManager") Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop") '-------------- 'Tableau pour les paramètres du mode masqué Set Args(0) = _ serviceManager.Bridge_getStruct("com.sun.star.beans.PropertyValue") 'Arguments Open Office pour masquer le fichier Args(0).Name = "Hidden" 'nom de l'argument Args(0).Value = True 'valeur de l'argument 'Ouverture du fichier Set Document = _ Desktop.loadComponentFromURL(Fichier, "_blank", 0, Args()) '-------------- 'Ecrit dans la cellule A1 de la feuille Document.getSheets.getByName("Feuille1").getCellRangeByName("A1").Value = 1234 'Enregistre les modifications Document.store DoEvents '-------- 'ajoute une temporisation de 2 secondes pour empécher que le fichier 'ne se ferme avant la fin de l'enregistrement. T = Timer + 2: Do Until Timer > T: DoEvents: Loop '-------- 'Fermeture du fichier: Document.Close (True) MsgBox "Opération terminée"End Sub

Function ConvertToURL(Fichier As String) 'fonction de conversion au format URL Dim Cible As String Cible = Fichier Cible = Replace(Cible, "\", "/") ConvertToURL = "file:///" & CibleEnd Function

Page 127: Fa q Open Office

- 127 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les chaines de caractères

Quelles sont les fonctions disponibles pour manipuler les chaînes de caractères ?

Auteurs : Silkyroad ,

Compter le nombre de caractères dans une chaine.Utilisez la fonction Len

MsgBox Len("Developpez") 'renvoie 10

Extraire une portion de caractères en partant de la gauche.Utilisez la fonction Left

'Renvoie les 3 premiers caractères d'un texteMsgBox Left("Developpez", 3) 'renvoie "Dev"

Extraire une portion de caractères en partant de la droite.Utilisez la fonction Right

'Renvoie les 3 derniers caractères d'un texteMsgBox Right("Developpez", 3) ' renvoie "pez"

Extraire une chaîne de caractères à l'intérieur d'une autre chaîne.Utilisez la fonction Mid

'5 est la position du caractère qui marque le début de la partie à extraire'et 2 correspond au nombre de caractères à renvoyer)MsgBox Mid("Vendredi", 5, 2) ' renvoie "re"

Si vous souhaitez récupérer toute la chaîne à partir du 5eme caractère, n'indiquez pas le dernier argument.

MsgBox Mid("Vendredi", 5) 'Renvoie "redi"

Renvoyer la position d'une chaîne dans une autre chaîne.Utilisez la fonction InStr.Remarque: cette fonction renvoie 0 si auncune occurence n'est trouvée.

'Renvoie la position de la première occurrence d'une chaîne ("e")MsgBox InStr("Developpez", "e") 'renvoie 2

Les arguments de la fonction : InStr(start, string1, string2, compare)Le premier argument "start" (facultatif) permet de définir la position de départ de la recherche.

MsgBox InStr(1, "Developpez", "e") 'renvoie 2

Un autre exemple

Page 128: Fa q Open Office

- 128 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim x As Integerx = InStr(1, "Developpez", "e") + 1MsgBox InStr(x, "Developpez", "e") 'renvoie 4

string1 contient la chaîne de caractères qui va être contrôlée.String2 contient la chaîne à rechercher.La recherche est sensible à la casse si le dernier argument "compare" (facultatif) est égal à 0, ou omis.(Casse: Signifie que la recherche n'est pas sensible aux majuscules et aux minuscules)

MsgBox InStr(1, "Developpez", "Z", 0) 'renvoie 0MsgBox InStr(1, "Developpez", "z", 0) 'renvoie 10

La recherche n'est pas sensible à la casse si le dernier argument "compare" est égal à 1

MsgBox InStr(1, "Developpez", "z", 1) 'renvoie 10MsgBox InStr(1, "Developpez", "Z", 1) 'renvoie 10

Nota:La fonction Instr peut aussi servir à contrôler si le contenu d'une chaîne est égal à un des mots "cible" défini dans laprocédure.Cet exemple vérifie si le contenu de la cellule A1 est égal à un des 3 mots indiqué dans la variable "Cible".(Ne fonctionne pas si la cellule A1 est vide).

Vba

Sub RechercheMultiple Dim Cible As String, strCellule As String Dim Feuille As Object

Feuille = ThisComponent.getSheets.getByName("Feuille1") 'Récupère le contenu de la cellule A1 strCellule = Feuille.getCellRangeByName("A1").getString

Cible = "engrenage,reducteur,courroie" If InStr(Cible, strCellule) = 0 Then MsgBox "Non" Else MsgBox "Oui" End IfEnd Sub

Remplacer des caractères dans une chaîne.

'mimi est transformé en fifiMsgBox Join(Split("mimi", "m"), "f")

Passer l'ensemble d'une chaîne en majuscule.Utilisez la fonction UCase

MsgBox UCase("Developpez")

Passer l'ensemble d'une chaîne en minuscule.Utilisez la fonction LCase

Page 129: Fa q Open Office

- 129 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox LCase("Developpez")

Extraire un nombre placé au début d'une chaîne de caractère.Utilisez la fonction Val

Dim Chaine As StringChaine = " 21ieme siècle"MsgBox Val(Chaine) ' renvoie 21

Chaine = " siècle 21"MsgBox Val(Chaine) ' renvoie 0

Chaine = "123,456"MsgBox Val(Chaine) ' renvoie 123456

Chaine = "123.456"MsgBox Val(Chaine) ' renvoie 123,456

Supprimer tous les espaces à gauche et à droite d'une chaîne de caractères.Utilisez la fonction Trim

MsgBox Trim(" Un essai ")

Utilisez la fonction LTrim pour supprimer tous les espaces à gauche d'une chaîne de caractères.Utilisez la fonction RTrim pour supprimer tous les espaces à droite d'une chaîne de caractères.Créer une jonction entre les chaînes contenues dans un tableau.Utilisez la fonction Join.Join (Text As String Array, delimiter)Text As String Array est le tableau à une dimension contenant les chaînes à joindre.Delimiter (Facultatif) spécifie le séparateur à utiliser entre les éléments du tableau, lors de la jonction. Les élémentssont séparés par un espace si l'argument Delimiter n'est pas spécifié.

Dim Tableau(2) As String

Tableau(0) = "Chaine01"Tableau(1) = "Chaine02"Tableau(2) = "Chaine03"

'Regroupe les chaînes du tableau, séparés par un point virgule ";"MsgBox Join(Tableau, ";")

'Regroupe les chaînes du tableau sans séparateurMsgBox Join(Tableau, "")

'Les éléments sont séparés par un espace si l'argument Delimiter n'est'pas spécifié.MsgBox Join(Tableau)

'Regroupe les chaînes du tableau et ajout d'un saut de ligne'entre chaque élément.

Page 130: Fa q Open Office

- 130 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MsgBox Join(Tableau, Chr(10))

Comment extraire les données séparées par un espace dans une chaine de caractères ?

Auteurs : Silkyroad ,

Sub ExtraireChaine Dim Tableau() As String Dim i As Integer

'La fonction Split permet d'extraire les données d'une chaine en fonction 'du séparateur spécifié. (espace dans l'exemple) Tableau = Split("Ma Chaine de caractères", " ")

'Boucle dans le tableau pour visualiser le résultat For i = LBound(Tableau) To UBound(Tableau) MsgBox Tableau(i) Next iEnd Sub

Comment extraire les données numériques dans une chaîne alphanumérique ?

Auteurs : Silkyroad ,

Les deux exemples proposés extraient (de la cellule A1) les données numériques contenues dans une chaînealphanumérique.Un première possibilité:La procédure fonctionne même si les sous chaînes alphas et numériques sont accolées.

Sub extraireValeursNumeriquesCellule_V01() Dim i As Integer Dim Cible As String Dim Nombre As Double

'Définit la cellule A1 dans la 1ere feuille du classeur Cible = ThisComponent.Sheets(0).getCellRangeByName("A1").String 'pour que fonction Val puisse reconnaitre les décimales Cible = Join(Split( Cible , ","), ".") 'pour gérer deux nombres qui se suivent Cible = Join(Split( Cible , " "), "x")

For i = 1 To Len(Cible) If IsNumeric( Mid( Cible, i, 1) ) Then Nombre = Val( Mid( Cible, i, Len( Cible ) - i + 1 ) ) MsgBox Nombre i = i + Len( Str(Nombre) ) - 1 End If Next End Sub

Une deuxième possibilité:Cette version est utilisable uniquement si chaque donnée numérique est séparée par un espace.

Sub extraireValeursNumeriquesCellule_V02() 'Cette version est utilisable uniquement si chaque élément de la chaine est

Page 131: Fa q Open Office

- 131 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'séparé par un espace. Dim Tableau() As Variant Dim i As Integer Dim Cible As String 'Définit la cellule A1 dans la 1ere feuille du classeur Cible = ThisComponent.Sheets(0).getCellRangeByName("A1").String

Tableau = Split( Cible , " ")

'Boucle dans le tableau pour visualiser le résultat For i = LBound(Tableau) To UBound(Tableau) 'Vérifie si l'élément du tableau est une valeur numériqe If IsNumeric(Tableau(i)) Then MsgBox Tableau(i) Next i

End Sub

Comment scinder les phrases longues sans couper les mots ?

Auteurs : Silkyroad ,

Cette fonction permet d'appliquer un retour à la ligne dans une chaîne, tous les 30 caractères, sans couper les mots.

Sub Test MsgBox ScinderChaine ("Le club Developpez.com est le principal site d'entraide des développeurs francophones avec jusqu'à 70 000 " & _ "visites par jour. Le club est fréquenté par 800 000 développeurs (développeurs, chefs de projets, DBA,...) tous les mois. Le club" & _ " vous apporte gratuitement une multitude d'avantages : newsletter, magazine, actualités, cours, tutoriels, articles, FAQ's, tests, " & _ "comparatifs, débats, sondages, outils, sources, composants et exemples de codes, les BLOGs des développeurs, et enfin la TV des " & _ "développeurs. Le club est animé bénévolement par tous les membres du club et en particulier par l'équipe de rédaction du club. " & _ "L'inscription est facile, rapide et gratuite : Inscrivez-vous." , 30 )End Sub

Function ScinderChaine( DonneesDeBase As String , NbCar As Integer ) Dim Cible As String Dim Resultat As String , Chaine As String Dim i As Integer , X As Integer Cible = DonneesDeBase For i = 1 To Len(Cible) X = InStr( NbCar , Cible, " " ) If X = 0 Then Chaine = Cible Resultat = Resultat & Chaine Exit For End If Chaine = Mid(Cible, 1, X) Resultat = Resultat & Chaine & Chr(10) Cible = Mid( Cible, Len(Chaine) + 1 ) Next

Page 132: Fa q Open Office

- 132 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

ScinderChaine = ResultatEnd Function

Comment utiliser la fonction Switch afin de renvoyer une donnée associée à une expression ?

Auteurs : Silkyroad ,

Switch permet d'évaluer l'expression transférée dans la fonction, puis de renvoyer la donnée associée.Une erreur d'exécution se produit si l'expression n'est pas trouvée.

Sub ExempleSwitch 'Attention la procédure est sensible aux majuscules et minuscules MsgBox Correspondance( "Jour" )End Sub

Function Correspondance (sName As String) As String On Error GoTo Fin Correspondance = Switch(sName = "Jour", "riri" , sName = "Nuit", "fifi" , sName = "Astreinte", "loulou") Exit Function Fin: Correspondance = "Indéterminé"End Function

Page 133: Fa q Open Office

- 133 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > L'interaction avec d'autres applications

Comment créer un mail par macro ?

Auteurs : Silkyroad ,

Sub EnvoiMail Dim Fichier1 As String , Fichier2 As String Dim oSystemMail As Object Dim oMailClient As Object Dim oMailMessage As Object Dim lgMailClientFlags As Long lgMailClientFlags = com.sun.star.system.SimpleMailClientFlags.NO_USER_INTERFACE 'Définit les pièces jointe Fichier1 = ConvertToURL( "C:\Fichier test.ods" ) Fichier2 = ConvertToURL( "C:\Documents and Settings\mimi\dossier\Rapport.odt" )

oSystemMail = createUnoService( "com.sun.star.system.SimpleSystemMail" ) oMailClient = oSystemMail.querySimpleMailClient() oMailMessage = oMailClient.createSimpleMailMessage() With oMailMessage 'Destinataire 'Nota1: 'Solution non trouvée pour définir plusieurs destinataires dans ce champ .setRecipient( "[email protected]" ) 'En copie conforme .setCcRecipient( Array("[email protected]" , "[email protected]") ) 'Le sujet .setSubject( "Rapport mensuel " & Date ) 'Les fichiers attachés .setAttachement( Array( Fichier1 , Fichier2 ) ) End With

'Nota2: 'Solution non trouvée pour ajouter du texte dans le corps du message. oMailClient.sendSimpleMailMessage( oMailMessage, lgMailClientFlags )

End Sub

Un autre exemple qui permet d'intégrer du texte dans le corps du message, mais sans pièce jointe:

Sub CreerMail_SystemShellExecute() Dim oShell As Object oShell = createUnoService("com.sun.star.system.SystemShellExecute")

'%0D%0A permet d'insérer un saut de ligne dans le corps du message. oShell.Execute("mailto:[email protected]" & _ "?subject=test envoi mail" & _ "&Body=Bonjour,%0D%0AJe vous confirme notre rendez vous de la semaine prochaine.%0D%0A%0D%0ACordialement" & _ "%0D%0A" & Environ("username") , "", 0)End Sub

Utilisez cette syntaxe pour définir des multi destinataires:

Page 134: Fa q Open Office

- 134 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

mailto:[email protected];[email protected]

Comment envoyer un mail en pilotant Outlook ?

Auteurs : Silkyroad ,

Sub EnvoiMail_Outlook( ) Dim oObj As Object , AppOutlook As Object Dim oMail As Object oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") AppOutlook = oObj.createInstance("Outlook.Application")

oMail = AppOutlook.CreateItem(0) With oMail .To = "[email protected]" .Subject = "Rapport mensuel " & Date .Body = "Bonjour," & Chr(10) & _ "Je vous souhaite une bonne lecture." & Chr(10) & Chr(10) & _ "Cordialement" & Chr(10) & _ Environ("username") & Chr(10) & Chr(10) .Attachments.Add("C:\Fichier test.ods") .send End With End Sub

Comment ouvrir une autre application ?

Auteurs : Silkyroad ,

Ces 2 exemples montrent comment lancer des application externes.

Sub AfficheCalculatriceWindows Dim RetVal As Long

'RetVal = Shell("C:\windows\System32\calc.exe" , 1 ) RetVal = Shell("calc.exe" , 1 )End Sub

Sub OuvrirAutreApplication Dim RetVal As Long Dim Cible As String Cible = "C:\Program Files\Paint Shop Pro\Psp.exe" RetVal = Shell( Cible , 1 )End Sub

La procédure suivante ouvre un fichier dans l'application définie par défaut (Utilisation de SystemShellExecute).

Sub OuvrirFichier() Dim oShell As Object Dim Fichier As String Fichier ="C:\Documents and Settings\mimi\dossier\fourmiz.JPG"

Page 135: Fa q Open Office

- 135 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'Fichier ="C:\windows\system32\BuzzingBee.wav" oShell = createUnoService("com.sun.star.system.SystemShellExecute")

oShell.execute(ConvertToUrl( Fichier ), "", 0)

End Sub

Pour ouvrir une page html dans FireFox, utilisez:

Sub OuvrirPageHtml_FF Dim RetVal As Long

'10 : Affichage en plein écran RetVal = Shell("C:\Program Files\Mozilla Firefox\FireFox.exe" _ , 10 , "http://www.developpez.com") End Sub

Comment piloter l'application Internet Explorer et son contenu ?

Auteurs : Silkyroad ,

Cet exemple permet d'ouvrir une page html dans Internet Explorer puis d'en extraire les méta informations:

Sub metaInformations_PageHtml_IE( ) Dim oObj As Object Dim IE As Object oObj = createUnoService( "com.sun.star.bridge.OleObjectFactory") IE = oObj.createInstance("InternetExplorer.Application.1") 'Indiquez False pour masquer la fenêtre Internet Explorer pendant l'opération IE.Visible = True IE.Navigate("http://www.developpez.com/")

'Attend la fin du chargement de la page avant de poursuivre la procédure Do Until IE.ReadyState = 4 Wait(50) Loop

MaPageHtml = IE.Document 'Récupère le titre de la page MsgBox MaPageHtml.Title

'Boucle sur les méta données de la page For i = 0 To MaPageHtml.all.tags("meta").Length - 1 htmlRef = MaPageHtml.all.tags("meta").Item(i) MsgBox htmlRef.content Next i

'Referme la fenêtre Internet Explorer IE.Quit

Page 136: Fa q Open Office

- 136 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment remplir les champs d'une page html puis déclencher un bouton ?

Auteurs : Silkyroad ,

Sub RemplissageChamps_PageHtml_IE( ) Dim oObj As Object Dim IE As Object Dim MaPageHtml As Object , Helem As Object oObj = createUnoService( "com.sun.star.bridge.OleObjectFactory") IE = oObj.createInstance("InternetExplorer.Application.1") 'Indiquez False pour masquer la fenêtre Internet Explorer pendant l'opération IE.Visible = True IE.Navigate("http://www.MonSiteWeb.fr/")

'Attend la fin du chargement de la page avant de poursuivre la procédure Do Until IE.ReadyState = 4 Wait(100) Loop

MaPageHtml = IE.Document 'A adapter en fonction du type d'objets à manipuler dans la page html Helem = MaPageHtml.getElementsByTagName("input")

'--- Adaptez le nom des objets contenus dans la page html --- 'remplissage champs Helem.Item("Profil").InnerText = "NomUtilisateur" Helem.Item("PassWord").InnerText = "MotDePasse" 'Déclenchement bouton de connection Helem.Item("NomBouton").Click '------------------------------------------------------------ End Sub

Comment récupérer la source et le contenu texte d'une page html ?

Auteurs : Silkyroad ,

Si Internet Explorer est installé sur le poste, vous pouvez utiliser cette procédure qui récupère la source, ainsi que lecontenu texte de la page html.

Sub Informations_PageHtml_IE( ) Dim oObj As Object Dim IE As Object oObj = createUnoService( "com.sun.star.bridge.OleObjectFactory") IE = oObj.createInstance("InternetExplorer.Application.1") IE.Visible = True IE.Navigate("http://www.developpez.com")

'Attend la fin du chargement Do Until IE.ReadyState = 4 Wait(50) Loop

Page 137: Fa q Open Office

- 137 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

MaPageHtml = IE.Document MsgBox MaPageHtml.Body.innerHTML MsgBox MaPageHtml.Body.innerText

IE.Quit End Sub

Cette autre possiblité ne nécessite pas Internet Explorer. La source de la page html s'affiche dans un classeur:

Sub RecupererSourcePageHtml 'Source: linuxtalk Dim oDoc As Object Dim Cible As String Dim Args(1) As New com.sun.star.beans.PropertyValue

Cible = "http://www.developpez.com" Args(0).Name = "FilterOptions" Args(0).Value = "44" Args(1).Name = "FilterName" Args(1).Value = "Text - txt - csv (StarCalc)" oDoc = starDeskTop.loadComponentFromURL( Cible , "_blank" , 0 , Args ) End Sub

Comment récupérer des informations sur l'environnement dusystême d'exploitation: utilisation de la fonction Environ ?

Auteurs : Silkyroad ,

Sub Infos_Environnement

MsgBox Environ("USERNAME")

MsgBox Environ("PROCESSOR_IDENTIFIER")

'--- Liste des variables d'environnement --- 'ALLUSERSPROFILE 'APPDATA 'CLIENTNAME 'CommonProgramFiles 'COMPUTERNAME 'ComSpec 'FP_NO_HOST_CHECK 'HOMEDRIVE 'HOMEPATH 'LOGONSERVER 'NUMBER_OF_PROCESSORS 'OS 'Path 'PATHEXT 'PROCESSOR_ARCHITECTURE 'PROCESSOR_IDENTIFIER 'PROCESSOR_LEVEL 'PROCESSOR_REVISION 'ProgramFiles 'SESSIONNAME 'SystemDrive 'SystemRoot 'TEMP 'TMP

Page 138: Fa q Open Office

- 138 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

'USERDOMAIN 'USERNAME 'USERPROFILE 'windir 'Nota: 'Les variables d'environnement dépendent du système d'exploitation utilisé.End Sub

Comment récupérer la version d'une application ?

Auteurs : Silkyroad ,

Sub versionApplication() Dim Fso As Object Dim Appli As String

Appli = "C:\Program Files\Mozilla Firefox\firefox.exe"

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") Fso = oObj.createInstance("Scripting.FileSystemObject")

If Fso.FileExists(Appli) Then MsgBox Fso.GetBaseName(Appli) & " " & Fso.getFileVersion( Appli ) Else MsgBox "le chemin spécifié n'existe pas:" & Chr(10) & "'" & Appli & "'" End If

End Sub

Comment retrouver la lettre du lecteur de CD et vérifier si le disque est prêt ?

Auteurs : Silkyroad ,

La macro teste l'existence des disques sur le PC (lettres C à J), renvoie un message si un lecteur de CD est trouvé etindique si le lecteur est prêt pour utilisation.

Sub LettreLecteurCD() Dim oObj As Object Dim Fso As Object Dim Drv As Integer

oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") Fso = oObj.createInstance("Scripting.FileSystemObject") 'Teste les lecteurs C à J For Drv = 67 To 74 If FSO.DriveExists( CHR(Drv) ) Then If FSO.Drives.Item( CHR(Drv) ).DriveType = 4 Then MsgBox "Lecteur: " & CHR(Drv) If FSO.Drives.Item( CHR(Drv) ).IsReady Then MsgBox "Disque pret." Else MsgBox "Disque pas pret." End If End If End If Next

Page 139: Fa q Open Office

- 139 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment lire un fichier wave par macro ?

Auteurs : Silkyroad ,

Declare Function sndPlaySound32 Lib "winmm.dll" Alias _ "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Sub LireFichier_Wav sndPlaySound32 "C:\windows\system32\BuzzingBee.wav", 1End Sub

Et pour arrêter la lecture en cours:

Sub ArreterLecture_Wav sndPlaySound32 0 , 0End Sub

Page 140: Fa q Open Office

- 140 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > L'interaction avec d'autres applications > Les fichiers texte

Comment écrire dans un fichier texte en utilisant l'instruction Output ?

Auteurs : Silkyroad ,

Si le fichier .txt existe déja, les anciennes données seront écrasées.Si le fichier n'existe pas, il sera créé automatiquement.

Sub EcrireDansFichierTexte_OutPut Dim Fichier As String

Fichier = "C:\NomFichier.Txt" Open Fichier For Output As #1 Print #1, "Test 1ere ligne" Print #1, "Test 2eme ligne" Close #1End Sub

Comment écrire dans un fichier texte en utilisant l'instruction Append ?

Auteurs : Silkyroad ,

Les données viennent s'inscrire à la suite des lignes existantes.Si le fichier .txt n'existe pas, il sera créé automatiquement.

Sub EcrireDansFichierTexte_Append Dim Cible As Integer Dim Fichier As String

Fichier = "C:\NomFichier.Txt" Cible = freeFile Open Fichier For Append As #Cible Print #Cible, "Mon texte dans le fichier" Close #CibleEnd Sub

Comment lire le contenu d'un fichier texte en utilisant l'instruction Input ?

Auteurs : Silkyroad ,

La procédure suivante permet de boucler sur toutes les lignes du fichier texte.

Sub LireFichierTexte_Input Dim Ligne As String Dim Fichier As String

Fichier = "C:\NomFichier.Txt" Open Fichier For Input As #1

'--- Boucle sur les lignes du fichier Do While Not EOF(1) Line Input #1, Ligne Msgbox Ligne

Page 141: Fa q Open Office

- 141 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Loop Close #1End Sub

Comment imprimer le contenu d'un fichier texte ?

Auteurs : Silkyroad ,

Shell "notepad.exe /P""C:\NomFichier.Txt""", 1

Comment supprimer une ou plusieurs lignes dans un fichier texte ?

Auteurs : Silkyroad ,

La macro supprime les lignes 1, 3 et 10 dans le fichier texte:

Sub SupprimerQuelquesLignes Dim Fichier As String Dim Collect As New Collection Dim F As Integer, i As Integer Dim Ligne As String

Fichier = "C:\NomFichier.Txt"

F = FreeFile 'Lecture du fichier: ajoute chaque ligne dans la collection Open Fichier For Input As #F While Not EOF(F) Line Input #F, Ligne Collect.Add Ligne Wend Close #F

'Suppression des lignes 1, 3 et 10 dans la collection Collect.Remove 10 Collect.Remove 3 Collect.Remove 1

'Réécriture du fichier txt sans les données supprimées Open Fichier For Output As #F For i = 1 To Collect.Count Print #F, Collect(i) Next Close #F Collect = NothingEnd Sub

Comment supprimer les lignes en doublon dans un fichier texte ?

Auteurs : Silkyroad ,

Sub SupprimerLignesDoublons Dim Fichier As String Dim Collect As New Collection Dim F As Integer, i As Integer

Page 142: Fa q Open Office

- 142 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Dim Ligne As String

Fichier = "C:\NomFichier.Txt"

F = FreeFile

On Error Resume Next

'Lecture du fichier Open Fichier For Input As #F While Not EOF(F) Line Input #F, Ligne 'Le 2eme argument, key = Cstr(Ligne), est unique et permet donc de filtrer les doublons 'dans la collection. Collect.Add Ligne , Cstr(Ligne) Wend Close #F

On Error GoTo 0 'Réécriture du fichier txt sans les doublons Open Fichier For Output As #F For i = 1 To Collect.Count Print #F, Collect(i) Next Close #F

Collect = Nothing End Sub

Comment compter le nombre de lignes dans un fichier texte ?

Auteurs : Silkyroad ,

Sub nombreLignesFichierTexte_V01() Dim strLigne As String Dim nbLignes As Long Dim Fichier As String Fichier = "C:\NomFichier.Txt" Open Fichier For Input As #1 Do While Not EOF(1) Line Input #1, strLigne nbLignes = nbLignes + 1 Loop Close #1 MsgBox "Nombre de lignes : " & nbLignesEnd Sub

Un deuxième possibilité:

Sub nombreLignesFichierTexte_V02() Dim oObj As Object , Fso As Object , oFile As Object Dim Fichier As String Const ForReading = 1 Fichier = "C:\NomFichier.Txt" oObj = createUnoService("com.sun.star.bridge.OleObjectFactory") Fso = oObj.createInstance("Scripting.FileSystemObject")

Page 143: Fa q Open Office

- 143 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

oFile = Fso.OpenTextFile( Fichier , ForReading )

oFile.ReadAll MsgBox "Nombre de lignes : " & oFile.Line oFile.CloseEnd Sub

Comment remplacer des chaînes de caractères dans un fichier texte ?

Auteurs : Silkyroad ,

Sub RemplacerChaine_Dans_FichierTexte Dim Chaine As String , Cible As String Dim Fichier2 As String , Fichier1 As String Dim Ancien As String , Nouveau As String Ancien = "42" Nouveau = "29" 'Le fichier original Fichier1 = "C:\NomFichier.txt" 'Le nouveau fichier qui va être créé Fichier2 = "C:\NomFichierModifié.txt" Open Fichier1 For Input As #1 Open Fichier2 For Append As #2 'Boucle sur toutes les lignes du fichier texte Do While Not EOF(1) Line Input #1, Chaine 'Remplace les caractères dans la chaine Cible = Join(Split(Chaine , Ancien), Nouveau) 'Ecrit le résultat dans un nouveau fichier texte Print #2, Cible Loop 'Fermeture des fichiers Close #1 Close #2

'Suppression Fichier d'origine 'Kill Fichier1 MsgBox "Terminé."End Sub

Page 144: Fa q Open Office

- 144 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Sommaire > Les variables

A quoi servent les variables et comment les utiliser ?

Auteurs : Silkyroad ,

Les variables servent à stocker et manipuler des informations dans une macro.Une variable possède:* Un nom qui permet d'accéder aux données qu'elle contient: "maVariable".* Un type de données: Par exemple, String et Integer dans les procédures ci dessous.La macro affecte une chaîne de caractères (Bonjour !) dans une variable (maVariable), puis l'affiche dans un MsgBox:

Sub afficherMessage Dim maVariable As String maVariable = "Bonjour !" MsgBox maVariableEnd Sub

Les données peuvent être modifiées pendant l'éxécution de la macro.Un exemple pour affecter une valeur numérique à une variable, l'afficher dans un MsgBox, ajouter 20 à la valeur decette variable, puis afficher le nouveau résultat:

Sub afficherValeur() Dim maVariable As Integer maVariable = 10 MsgBox maVariable maVariable = maVariable + 20 MsgBox maVariableEnd Sub

Evitez de nommer les variables en utilisant des mots clés ou instructions/fonctions réservés par l'application (parexemple Val, Left...).Le nom des variables doit commencer par un caractère alphabétique et ne pas excéder 255 caractères.Les noms ne doivent pas contenir de caractères spéciaux.Le caratère underscore _ est accepté. Essayez de donner des noms les plus explicites possibles afin de faciliter la relecturede votre programme.Le type de données doit être défini en fonction de la valeur prise par la variable. Une variable définie de façon incorrectepour un contexte particulier, peut génèrer un message d'erreur. Chaque type de donnée utilise un espace mémoire. Ilest donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilementle traitement de la macro.Toutes les variables sont converties en type Variant si aucun autre type de données n'est explicitement déclaré.En cas de déclaration de plusieurs variables avec le même Dim, vous devez préciser le type de donnée pour chaquevariable.Par exemple, si pour définir 3 variables de type String (strVar1, strVar2 et strVar3) vous écrivez:Dim strVar1 , strVar2 , strVar3 As StringDans ce cas strVar1 et strVar2 seront de type Variant.Pour y remédier et obtenir 3 variables String, Il faut écrire:Dim strVar1 As String , strVar2 As String , strVar3 As String

Page 145: Fa q Open Office

- 145 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Quels sont les types de variables disponibles dans OOo ?

Auteurs : Silkyroad ,

Le type de données doit être défini en fonction de la valeur prise par la variable.Boolean:Données pouvant prendre exclusivement les valeurs logiques True et False.Les variables Boolean sont stockées sous la forme de nombres codés sur 16 bits .Integer:Données contenant des nombres entiers, de 16 bits, compris entre -32 768 et 32 767.Le signe % est le caractère de déclaration du type Integer.Remarque:Si vous écrivez "Dim X As Integer", alors que la donnée est décimale (par exemple X=5.9), la valeur renvoyée sera égaleà 6. La valeur de la variable est arrondie à l'entier le plus proche.Long:Nombre entier de 32 bits dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647.Le signe et commercial (&) est le caractère de déclaration du type Long.Si vous lui affectez un nombre décimal, la valeur de la variable est arrondie à l'entier le plus proche.Currency:Données de 64 bits dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807.Le signe @ est le caractère de déclaration du type Currency.Ce type de donnée est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grandeprécision est requise.Single:Type de donnée, sur 32 bits, qui regroupe des variables à virgule flottante en simple précision sous forme de nombresà virgule flottante, dont la valeur est comprise entre -3,402823E38 et -1,401298E-45 pour les valeurs négatives, et entre1,401298E-45 et 3,402823E38 pour les valeurs positives.Le point d'exclamation (!) est le caractère de déclaration du type Single.Double:Type de donnée, sur 64 bits, stockant les nombres à virgule flottante en double précision compris entre-1,79769313486231E308 et -4,94065645841247E-324 pour les valeurs négatives, et entre 4,94065645841247E-324 et1,79769313486232E308 pour les valeurs positives.Le signe dièse (#) est le caractère de déclaration du type Double.Date:Type de données, sur 64 bits, utilisé pour stocker les dates et les heures.String:Type de données,sur 64 bits, utilisé pour stocker des chaînes de caractères.Une donnée de type String peut inclure lettres, nombres, espaces et signes de ponctuation.Le signe dollar ($) est le caractère de déclaration du type String.Variant:Peut contenir tous les types de données.Toutes les variables sont converties en type Variant si aucun autre type de données n'est explicitement déclaré.Object:Type de données représentant toute référence Objet.

Que signifie l'instruction Option Explicit ?

Auteurs : Silkyroad ,

L'instruction Option Explicit est utilisée pour imposer la déclaration explicite de toutes les variables dans un module.Cette instruction doit apparaître en tête dans le module, avant toute procédure.

Page 146: Fa q Open Office

- 146 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

L'instruction Option Explicit permet d'identifier une variable non déclarée ou mal orthographiée (une erreur seproduit).

Comment est définie la portée des variables ?

Auteurs : Silkyroad ,

Les variables locales:Une Variable déclarée à l'intérieur d'une procédure (Sub ou Function) ne sera valide qu'à l'intérieur de celle-ci etuniquement jusqu'à sa fermeture.Les variables publiques:Dans certains cas, une variable doit rester valide pour toutes les procédures, tous les modules de toutes les bibliothèques,ou après la fermeture d'une procédure ou d'une fonction. La déclaration des variables doit alors se faire en tête demodule et en dehors des procédures Sub ou Function:GLOBAL VarName As TYPENAMELa variable est valide tant que la session OpenOffice.org est ouverte.PUBLIC VarName As TYPENAMELa variable est valide dans tous les modules.PRIVATE VarName As TYPENAMELa variable est valide dans ce module.DIM VarName As TYPENAMELa variable est valide dans ce module.

A quoi sert l'instruction Const ?

Auteurs : Silkyroad ,

L'instruction Const permet de déclarer les constantes.Une constante est un élément nommé conservant une valeur (chaîne, donnée numérique...) identique pendant toutel'exécution d'un programme.Les constantes peuvent remplacer des valeurs réelles partout dans votre code.Il y a plusieurs avantages à utiliser une constante:Si la donnée doit être modifiée dans une macro complexe, vous n'avez plus besoin de parcourir toute la procédure pourla retrouver: il suffit de modifier la constante qui est généralement placée en début de macro ou en tête du module.Vous évitez ainsi les recherches fastidieuses et les erreurs de saisie.Les constantes permettent aussi d'améliorer la lisibilité des macros.

Sub Test_Utilisation_Constantes Const LaValeur As Integer = 100 Const LeTexte As String = "essai"

MsgBox LeTexte & " " & LaValeur * 2End Sub

Quelles sont les fonctions de conversion des types de données ?

Auteurs : Silkyroad ,

Ces fonctions convertissent une expression en un type de données spécifié. Elles sont particulièrement intéressantespour réadapter un format, par exemple suite à un transfert de données brutes que vous souhaitez utiliser en type Date,numérique...

Page 147: Fa q Open Office

- 147 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Fonction Type renvoyé Type de conversionCBool Boolean Convertit une comparaison de

chaînes de caractères ou unecomparaison numérique enexpression logique,ou bien une expressionnumérique en expression logique.

CByte Byte Convertit une chaîne decaractères ou une expressionnumérique en type Byte.

CCur Currency Convertit une expressionde chaîne ou une expressionnumérique en expressionmonétaire.

CDate Date Convertit une expression auformat chaîne de caractères ounumérique en valeur de date.

CDbl Double Convertit une expression auformat chaîne de caractères ounumérique en valeur de typeDouble.

CDec Decimal Convertit une expressionde chaîne ou une expressionnumérique en expressiondécimale.

CInt Integer Convertit une expression auformat chaîne de caractères ounumérique en nombre entier.

CLng Long Convertit une expression auformat chaîne de caractères ounumérique en nombre entierlong.

CSng Single Convertit une expression auformat chaîne de caractères ounumérique en valeur de typeSingle (simple).

CStr String Convertit une expressionnumérique en expression auformat chaîne de caractères.

CVar Variant Convertit une expressionde chaîne ou une expressionnumérique en expression de typevariant.

Un exemple qui transforme une chaîne de caractères (String) en type Integer pour l'utilisation dans un calcul.

Sub Main Dim x as String

x = "1234" MsgBox CInt(x) * 2

Page 148: Fa q Open Office

- 148 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment tester la présence d'un argument Optionnel dans une fonction ?

Auteurs : Silkyroad ,

Les arguments Optional (optionnels) permettent de définir les paramètres transmis à une fonction comme facultatifs.Ces arguments doivent être placés en dernière position dans la liste des paramètres.Il est parfois utile de vérifier la présence de ces arguments optionnels pour éviter les erreurs dans la procédure: Dansce cas, utilisez la fonction IsMissing pour déterminer si des arguments facultatifs ont été fournis lors de l'appel de laprocédure. La fonction renvoie True si aucune valeur correspondant à l'argument spécifié n'a été passée, sinon ellerenvoie la valeur False.Nota:Lorsque vous utilisez la fonction IsMissing, il est préférable que les arguments Optional soient déclarés en type Variant.

Sub Test maFonction( "OOo" ) maFonction( "OOo" , 50 ) maFonction( "OOo" , 50 , 100 ) maFonction( "OOo" , , 100 )End Sub

Function maFonction( Arg1 As String , Optional Arg2 As Variant , Optional Arg3 As Variant ) As Long MsgBox "Arguments manquants: " & IsMissing( Arg2 ) & " - " & IsMissing( Arg3 )End Function

Comment déterminer si une variable contient une valeur Null ?

Auteurs : Silkyroad ,

La fonction IsNull permet d'effectuer cette vérification en renvoyant la valeur True si la variable testée (Variant ouObject) est de type Null, et la valeur False dans le cas contraire.

Sub Test_IsNull Dim vVar As Variant Dim oVar As Object '--- test variable Variant MsgBox IsNull( vVar ) 'False vVar = "" MsgBox IsNull( vVar ) 'False vVar = "x" MsgBox IsNull( vVar ) 'False vVar = Null MsgBox IsNull( vVar ) 'True

'--- test variable Object MsgBox IsNull( oVar ) 'True oVar = ThisComponent MsgBox IsNull( oVar ) 'False oVar = Nothing MsgBox IsNull( oVar ) 'True

Page 149: Fa q Open Office

- 149 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

End Sub

Comment vérifier si une variable type Variant a été initialisée ?

Auteurs : Silkyroad ,

Vous pouvez utiliser la fonction IsEmpty.La fonction renvoie la valeur True si la variable contient la valeur Empty, et la valeur False dans le cas contraire.IsEmpty fonctionne uniquement pour les variables de type Variant.

Sub Test_IsEmpty Dim vVar As Variant '--- test variable Variant MsgBox IsEmpty( vVar ) 'True vVar = "x" MsgBox IsEmpty( vVar ) 'False

vVar = "" MsgBox IsEmpty( vVar ) 'False vVar = Null MsgBox IsEmpty( vVar ) 'False vVar = Empty MsgBox IsEmpty( vVar ) 'True End Sub

Null est différent de Empty, qui indique qu'une variable n'a pas encore été initialisée.

Comment retrouver le type de donnée contenu dans une variable Variant ?

Auteurs : Silkyroad ,

Vous pouvez utiliser la fonction TypeName pour récupérer le type d'information contenu dans la variable:

Sub Exemple_TypeName Dim Cible As Variant

Msgbox TypeName( Cible ) 'Empty Cible = ThisComponent Msgbox TypeName( Cible ) 'Object

Cible = "mimi" Msgbox TypeName( Cible ) 'String

Cible = 10 Msgbox TypeName( Cible ) 'Integer Cible = True Msgbox TypeName( Cible ) 'Boolean Cible = 99999999 Msgbox TypeName( Cible ) 'Double Cible = CDate( "26/05/2006" )

Page 150: Fa q Open Office

- 150 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, 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 DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://ooo.developpez.com/faq/

Msgbox TypeName( Cible ) 'Date

Cible = 10 Msgbox TypeName( Cible ) 'Integer Cible = Null Msgbox TypeName( Cible ) 'Null End Sub