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.
Ont contribué à cette FAQ :
Atlantis - Michaël - Silkyroad (silkyroad.developpez.com) -
1. Informations générales (18) .......................................................................................................................................................4 2. Le tableur Calc (77) ................................................................................................................................................................ 11 2.1. Les feuilles (68) ..............................................................................................................................................................13 2.1.1. Les cellules (46) .................................................................................................................................................... 22 2.1.1.1. Les formules (9) ........................................................................................................................................... 34 2.1.1.1.1. Texte (1) ...............................................................................................................................................35 2.1.1.1.2. Statistique (1) ....................................................................................................................................... 36 2.1.1.1.3. Mathématique (1) .................................................................................................................................37 2.1.1.1.4. Add-In (1) ............................................................................................................................................ 38 2.1.1.1.5. Les Dates et les Heures (1) ................................................................................................................. 39 2.1.1.1.6. Classeur et Matrice (1) ........................................................................................................................ 40 2.1.1.1.7. Information (1) .....................................................................................................................................41 2.1.1.1.8. Logique (1) .......................................................................................................................................... 42 2.1.1.1.9. Divers (1) ............................................................................................................................................. 43 2.1.1.2. Les annotations (4) ....................................................................................................................................... 44 2.1.1.3. Les formats (6) ............................................................................................................................................. 47 2.1.1.4. Les cellules et plages nommées (6) ............................................................................................................. 50 2.1.2. Les images (1) ....................................................................................................................................................... 53 2.2. Les graphiques (5) .......................................................................................................................................................... 55 3. Le traitement de texte Writer (27) .......................................................................................................................................... 60 3.1. Les paragraphes (3) ........................................................................................................................................................ 67 3.2. Les signets (3) ................................................................................................................................................................ 68 3.3. Les images (1) ................................................................................................................................................................ 70 3.4. Les tableaux Writer (4) .................................................................................................................................................. 71 3.5. Les cadres - TextFrames (5) .......................................................................................................................................... 74 4. Le module Base (10) ............................................................................................................................................................... 77 5. Le module de dessin Draw (3) ................................................................................................................................................84 6. Le module de présentation Impress (8) ...................................................................................................................................86 7. Les boîtes de dialogue BASIC (25) ........................................................................................................................................ 90 7.1. Les cases à cocher: CheckBox (1) ................................................................................................................................. 93 7.2. Le contrôle picto: ImageControl (2) .............................................................................................................................. 94 7.3. Les zones de liste: ListBox (7) ...................................................................................................................................... 96 7.4. Les barres de progression: ProgressBar (1) ................................................................................................................. 100 7.5. Les zones de texte: TextField (6) .................................................................................................................................101 7.6. Les champs Date / Calendriers (2) ............................................................................................................................... 105 7.7. La sélection de fichiers: FileControl (1) ...................................................................................................................... 107 8. Les sauvegardes (6) ............................................................................................................................................................... 108 9. Les répertoires (8) ................................................................................................................................................................. 111 10. Les fichiers (5) .....................................................................................................................................................................116 11. Les filtres (5) ....................................................................................................................................................................... 119 12. L'éditeur de macros (5) ....................................................................................................................................................... 123 13. Automation (4) .....................................................................................................................................................................125 14. Les chaines de caractères (5) .............................................................................................................................................. 127 15. L'interaction avec d'autres applications (18) ....................................................................................................................... 133 15.1. Les fichiers texte (8) ...................................................................................................................................................140 16. Les variables (10) ................................................................................................................................................................ 144
-3Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 sur le bouton "Editer" pour y accéder. Quand vous êtes dans l'éditeur de macros, vous pouvez basculer vers les modules des autres fichiers ouverts, en utilisant la liste déroulante en 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 bas de 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. CurrentComponent ne fonctionne par lorsque la procédure est déclenchée depuis l'éditeur de macros. Vous pouvez utiliser cette macro afin de vérifier par vous même: Créez 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 -4Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Office n'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.x Utilisez le menu Fichier Assistants Installer de nouveaux dictionnaires Suivez 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 menu Outils Options Paramètres linguistiques Linguistique Vous 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.
-5Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Outils Options Sélectionnez "Chargement/Enregistrement" dans le menu de gauche Puis "Général" Dans le champ "Format de fichier par défaut" vous pouvez spécifier le format d'enregistrement pour chaque type de document
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) & _
-6Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 , "" )
-7Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 1 2 3 4 5 6 7
= = = = = = = =
Name PaperOrientation ( 0=Portrait , 1=Paysage) PaperFormat ( 0=A3 , 1=A4 , 2=A5 , 3=B4 , B5=4 ) PaperSize IsBusy CanSetPaperOrientation CanSetPaperFormat 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, peuvent provoquer un effet de scintillement à l'écran. Une solution (hormis celle d'éviter les sélections dans les macros) consiste à figer l'écran pendant le déroulement de la macro. C'est l'équivalent de ScreenUpdating = False en VBA. Pour activer cette option, placez la ligne suivante en début de procédure:
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.
-8Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 .ods qui sont les nouveaux standards OpenDocument: Texte formaté (.odt) application/vnd.oasis.opendocument.text Tableur (.ods) application/vnd.oasis.opendocument.spreadsheet Présentation (.odp) application/vnd.oasis.opendocument.presentation Dessin (.odg) application/vnd.oasis.opendocument.graphics Base de données (.odb) application/vnd.oasis.opendocument.database Pour effectuer la conversion d'un ou plusieurs documents: Menu Fichier Assistants Convertisseur de documents Sé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 zones d'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 de compilation, 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 lettres S, D et T. Vous trouverez au début des informations sur les numéros de compilation et de version, ainsi qu'une liste des développeurs OOo. Si vous ne souhaitez pas lire les informations jusqu'à la fin, appuyez sur la touche Échap. Cette macro de Laurent Godard permet aussi de récupérer la version d'OpenOffice utilisée:
Sub Main MsgBox "Version OOo: " & RecupereVersionOOO End Sub
-9Les 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 GetSolarVersion End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Dim Dim
CreerNouveauDocument_Calc oDesktop As Object , oDoc As Object Fichier As String 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éation oDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args()) ' '... ' 'Enregistrement du fichier oDoc.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 de dialogue. 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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 couleur en 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 macro MsgBox 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" existe If 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 Object Dim 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).Name Next
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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 fin oDoc.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 position oDoc.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")
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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.IsProtected End 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 ,
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 = ThisComponent Feuille = 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Editer Option "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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 A10 ThisComponent.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()
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
Dim Dim Dim Dim Dim Dim
OngletsSelectionnes As String TableauOnglets() As String i As Integer Cible As Object Collect As New Collection 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 If End 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.Name End Sub
Sub Arret_GestionEvenement_SheetChange oClasseur.CurrentController.removePropertyChangeListener( "ActiveSheet" , oListener )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Object Dim Cellule As Object oDoc = ThisComponent Feuille = 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.Sheet End Sub
Comment vérifier le type de données contenu dans les cellules ? Auteurs : Silkyroad , Une cellule peut contenir: une valeur numérique du texte une formule ou ê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 donc important 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Cellule As Object oDoc = ThisComponent Feuille = 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 EcrireDansCellule Dim oDoc As Object , Feuille As Object Dim Cellule As Object oDoc = ThisComponent Feuille = oDoc.getSheets.getByName("Feuille1") 'Ecrit valeur numérique Cellule = Feuille.getCellRangeByName("A5") Cellule.Value = 12345 Cellule = Feuille.getCellRangeByName("A6") Cellule.setValue(12345) '---'Ecrit du texte Cellule = Feuille.getCellRangeByName("A7") Cellule.setString("essai") Cellule = Feuille.getCellRangeByName("A8") Cellule.String = "essai" '---'Ecrit une Date Cellule = 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 InsererFormuleParMacro Dim oDoc As Object , Feuille As Object Dim Cellule As Object oDoc = ThisComponent Feuille = oDoc.getSheets.getByName("Feuille1") Cellule = Feuille.getCellRangeByName("B1") 'Ecrit la formule en utilisant le langage de la version OOo installée Cellule.FormulaLocal = "=SOMME(A1:A10)" Cellule = Feuille.getCellRangeByName("B2") 'Ecrit la formule en utilisant l'anglais Cellule.Formula = "=SUM(A1:A10)" '--'Lit la formule contenue dans la cellule B2 MsgBox Cellule.Formula & Chr(13) & Cellule.FormulaLocal End Sub
Comment supprimer le contenu d'un cellule ? Auteurs : Silkyroad , Sub SupprimeContenuCellule Dim oDoc As Object , Feuille As Object Dim Cellule As Object oDoc = ThisComponent Feuille = 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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: Formules End 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ée par 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 Dim Dim Dim
Ws As Object, Cellule As Object Resultat As Variant Tableau() 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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ère lettre de chaque phrase saisie dans les cellules ? Auteurs : Silkyroad , Vous devez modifier les paramètres d'autocorrection: Utilisez le menu Outils AutoCorrection Sé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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 DerniereLigneNonVide Dim oCurseur As Object 'Définit la 1ere feuille oCurseur = ThisComponent.Sheets(0).createCursor oCurseur.gotoEndOfUsedArea( False ) 'L'index de la première ligne = 0 MsgBox oCurseur.RangeAddress.EndRow End 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)
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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) - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Format conditionnel. 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 / Format conditionnel. Vous pouvez ajouter des "styles de cellules" en plus de ceux proposés par défaut, à partir du menu Format / Styles et Formatage (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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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. Le contenu 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 devez simplement 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Object Dim Cellule As Object oDoc = ThisComponent Feuille = 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ées End Sub
Deuxième méthode.
Sub Dim Dim Dim
ajoutCommentaireCellule_V02 oDoc As Object , Feuille As Object Cellule As Object Nte As Object
oDoc = ThisComponent Feuille = oDoc.getSheets.getByName("Feuille1") Cellule = Feuille.getCellRangeByName("A1") 'Crée une nouvelle annotation Feuille.Annotations.insertNew(Cellule.CellAddress, "Ceci est un test de commentaire.") Nte = Cellule.Annotation.AnnotationShape 'Spécifie que l'annotation s'adapte à la taille du texte Nte.TextAutoGrowWidth = True Nte.TextAutoGrowHeight = True Nte.FillStyle = com.sun.star.drawing.FillStyle.SOLID 'Applique une couleur dans l'annotation Nte.FillColor = RGB( 255,225,225 )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Dim Dim
ajoutDansCommentaireExistant oDoc As Object , Feuille As Object Cellule As Object leTexteExistant As String
oDoc = ThisComponent Feuille = oDoc.getSheets.getByName("Feuille1") Cellule = Feuille.getCellRangeByName("A1") 'Récupération des informations existantes dans le commentaire leTexteExistant = 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 Object Dim Cellule As Object oDoc = ThisComponent Feuille = 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 Dim Dim Dim
boucleSurAnnotations I As Integer Resultat As String Feuille As Object , oDoc As Object
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
oDoc = ThisComponent Feuille = oDoc.getSheets.getByName("Feuille1") 'Boucle sur les annotations de la Feuille For 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 Resultat Next i End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 MiseEnFormeCellule Dim oDoc As Object , Feuille As Object Dim Cellule As Object oDoc = ThisComponent Feuille = 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é double End 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 couleur de 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Format Cellules Onglet "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/2 Appliquez à 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).
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 noms lorsque vous avez besoin de faire références à des plages complexes ou pour une meilleure compréhension de votre projet. Par exemple, vous pouvez remplacer une formule classique: =SOMME(A1:A10)*B1 par =SOMME(A1:A10)*Coefficient Coefficient étant le nom préalablement donné à la cellule B1. Pour ajouter un nom manuellement, utilisez le menu Insertion Noms Définir Complètez le champ "Nom" Le champ "Assigné à" permet de préciser la cellule ou la plage à nommer Cliquez 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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: Formules End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 ensuite affiché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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 de données est dans la 1ere feuille.
Sub Dim Dim Dim Dim
CreationGraphique oDoc As Object Rect As New com.sun.star.awt.Rectangle Source(0) As New com.sun.star.table.CellRangeAddress 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 graphique oCharts.addNewByName("MonGraphique",Rect ,Source(),True , True) 'Place le graphique dans la feuille de calcul oChart = oCharts.getByName("MonGraphique").EmbeddedObject With oChart 'Type de graphique (Scatters) .Diagram = oChart.createInstance("com.sun.star.chart.XYDiagram")
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Dim Dim
BoucleGraphiquesFeuille oDoc As Object oChart As Object i As Integer
oDoc = ThisComponent 'Boucle sur les graphiques de la 2eme feuille For 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
Next i End 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 ModifierGraphique Dim 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 graphique oChart.Title.String = "Le nouveau titre" 'Modifie la couleur de fond du graphique oChart.Diagram.wall.FillColor = RGB(250,200,200) 'Modifie l'épaisseur de la courbe oChart.Diagram.Linewidth = 100 'Modifier l'étiquette de l'axe des abscisses oChart.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 plage de cellules initiale. Une plage $A$1:$B$25 deviendra $A$1:$D$30
Sub Ajouter_Series_Et_Points Dim oDoc As Object Dim oChart As Object
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 actuelle Plage = oChart.getRanges() 'Ajoute 5 lignes par rapport à la source initiale Plage(0).EndRow = Plage(0).EndRow + 5 oChart.setRanges(Plage) 'Ajoute 2 colonnes par rapport à la source initiale Plage(0).EndColumn = Plage(0).EndColumn + 2 oChart.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 TabFiltre(0).Value TabFiltre(1).Name TabFiltre(1).Value TabFiltre(2).Name TabFiltre(2).Value TabFiltre(3).Name TabFiltre(3).Value
= "PixelWidth" 'Largeur en pixels = 900 = "PixelHeight" 'Hauteur en pixels = 700 ="Quality" 'de 1 à 100% = 80 ="ColorMode" '0=Couleur , 1=Niveaux de Gris = 0
oGEF = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) oGEF.SetSourceDocument( Obj ) CheminURL.complete = Fichier Tableau(0).Name Tableau(0).Value Tableau(1).Name Tableau(1).Value Tableau(2).Name Tableau(2).Value
= = = = = =
"MediaType" "image/jpeg" "URL" CheminURL "FilterData" TabFiltre
oGEF.Filter( Tableau() )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 visualiser dans le document.
Sub Dim Dim Dim
retrouverMot oSearch As Object , Cible As Object Tableau As Variant x As long
oSearch = ThisComponent.createSearchDescriptor With oSearch .SearchString = "essai" 'la chaîne à identifier .SearchWords = True End 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 fond Next End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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_BEFORE End 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" '-----------------------------------------------
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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, de tableaux ou de lignes dans un document: Lorsque le fichier est ouvert, Utilisez le menu Fichier Propriétés Onglet "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 Resultat End 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.CharHeight End 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. - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 documents Sé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 dans votre document, mais pas dans la copie, sont identifiés comme des insertions, et tous les passages de texte manquants dans 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 accepter les "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 écran La 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Outils AutoCorrection Onglets "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 de mot" 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 dans un 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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())
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 boucleSurParaGraphes Dim leTexte As Object , TextElement As Object Dim 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 Wend End Sub
Comment supprimer un paragraphe précis dans le document ? Auteurs : Silkyroad , La macro supprime le deuxième paragraphe dans le document Writer.
Sub SuppressionParaGraphe Dim leTexte As Object , TextElement As Object Dim 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 Wend End 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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Insertion Repère de texte
Sub creerBookmarkEmplacementCurseur Dim Doc As Object , Cursor As Object 'insérer un bookmark(signet)à l'emplacement du curseur Doc = ThisComponent Cursor = Doc.currentcontroller.ViewCursor Bookmark = Doc.createInstance("com.sun.star.text.Bookmark") 'Spécifie le nom du nouveau signet Bookmark.Name = "Xmark" 'Insertion du signet Doc.Text.insertTextContent(Cursor, Bookmark, True) 'Ajoute du texte dans le signet Doc.getBookmarks().getByName("Xmark").getAnchor.setString("test ajout texte") End Sub
Comment positionner le curseur à l'emplacement d'un signet ? Auteurs : Silkyroad , Sub AtteindreSignet Dim Doc As Object , oCC As Object , oCursor As Object Dim BookMark As Object Doc = ThisComponent oCC = 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 dans la 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 BoucleSignets Dim Doc As Object , Signets As Object
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 = ThisComponent Signets = Doc.getBookmarks() For i = 0 to Signets.Count() - 1 MsgBox "Nom: " & Signets.getByIndex(i).Name & Chr(13) & _ "Contenu: " & Signets.getByIndex(i).Anchor.String Next i End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 sont ensuite 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 Dim Dim Dim Dim Dim Dim
sGraphicURL As String , Chemin As String , NextFile as String oDrawPage As Object , oGraphic As Object oFolderDialog as Object, oUcb as Object choix As Integer Taille as new com.sun.star.awt.Size Emplacement as new com.sun.star.awt.Point 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 dimensions Et 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 i End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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.VertOrientPosition End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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( .setPropertyValue( .setPropertyValue( .setPropertyValue( End With
"TopBorder" , Tableau ) "BottomBorder" , Tableau ) "LeftBorder" , Tableau ) "RightBorder" , Tableau )
End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 natif OpenOffice. Vous y aborderez l'utilisation des assistants pour la création des tables et des formulaires, le mode ébauche et 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 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) depuis Calc et Writer. 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. Remarque: Le nom des champs et des tables est encadré par des doubles guillemets dans la requête.
Sub Dim Dim Dim
RequeteBase_V01 oDBContext As Object , oDB As Object , oBase As Object oStatement As Object , oRequete As Object 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'"
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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) Wend End If oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub
Cet autre exemple permet de se connecter à une base non enregistrée.
Sub Dim Dim Dim
RequeteBase_V02 oDBContext As Object , oDB As Object , oBase As Object oStatement As Object , oRequete As Object 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) Wend End If oRequete.Close oStatement.Close oBase.Close oBase.Dispose End 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ête au 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) & " / " & _
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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) Wend End If
Le tableau suivant liste quelques méthodes disponibles en fonction du type de champ à lire dans la base: Méthode getString getBoolean getDouble getDate getTime getTimestamp
Type de donnée String Boolean Double Date Time 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 Wend End If
lien :
api.openoffice.org
Comment ajouter un enregistrement dans une table ? Auteurs : Silkyroad , Sub Dim Dim Dim
AjoutEnregistrement oDBContext As Object , oDB As Object , oBase As Object oStatement As Object , oRequete As Object 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 ) '--------------------------------
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub
Comment supprimer des enregistrements dans une table ? Auteurs : Silkyroad , Sub Dim Dim Dim
SupprimerEnregistrement oDBContext As Object , oDB As Object , oBase As Object oStatement As Object , oRequete As Object 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 12345 strSQL = "DELETE FROM ""maTable"" WHERE ""Champ2""=12345 " oRequete = oStatement.executeQuery( strSQL ) '-----------------------------------------------------------------oRequete.Close oStatement.Close oBase.Close oBase.Dispose End Sub
Comment mettre à jour des enregistrements dans une table ? Auteurs : Silkyroad , Sub Dim Dim Dim
MiseAJourEnregistrement oDBContext As Object , oDB As Object , oBase As Object oStatement As Object , oRequete As Object 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 10 strSQL = "UPDATE ""maTable"" SET ""Champ1""='Cloture' WHERE ""Champ2"" = 10" oRequete = oStatement.executeQuery( strSQL ) '----------------------------oRequete.Close oStatement.Close oBase.Close oBase.Dispose
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Dim Dim
CreerTable oDBContext As Object , oDB As Object , oBase As Object Fichier As String 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.createDataDescriptor NouvelleTable.Name = "gestionStock" 'nom de la nouvelle table 'Description 1er champ NouveauChamp = NouvelleTable.Columns.createDataDescriptor NouveauChamp.Name = "NomProduit" 'nom champ NouveauChamp.Type = com.sun.star.sdbc.DataType.VARCHAR '(1) champ type texte NouveauChamp.Precision = 200 NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'ajout du champ 'Description 2eme champ NouveauChamp = NouvelleTable.Columns.createDataDescriptor NouveauChamp.Name = "NbStock" 'nom champ NouveauChamp.Type = com.sun.star.sdbc.DataType.INTEGER '(2) champ type numérique NouveauChamp.Precision = 10 NouvelleTable.Columns.appendByDescriptor(NouveauChamp) 'insertion de la nouvelle table CollectionTables.appendByDescriptor(NouvelleTable) '---------------------------------------oBase.Close oBase.Dispose End 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 (ou par la touche raccourci F4) depuis Calc ou Writer.
Sub Dim Dim Dim
Integrer_SourceDonnees() oDBContext As Object, oDataSource As Object Source As String, Chemin As String Array()
'Le nom qui s'affichera quand vous visualiserez
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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ées Chemin = 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 nom If oDBContext.hasByName(Source) then MsgBox "Opération annulée. Vérifiez le nom." , , "Message" Exit Sub End If 'Attention au format URL: bien saisir un Slash / 'Chemin & "/OOoBase.odb" correspond au chemin complet de votre base de données oDataSource.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 Outils Options Sélectionnez "OpenOffice.org Base" dans l'arborescence Double cliquez sur "Bases de données" Sélectionnez une source dans la liste Cliquez 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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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) depuis Calc 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 plusieurs champs, 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 une réutilisation ultérieure. Vous pouvez aussi copier ces fichiers sur d'autres postes de travail. Sur le poste Source: Menu Format Remplissage Onglet "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\config Copiez 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 Draw Menu Format Remplissage Onglet "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)
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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_PageActive Dim LaPage As Object LaPage = ThisComponent.getCurrentController.CurrentPage MsgBox "Nom: " & LaPage.Name & " End Sub
Numéro: " & LaPage.Number
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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'elle contient. 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 i End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 la présentation. Dans notre exemple la nouvelle page va être nommée "Page 4" et les autres pages seront automatiquement renommées en 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).
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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.Start End 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 = oPos End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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ères End Function
Comment revenir sur la première diapo lorsque l'on est arrivé à la fin de la présentation ? Auteurs : Silkyroad , Menu Diaporama Paramètres du diaporama Sélectionnez l'option "Type" = Auto Indiquez la durée 00:00:00 Cliquez 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 les informations apparaissant dans les entêtes et pieds de page de cette première diapo, par soucis d'esthétique. Menu Affichage En-têtes et pieds de page Onglet "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 sous forme de liens externes. Il n'est actuellement pas possible d'incorporer les fichiers multimédias dans un diaporama (OOo 2.1). Vous devrez recré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 le même répertoire.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 des contrô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 macros Faites 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.Dispose End 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 Long Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,ByVal nIndex As Long) As Long - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 = 8 Private 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 i End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 ListBox Sub ListBox_disposing(oEvent) End Sub 'Affiche le contenu de la ligne sélectionnée lors d'un double clic Sub ListBox_actionPerformed(oEvent) MsgBox oEvent.Source.SelectedItem & " Ligne: " & oEvent.Source.SelectedItemPos + 1 End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Select End 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 Select End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 droit sur 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 )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 LireContenuLigneSelectionnee 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 MsgBox "Vous avez sélectionné la ligne " & j +1 & " qui contient la donnée: " & _ oDialog1.getControl("ListBox1").SelectedItem
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 de dialogue:
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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 texte MsgBox 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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'objet Propriétés Onglet Evènements Pour 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 des fichiers 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 Dialogs Sub 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Select End 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 focus sur un contrôle. L'exemple ci dessous applique le gestionnaire d'évènement sur les zones de texte contenues dans la boîte de dialogue Dialog1. Chaque objet type "TextField" (UnoEditControl) change ensuite de couleur lorsqu'il prend le focus.
Global oDialog1 As Object Private 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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 focus Sub 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 focus Sub 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 un contrô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 With End Sub
Comment afficher la date du jour dans un contrôle DateField ? Auteurs : Silkyroad ,
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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.Text End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 EnregistrerSous Dim Fichier As String Dim 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_CopieDeSauvegarde Dim Fichier As String Dim 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())
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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ées MsgBox 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 modification MsgBox ThisComponent.IsModified 'Annule l'indication de modification - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 modification MsgBox ThisComponent.IsModified End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 If End 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 String Dim oSimpleFileAccess As Object Dim 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 Tableau Tableau = 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
MsgBox Resultat End 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_V01 Dim 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 If End Sub
Deuxième possibilité.
Sub Dim Dim Dim Dim
listerRepertoires_V02 Chemin As String , NomObj As String oSimpleFileAccess As Object i As Integer 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 i End Sub
Comment vérifier l'existence d'un répertoire ? Auteurs : Silkyroad , Sub VerifieExistenceRepertoire_V01 Dim Chemin As String Chemin = "C:\Documents and Settings\michel\dossierOOo" If Dir(Chemin,vbDirectory) > "" then MsgBox "Ce dossier existe." Else - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 If End Sub
Une deuxième solution consiste à utiliser la fonction FileExists.
Sub VerifieExistenceRepertoire_V02 Dim 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 pas MkDir "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 Dim Dim Dim Dim Dim
lister_PathSettings j As Integer , i As integer , x As Integer oPathSettings As Object , objProprieteSetInfo As Object Tableau() , TabChemin() objPropriete As Object , Feuille As Object ValPropriete As String , NomPropriete As String , Chemin As String
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 classeur Feuille = 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 pas oShell.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 )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Object Dim 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_V02 Dim 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 CopierFichier Dim Source As String , Destination As String Dim 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. - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 Dim Dim Dim Dim Dim Dim
ListerFiltresConversion() oDesktop As Object , oDoc As Object Fichier As String Args() filtresFact As Object nomFiltres As Variant 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 macro oDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args()) 'Spécifie le 1ere feuille du classeur Feuille = 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 seront tous enregistrés, à la suite, dans le même fichier pdf.
Sub dim dim dim
Convertir_Calc_Vers_PDF ArgsProprietes(2) as new com.sun.star.beans.PropertyValue Fichier as string 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 sont le nouveau standard OpenDocument: Pour effectuer la conversion d'un ou plusieurs documents: Menu Fichier Assistants Convertisseur de documents Sé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 zones d'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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 le fichier original. Le classeur original est supposé deja enregistré sur le disque.
Dim Dim Dim Dim
oDoc As Object i As Integer EnrArgs(1) As New com.sun.star.beans.PropertyValue 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)))
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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").Source End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 laMacro = Chr(13) & laMacro = laMacro & laMacro = laMacro &
de la nouvelle macro Chr(13) & "Sub Test" & Chr(13) "MsgBox " & Chr(34) & "Coucou" & Chr(34) & Chr(13) "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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 de l'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 ci dessous:
Sub Main MsgBox com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN End 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 - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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:///" & Cible End Function
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 texte MsgBox 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 texte MsgBox 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
Dim x As Integer x = InStr(1, "Developpez", "e") + 1 MsgBox 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 0 MsgBox 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 10 MsgBox 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 la procé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 If End Sub
Remplacer des caractères dans une chaîne.
'mimi est transformé en fifi MsgBox 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 - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 String Chaine = " 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éments sont 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éparateur MsgBox 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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 i End 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îne alphanumé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 Cible 'pour Cible
que fonction Val puisse reconnaitre les décimales = Join(Split( Cible , ","), ".") gérer deux nombres qui se suivent = 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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,...) to _
" vous apporte gratuitement une multitude d'avantages : newsletter, magazine, actualités, cours, tutoriels, ar _ "comparatifs, débats, sondages, outils, sources, composants et exemples de codes, les BLOGs des développeurs, _
"développeurs. Le club est animé bénévolement par tous les membres du club et en particulier par l'équipe de r _ "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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
ScinderChaine = Resultat End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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( "destinataire1@mail.fr" ) 'En copie conforme .setCcRecipient( Array("destinataire2@mail.fr" , "destinataire3@mail.fr") ) '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:destinataire@mail.fr" & _ "?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:
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
mailto:dest1@mail.fr;dest2@mail.fr
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 = "destinataire@mail.fr" .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"
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 le contenu 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 du systê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 - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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é et indique 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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", 1 End Sub
Et pour arrêter la lecture en cours:
Sub ArreterLecture_Wav sndPlaySound32 0 , 0 End Sub
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 #1 End 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 #Cible End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
Loop Close #1 End 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 = Nothing End 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 - 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 : " & nbLignes End 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")
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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.Close End 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 maVariable End 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 de cette variable, puis afficher le nouveau résultat:
Sub afficherValeur() Dim maVariable As Integer maVariable = 10 MsgBox maVariable maVariable = maVariable + 20 MsgBox maVariable End Sub
Evitez de nommer les variables en utilisant des mots clés ou instructions/fonctions réservés par l'application (par exemple 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 relecture de 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 incorrecte pour un contexte particulier, peut génèrer un message d'erreur. Chaque type de donnée utilise un espace mémoire. Il est donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilement le 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 chaque variable. Par exemple, si pour définir 3 variables de type String (strVar1, strVar2 et strVar3) vous écrivez: Dim strVar1 , strVar2 , strVar3 As String Dans 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 grande pré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 entre 1,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 et 1,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.
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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 se produit).
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 et uniquement 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 de module et en dehors des procédures Sub ou Function: GLOBAL VarName As TYPENAME La variable est valide tant que la session OpenOffice.org est ouverte. PUBLIC VarName As TYPENAME La variable est valide dans tous les modules. PRIVATE VarName As TYPENAME La variable est valide dans ce module. DIM VarName As TYPENAME La 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 toute l'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 pour la 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 * 2 End 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éressantes pour réadapter un format, par exemple suite à un transfert de données brutes que vous souhaitez utiliser en type Date, numérique...
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/
Fonction CBool
Type renvoyé Boolean
CByte
Byte
CCur
Currency
CDate
Date
CDbl
Double
CDec
Decimal
CInt
Integer
CLng
Long
CSng
Single
CStr
String
CVar
Variant
Type de conversion Convertit une comparaison de chaînes de caractères ou une comparaison numérique en expression logique, ou bien une expression numérique en expression logique. Convertit une chaîne de caractères ou une expression numérique en type Byte. Convertit une expression de chaîne ou une expression numérique en expression monétaire. Convertit une expression au format chaîne de caractères ou numérique en valeur de date. Convertit une expression au format chaîne de caractères ou numérique en valeur de type Double. Convertit une expression de chaîne ou une expression numérique en expression décimale. Convertit une expression au format chaîne de caractères ou numérique en nombre entier. Convertit une expression au format chaîne de caractères ou numérique en nombre entier long. Convertit une expression au format chaîne de caractères ou numérique en valeur de type Single (simple). Convertit une expression numérique en expression au format chaîne de caractères. Convertit une expression de chaîne ou une expression numérique en expression de type variant.
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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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: Dans ce cas, utilisez la fonction IsMissing pour déterminer si des arguments facultatifs ont été fournis lors de l'appel de la procédure. La fonction renvoie True si aucune valeur correspondant à l'argument spécifié n'a été passée, sinon elle renvoie 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( maFonction( maFonction( maFonction( End Sub
"OOo" "OOo" "OOo" "OOo"
) , 50 ) , 50 , 100 ) , , 100 )
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 ou Object) 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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" )
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 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
- 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 sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2006 Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. http://ooo.developpez.com/faq/