Re: [prog] Probleme avec le ConfigurationProvider dans la 3.3
Bonjour, Bonne nouvelle! Merci. Thibault - Mail original - De: Jean-Baptiste Faure jbf.fa...@laposte.net À: prog@fr.openoffice.org Envoyé: Mercredi 22 Septembre 2010 12:47:28 Objet: Re: [prog] Probleme avec le ConfigurationProvider dans la 3.3 Le 20/09/2010 10:59, Thibault Vataire a écrit : Bonjour, Le problème a été reporté sur le bug tracker d'OOo : http://qa.openoffice.org/issues/show_bug.cgi?id=111970 Bonjour, J'ai demandé hier soir et obtenu ce matin que ce bug soit considéré comme un release blocker pour la 3.3. Bonne journée JBF -- Seuls des formats ouverts peuvent assurer la pérennité de vos documents. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Probleme avec le ConfigurationProvider dans la 3.3
Bonjour, Le problème a été reporté sur le bug tracker d'OOo : http://qa.openoffice.org/issues/show_bug.cgi?id=111970 Cordialement, T. Vataire - Mail original - De: Didier Dorange-Pattoret ddora...@dmaths.org À: prog@fr.openoffice.org Envoyé: Samedi 18 Septembre 2010 14:31:00 Objet: [prog] Probleme avec le ConfigurationProvider dans la 3.3 Bonjour, J'ai un pb avec les macros ci-dessous qui fonctionnaient bien jusqu'a la 3.2.1: /Sub Main cNodePath = .org.openoffice.Office/Addons/AddonUI/OfficeToolbar bWriteAccess = True GetConfigAccess(cNodePath,bWriteAccess) End Sub Function GetConfigAccess( ByVal cNodePath As String,ByVal bWriteAccess As Boolean,Optional bEnableSync,Optional bLazyWrite) As Object If IsMissing(bEnableSync) Then bEnableSync = True If IsMissing( bLazyWrite ) Then bLazyWrite = False Dim oConfigProvider, oConfigAccess as Object oConfigProvider = GetProcessServiceManager.createInstanceWithArguments(com.sun.star.configuration.ConfigurationProvider,Array( MakePropertyValue( enableasync, bEnableSync))) If bWriteAccess Then cServiceName = com.sun.star.configuration.ConfigurationUpdateAccess Else cServiceName = com.sun.star.configuration.ConfigurationAccess EndIf oConfigAccess = oConfigProvider.createInstanceWithArguments( cServiceName, Array( MakePropertyValue( nodepath, cNodePath ), MakePropertyValue( lazywrite, bLazyWrite ))) GetConfigAccess() = oConfigAccess End Function Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue Dim oPropertyValue As New com.sun.star.beans.PropertyValue If Not IsMissing( cName ) Then oPropertyValue.Name = cName EndIf If Not IsMissing( uValue ) Then oPropertyValue.Value = uValue EndIf MakePropertyValue() = oPropertyValue End Function/ Le paramètre enableasync semble invalide, contrairement à ce que dit le SDk pour la 3.3. On peut tester avec cNodePath = .org.openoffice.Office/Addons/AddonUI/OfficeToolbar /bWriteAccess = True Merci pour vos réponses. / -- Didier Dorange-Pattoret Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement ! - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] publi-postage à l'envers
Bonjour, Voici un exemple inspiré de l'aide d'OOo au sujet de la fonction Dir : sub main dim const inputPath = /media/partage/Dest dim const filePrefix = fichier_ dim const fileExt = ods dim aFileName as string dim aFile aFileName = dir$(convertToUrl(inputPath getPathSeparator() filePrefix * . fileExt), 0) while (aFileName ) aFile = starDesktop.loadComponentFromUrl(convertToUrl(inputPath getPathSeparator() aFileName), _ _blank, com.sun.star.frame.FrameSearchFlag.CREATE, array()) if (not isNull(aFile)) then 'traiter le fichier aFile.dispose() end if aFileName = dir$ wend end sub Cordialement, Thibault Vataire - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Dimanche 1 Août 2010 13:02:34 Objet: [prog] publi-postage à l'envers Bonjour à tous, Est-il possible de récupérer par macro les noms de tous les fichiers contenus dans un dossier ? L'idée est de faire un publi-postage à l'envers. je m'explique : J'ai un dossier avec une centaine de fichiers .xls ayant la même structure. Il s'agit de factures, et je souhaite remplir une base de données avec les destinataires de ces factures. Le problème est d'arriver à ouvrir les fichiers sans les nommer ( du style for i = 1 to 100 ouvrir fichier_i) ou de récupérer les noms. D'avance merci pour vos suggestions, Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Position de la souris dans un document dessin
Bonjour, Voici une solution pour recuperer ces coordonnees : sub main dim doc as object dim controller as object dim statusBar as object dim accessibleContext as object dim target as object doc = thisComponent controller = doc.currentController if (not isNull(controller)) then statusBar = _getStatusBar(controller.frame.layoutManager) if (not isNull(statusBar)) then target = _getAccessibleChildByName(statusBar.realInterface, Taille) if (not isNull(target)) then msgbox(target.text) end if end if end if end sub function _getAccessibleChildByName(accessibleObject as object, aName as string) as object dim result as object dim accessibleContext as object dim childIndex as long dim aChild as object accessibleContext = accessibleObject.accessibleContext while ((childIndex accessibleContext.accessibleChildCount) and isNull(result)) aChild = accessibleContext.getAccessibleChild(childIndex) if (aChild.accessibleName = aName) then result = aChild else result = _getAccessibleChildByName(aChild, aName) end if childIndex = childIndex + 1 wend _getAccessibleChildByName = result end function function _getStatusBar(layManager as object) as object dim result as object dim elements as object dim anElement as object dim elemIndex as long elements = layManager.elements() elemIndex = lbound(elements) while ((elemIndex = ubound(elements)) and isNull(result)) anElement = elements(elemIndex) if (_isStatusBar(anElement)) then result = anElement end if elemIndex = elemIndex + 1 wend _getStatusBar = result end function function _isStatusBar(anObject as object) as boolean dim success as boolean on local error resume next success = (anObject.type = com.sun.star.ui.UIElementType.STATUSBAR) _isStatusBar = success end function Cordialement, Thibault Vataire - Mail Original - De: Didier Dorange-Pattoret ddora...@dmaths.org À: prog@fr.openoffice.org Envoyé: Jeudi 1 Juillet 2010 14:08:22 Objet: [prog] Position de la souris dans un document dessin Bonjour à tous, Lorsqu'un document dessin est affiché, on peut remarquer, dans la dernière ligne à côté de diapo 1/1, deux nombres qui donnent la position du curseur, exprimée en cm, par rapport au coin supérieur gauche de la page de dessin. Comment peut-on récupérer ces coordonnées ? Merci pour votre aide. -- Didier Dorange-Pattoret http://www.dmaths.org http://sesamath.net Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement ! http://www.dmaths.org/documentation/doku.php?id=presentation:club - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Affichage d'un cadre dans document texte
Bonjour, J'ai fait différents tests dans différents contextes (documents créés par macros, déja existant, déjà ouvert) et mes cadres apparaissent systématiquement, qu'OOo vienne d'être lancé ou non. Pouvez-vous nous donner plus d'information sur le contexte de votre macro : - le type et format des documents utilisés (j'ai fais mes tests sur des documents texte au format ODT) - ces documents existent déjà sur votre poste et sont ouvert par la macro, ou bien sont-ils créés à la volée Avez-vous vérifié que vos cadres étaient bien insérés ? C'est à dire qu'ils sont insérés mais non visibles. S'ils ne sont pas insérés, peut-être qu'au moment de l'insertion, MonDocument ne représente pas le bon document. Cordialement, T. Vataire. - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Vendredi 18 Juin 2010 10:13:33 Objet: Re: [prog] Affichage d'un cadre dans document texte Et bien fait, non; ça ne marche pas. En tout cas pas deux fois de suite ! C'est à n'y rien comprendre. En fait, avec ou sans la ligne de code d'Agnès, mes 2 premiers cadre apparaissent lors de la première ouverture du document, ou plutôt devrais-je dire d'un document. Si je relance l'appli, sans avoir quitté et relancé Ooo, mes cadres n'apparaissent plus, quel que soit le document texte ouvert par mon appli ( devis, facture .. ). Si quelqu'un à une idée, je suis preneur. Bien cordialement, Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Affichage d'un cadre dans document texte
De mon coté non plus, je ne parviens pas à sélectionner à la souris les cadres insérés. Il me faut insérer une forme de dessin à partir de la barre de dessin puis naviguer jusqu'a la forme à sélectionner avec la touche tabulation. Quels sont les arguments passé avec propFich ? Pour vérifier si les cadres sont insérés, vous devez analyser le contenu de la collection de formes de dessin de votre document (MonDocument.drawPage). Pouvez-vous mettre en piece-jointe un document sur lequel les cadres n'apparaissent pas. Cordialement, - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Vendredi 18 Juin 2010 11:28:25 Objet: Re: [prog] Affichage d'un cadre dans document texte Bonjour Thibault, Il s'agit d'une macro permettant de visualiser une facture. Le document texte est créé par la macro avec l'instruction suivante : adresseDoc = private:factory/swriter MonDocument = StarDesktop.LoadComponentFromURL(adresseDoc,_blank, 0, propFich) Concernant l'insertion des cadres, je suis plus embêté pour vous répondre car, même quand ils apparaissent dans mon document, je n'arrive ni à les sélectionner ni à atteindre le texte placé à l'intérieur. Encore merci de vous être penché sur mon problème, Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Affichage d'un cadre dans document texte
Bonjour, Après avoir analysé votre document, il semble que pour une raison inconnue, le type de ligne sélectionné soit Invisible. Peut être votre macro modifie-elle cette propriété quelque part. Voici un bout de code permettant de réafficher vos cadres : sub test dim index as long dim dp as object dim aShape as object dp = thisComponent.drawPage for index = 0 to (dp.count - 1) aShape = dp.getByIndex(index) if (aShape.shapeType = com.sun.star.drawing.RectangleShape) then dp.getByIndex(index).lineStyle = com.sun.star.drawing.LineStyle.SOLID end if next end sub Pour analyser un object (une collection ou autre), je vous conseille d'utiliser l'outil Xray, disponible ici : http://www.ooomacros.org/dev.php#101416 Cordialement, T. Vataire - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Vendredi 18 Juin 2010 12:19:12 Objet: Re: [prog] Affichage d'un cadre dans document texte Re-bonjour, Je ne passe aucun argument avec propFich. Juste le code de mon précédent mail. Pour analyser le contenu de la collection de formes de dessin je fais comment ? par macro ? Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Affichage d'un cadre dans document texte
La conclusion semble donc être qu'il faut absolument définir la propriété lineStyle d'un cadre, faute de quoi on est pas certain qu'il soit visible. Non je ne pense pas car de mon coté, les cadres insérés dans un document sont systématiquement visibles. Je pense plutot que votre macro modifie cette propriété d'une façon ou d'une autre. Testez avec cette macro pour vous en assurer : sub main dim const horiPos = 0 dim const width = 8000 dim const height = 3000 Dim MonDocument as object MonDocument = starDesktop.loadComponentFromUrl(private:factory/swriter, _ _blank, _ com.sun.star.frame.FrameSearchFlag.CREATE, _ array()) MonTexte = MonDocument.Text Moncurseur = MonTexte.createTextCursor() MonTexte.insertTextContent(Moncurseur, createFrame(width, height, 1500, horiPos, MonDocument), false) MonTexte.insertTextContent(Moncurseur, createFrame(width, height, 4500, horiPos, MonDocument), false) MonTexte.insertTextContent(Moncurseur, createFrame(width, height, 7500, horiPos, MonDocument), false) end sub function createFrame(width as long, height as long, vertOriPos as long, horiOriPos as long, MonDocument as object) as object Dim Taille1 As New com.sun.star.awt.Size dim MonCadre1 as object MonCadre1 = MonDocument.createInstance(com.sun.star.drawing.RectangleShape) Taille1.Width = width Taille1.Height = height With MonCadre1 .CornerRadius = 600 .FillColor = RGB (255,255,255) .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH .VertOrient = com.sun.star.text.VertOrientation.NONE .VertOrientPosition = vertOriPos .HoriOrient = com.sun.star.text.HoriOrientation.NONE .HoriOrientPosition = horiOriPos .Size = Taille1 End With createFrame = MonCadre1 end function Par contre, il est étrange que dans votre cas, les cadres soient parfois visible et parfois non. Cordialement, T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Affichage d'un cadre dans document texte
Bonjour, Concernant votre précédent message, avez vous testé ceci : - fermer OOo, y compris le démarrage rapide s'il est actif - déplacer le répertoire de la librairie se trouvant dans votre profil utilisateur vers un autre emplacement - relancer OOo - Menu Outils Macros Gérer les macros OpenOffice.org Basic, bouton Gérer - aller sur l'onglet bibliothèque et choisir Importer - selectionner le fichier script.xlb se trouvant dans le répertoire déplacé précedemment - verifier que la lib à bien été importé. Cela dit, convertir votre macro pour la rendre compatible avec les versions récentes d'OOo est une bonne chose. Pour ce qui est de l'exemple de code que vous nous avez fait parvenir, il fonctionne chez moi si je l'exécute sur un document déjà ouvert. J'ai juste ajouté ces deux lignes au debut : dim MonDocument as object MonDocument = thisComponent Pour info, je suis en 3.2.0 officielle. Cordialement, T. Vataire - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Jeudi 17 Juin 2010 08:32:18 Objet: [prog] Affichage d'un cadre dans document texte Bonjour à tous, N'ayant malheureusement pas beaucoup de succès avec ma bibliothèque fantôme, je me suis décidé à porter ma petite appli sous Ooo3.2. Ca avance un peu, mais vous risquez de me voir souvent par ici dans les jours qui viennent ! Je suppose que toutes les erreurs de codage qui pouvaient passer sous 1.1.4 ne passent plus dans les versions modernes. Bref, j'en viens à mon problème du moment. Voici un bout de code qui permettait d'afficher un cadre à bords arrondis. Il ne marche plus, mais je n'ai pas de message d'erreur. Peut-être pouvez-vous m'aider Dim Taille1 As New com.sun.star.awt.Size MonTexte = MonDocument.Text Moncurseur = MonTexte.createTextCursor Dim MonCadre1 as object MonCadre1 = MonDocument.createInstance(com.sun.star.drawing.RectangleShape) Taille1.Width = 8000 Taille1.Height = 3000 With MonCadre1 .CornerRadius = 600 .FillColor = RGB (255,255,255) .AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH .VertOrient = com.sun.star.text.VertOrientation.NONE .VertOrientPosition = 1500 .HoriOrient = com.sun.star.text.HoriOrientation.NONE .HoriOrientPosition = 8000 .Size = Taille1 End With MonTexte.insertTextContent(Moncurseur, MonCadre1, false) D'avance merci, Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] ma Bibliothèque à Disparu
Bonjour, La biliothèque Cinesoft est-elle visible dans la fenêtre de sélection de macros ? Trouvez-vous un répertoire Basic\Cinesoft dans votre profil utilisateur OpenOffice.org. Cordialement, T. Vataire - Mail Original - De: Martin Blaizot martin.blai...@wanadoo.fr À: prog@fr.openoffice.org Envoyé: Mardi 15 Juin 2010 09:27:03 Objet: [prog] ma Bibliothèque à Disparu Bonjour à tous, Mon appli préférée Bug depuis hier soir. L'instruction suivante DialogLibraries.LoadLibrary( Cinesoft )provoque le message d'erreur : Type: com.sun.star.container.NoSuchElementException Je n'ai absolument rien changé; un jour cela marchait, le lendemain pas. Ma bibliothèque Cinesoft est bien là avec tous ses modules. Je suis sous Win XP et open office 1.1.4. Je sais il va bien falloir que je passe un jour sous O.o.o.3, mais j'avais essayé avec Ooo.2 et mon appli ne tournait pas. Et comme j'en ai besoin vraiment tous les jours pour le boulot, je n'ai jamais eu le temps de trouver ce qui clochait. Merci pour vos éclaircissements, Bien à vous, Martin - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Est-il possible de casser le lien d'un tableau ?
Bonjour, L'exemple que je vous avais fournis ne fonctionne que dans le cas d'un tableau Writer collé avec avec liaison DDE. Il ne fonctionne pas avec un tableau Calc. Malheureusement je n'ai pas trouvé d'équivalent pour un tableau calc. Cordialement, T. Vataire - Mail Original - De: nimel ni...@free.fr À: prog@fr.openoffice.org Envoyé: Vendredi 21 Mai 2010 18:40:02 Objet: [prog] Re: Est-il possible de casser le lien d'un tableau ? Thibault Vataire a écrit : Bonjour, Pouvez-vous me faire parvenir un document d'exemple contenant un tableau tel que celui que vous utilisez afin de determiner d'où vient le problème? Cordialement, T. Vataire Houla !! Oui je veux bien mais c'est un peu compliqué. Au départ c'est un doc Calc qui est trituré par une macro qui ouvre d'après un modèle un doc Writer dans lequel une 2ème macro colle un bout du tableau qui devient le tableau en question. J'envoie quoi ? Un document final Writer après traitement avec le tableau dedans je suppose ? Oui allez, je fais ça (ci-joint) - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Copier à partir du presse-papier
Bonjour, Quelle est le format exact de la source à partir de laquelle les données sont copiée dans le presse papier ? Est-ce un tableau Writer ? Si c'est le cas, voici un exemple qui, je l'espère, pourrait correspondre à ce que vous souhaiter réaliser : option explicit sub main dim destCalc as object dim tmpCDoc as object dim tmpCController as object dim tmpCFrame as object dim dispatchHelper as object dim destCalcController as object dim destCalcFrame as object destCalc = thisComponent tmpCDoc = starDesktop.loadComponentFromUrl(private:factory/scalc, _blank, com.sun.star.frame.FrameSearchFlag.CREATE, getHiddenArgs()) tmpCController = tmpCDoc.currentController if (not isNull(tmpCController)) then tmpCFrame = tmpCController.frame dispatchHelper = createUnoService(com.sun.star.frame.DispatchHelper) dispatchHelper.executeDispatch(tmpCFrame, .uno:Paste, , 0, array()) dispatchHelper.executeDispatch(tmpCFrame, .uno:SelectData, , 0, array()) dispatchHelper.executeDispatch(tmpCFrame, .uno:Copy, , 0, array()) destCalcController = destCalc.currentController if (not isNull(destCalcController)) then dispatchHelper.executeDispatch(destCalcController.frame, .uno:InsertContents, , 0, getPasteArgs()) end if end if tmpCDoc.dispose() end sub function getPasteArgs() as variant dim result(5) as new com.sun.star.beans.PropertyValue result(0).Name = Flags result(0).Value = SVD result(1).Name = FormulaCommand result(1).Value = 0 result(2).Name = SkipEmptyCells result(2).Value = false result(3).Name = Transpose result(3).Value = false result(4).Name = AsLink result(4).Value = false result(5).Name = MoveMode result(5).Value = 4 getPasteArgs = result end function function getHiddenArgs() as variant dim result(0) as new com.sun.star.beans.PropertyValue result(0).name = Hidden result(0).value = true getHiddenArgs = result end function Cordialement, T. Vataire - Mail Original - De: PREF31 Open-Office open-off...@haute-garonne.pref.gouv.fr À: prog@fr.openoffice.org Envoyé: Mardi 18 Mai 2010 07:48:28 Objet: Re: [prog] Copier à partir du presse-papier Message original Sujet : Re: [prog] Copier à partir du presse-papier De : Agnès Simonet agnes.simo...@laposte.net Pour : prog@fr.openoffice.org Date : 17/05/2010 21:07 PREF31 Open-Office a écrit : Bonjour et merci Mais ce que je voudrais faire c'est un collage spécial de texte non formaté dans calc et que l'utilisateur n'ai pas à choisir les options de la boite de dialogue import de texte (langage, numéro de ligne, séparateurs ..) En enregistrant la macro cela me donne le code ci dessous mais je n'ai trouvé nulle part les noms et valeurs des arguments qui rendraient cet import silencieux pour l'utilisateur sub Main rem -- rem define variables dim document as object dim dispatcher as object rem -- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService(com.sun.star.frame.DispatchHelper) rem -- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = Format args1(0).Value = 1 dispatcher.executeDispatch(document, .uno:PasteSpecial, , 0, args1()) end sub Claude Bonsoir, A propos de PasteSpecial, j'ai vu passer ça il y a quelques jours : http://user.services.openoffice.org/fr/forum/viewtopic.php?f=8t=22551 Agnès S. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org Bonjour, Apparemment, ce fil évoque le même problème que je rencontre, c'est à dire trouver les bons arguments pour que la boite de dialogue ne s'affiche pas. Merci quand même Claude - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Insérer un document writer dans Impress
Bonjour, Le plus simple est d'utiliser le service com.sun.star.frame.DispatchHelper pour executer la commande du menu EditionObjetEditer : sub insereTexte dim doc as object dim obj as object dim aPos as variant dim aSize as variant dim controller as object dim dispatcher as object dim args1(0) as new com.sun.star.beans.PropertyValue doc = thisComponent obj = doc.CreateInstance(com.sun.star.drawing.OLE2Shape) ... controller = doc.currentController if (not isNull(controller)) then if (controller.select(obj)) then dispatcher = createUnoService(com.sun.star.frame.DispatchHelper) args1(0).Name = VerbID args1(0).Value = 65535 dispatcher.executeDispatch(controller.frame, .uno:ObjectMenue, , 0, args1()) end if end if end sub Cordialement, T. Vataire - Mail Original - De: Didier Dorange-Pattoret ddora...@dmaths.org À: prog@fr.openoffice.org Envoyé: Samedi 15 Mai 2010 16:40:37 Objet: Re: [prog] Insérer un document writer dans Impress Bonjour Thibault, Merci pour votre réponse. Je cherche en fait à faire ouvrir une fenêtre writer dans un document impress pour pouvoir utiliser les fonctionnalités de Dmaths et donc insérer facilement des formules dans la présentation. J'écris donc comme dernières lignes : obj.EmbeddedObject.Component.Text.String= ThisComponent.CurrentController.Select(obj) Pour que l'objet inséré soit sélectionné et donc éditable par double-clic. Est-il possible d'écrire du code qui équivaut à ce double clic, pour que l'objet soit mis directement en mode édition ? Merci d'avance. Thibault Vataire a écrit : Bonjour, Le problème de votre exemple vient de la manière dont vous modifiez les valeurs de positions et de taille. Voici comment procéder pour que cela fonctionne : sub insereTexte dim obj as object dim aPos as variant dim aSize as variant obj = ThisComponent.CreateInstance(com.sun.star.drawing.OLE2Shape) aPos = obj.position aPos.x = 2000 aPos.y = 2000 obj.position = aPos aSize = obj.size aSize.height = 2000 aSize.width = 2000 obj.size = aSize obj.CLSID = 8BC6B165-B1B2-4EDD-aa47-dae2ee689dd6 obj.name = WriterObj thisComponent.drawpages(0).add(obj) obj.EmbeddedObject.Component.Text.String= C'est dur linfo end sub Cordialement. T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org -- Didier Dorange-Pattoret http://www.dmaths.org http://sesamath.net Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement ! http://www.dmaths.org/documentation/doku.php?id=presentation:club - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Insérer un document writer dans Impress
Voici quelques liens concernant le framework Dispatch : http://api.openoffice.org/docs/common/ref/com/sun/star/frame/DispatchHelper.html http://api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.xhtml#1_1_6_Using_the_Dispatch_Framework http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Dispatch_Framework http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Using_the_Dispatch_Framework http://api.openoffice.org/files/documents/22/1344/slots.sxc Mais le plus simple reste d'observer le code généré par l'enregistreur de macros. http://wiki.services.openoffice.org/wiki/The_OpenOffice.org_recorder_and_UNO_dispatch_calls Cordialement, T. Vataire - Mail Original - De: Didier Dorange-Pattoret ddora...@dmaths.org À: prog@fr.openoffice.org Envoyé: Dimanche 16 Mai 2010 22:40:06 Objet: Re: [prog] Insérer un document writer dans Impress Bonsoir, Merci Thibault pour cette aide précieuse. J'ai intégré la macro dans Dmaths. Les utilisateurs pourrons accéder aux fonctionnalités de Dmaths depuis Impress ... Thibault Vataire a écrit : Bonjour, Le plus simple est d'utiliser le service com.sun.star.frame.DispatchHelper pour executer la commande du menu EditionObjetEditer : Où peut-on trouver une documentation pour ce service ? sub insereTexte dim doc as object dim obj as object dim aPos as variant dim aSize as variant dim controller as object dim dispatcher as object dim args1(0) as new com.sun.star.beans.PropertyValue doc = thisComponent obj = doc.CreateInstance(com.sun.star.drawing.OLE2Shape) ... controller = doc.currentController if (not isNull(controller)) then if (controller.select(obj)) then dispatcher = createUnoService(com.sun.star.frame.DispatchHelper) args1(0).Name = VerbID args1(0).Value = 65535 dispatcher.executeDispatch(controller.frame, .uno:ObjectMenue, , 0, args1()) end if end if end sub -- Didier Dorange-Pattoret http://www.dmaths.org http://sesamath.net Soutenez le projet Dmaths : rejoignez le club ou faites adhérer votre établissement ! http://www.dmaths.org/documentation/doku.php?id=presentation:club - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Insérer un document writer dans Impress
Bonjour, Le problème de votre exemple vient de la manière dont vous modifiez les valeurs de positions et de taille. Voici comment procéder pour que cela fonctionne : sub insereTexte dim obj as object dim aPos as variant dim aSize as variant obj = ThisComponent.CreateInstance(com.sun.star.drawing.OLE2Shape) aPos = obj.position aPos.x = 2000 aPos.y = 2000 obj.position = aPos aSize = obj.size aSize.height = 2000 aSize.width = 2000 obj.size = aSize obj.CLSID = 8BC6B165-B1B2-4EDD-aa47-dae2ee689dd6 obj.name = WriterObj thisComponent.drawpages(0).add(obj) obj.EmbeddedObject.Component.Text.String= C'est dur linfo end sub Cordialement. T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Copier à partir du presse-papier
Bonjour, Ci-dessous un exemple permettant de coller le contenu du presse papier dans un document Writer. sub pasteClipboardContent() dim controller as object controller = thisComponent.currentController if (not isNull(controller)) then controller.insertTransferable(createUnoService(com.sun.star.datatransfer.clipboard.SystemClipboard).contents) end if end sub En espérant que cela corresponde à ce que vous souhaitiez faire. Cordialement, T. Vataire. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Comment Ajouter un emplacement de fichiers de confiance pour les macro
Bonjour, Pour ajouter un emplacement de fichiers de confiance tel qu'il est possible de le faire depuis le menu OutilsOptionsSécuritéSécurité des macrosSources de confiances, vous pouvez déployer sur vos postes une extension qui contiendra le fichier de configuration adéquat. Vous trouverez en pièce jointe un exemple d'extension définissant le répertoire basic du profil utilisateur comme emplacement de fichiers de confiance. Utiliser une extension présente deux avantages : - possibilité de déployer l'extension en mode partagé (pour l'ensemble des utilisateurs du poste actuels et à venir) - les personnalisations apportées par l'extension sont fusionnées avec les personnalisations pré-existantes du poste L'installation d'une extension en mode partagé se fait en ligne de commande avec l'outil unopkg : rep. installation OOo\program\unopkg add --shared chemin de l'extension Voici comment procéder : - definir l'emplacement de confiance depuis le menu OutilsOptionsSécuritéSécurité des macrosSources de confiances de l'interface graphique - fermer completement OOo, y compris le démarrage rapide - depuis un explorateur de fichier, naviguer jusqu'au profil OOo de votre compte utilisateur - copier le fichier registry/data/org/openoffice/Office/Common.xcu et supprimer le contenu non spécifique - créer les fichiers de configuration de l'extension et y ajouter le fichier Common.xcu créé précedemment - déclarer le fichier Common.xcu dans le fichier META-INF/manifest.xml de l'extension - zipper l'ensemble de ces fichiers, puis renommer l'archive zip en nom_extension.oxt - déployer l'extension La documentation concernant les extensions se trouve ici : http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Extensions/Extensions Cordialement, T. Vataire - Mail Original - De: Samuel Mounier (Liste CGO) ldiffus...@cgocean.com À: prog@fr.openoffice.org Envoyé: Mardi 27 Avril 2010 08:57:44 Objet: [prog] Comment Ajouter un emplacement de fichiers de confiance pour les macro Bonjour, Je maintiens un parc d'une centaine de portable sur lequel j'ai besoin d'ajouter un emplacement de fichiers de confiance, afin que nos utilisateurs n'ai pas à configurer d'eux même cet emplacement. Bien sur pour mes 100 micro, je voudrai éviter de passer dessus pour le faire à la main. Et je préfèrerai utiliser un batch ou un script pour modifier cette configuration à distance. (j'ai déjà la main à distance en tant qu'administrateur et j'ai aussi la possibilité de mettre à disposition un script ou un batch pour que l'utilisateur n'ai qu'à faire un double-clique). Savez-vous s'il existe un moyen de corriger ce paramétrage j'ai : - Déjà recherché dans les fichiers du profils sans rien trouvé. - Lu pas mal de doc sur les macro et la sécurité et je n'ai rien trouvé non plus Samuel Mounier - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org TrustedLocation-1.0.0.oxt Description: application/vnd.openofficeorg.extension - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] [writer]récupérer les formules dans un tableau
Bonjour, En attendant le resultat des investigations de Cédric, voici une solution de contournement : Sub Main dim curSel as object dim selIndex as long curSel = thisComponent.currentSelection if (curSel.supportsService(com.sun.star.text.TextRanges)) then for selIndex = 0 to (curSel.count -1) traiterParagraphEnum(curSel.getByIndex(selIndex).createEnumeration()) next selIndex end if End Sub sub traiterParagraphEnum(paraEnum as object) dim anElement as object while (paraEnum.hasMoreElements()) anElement = paraEnum.nextElement() if (anElement.supportsService(com.sun.star.text.TextTable)) then traiterTableau(anElement) elseif (anElement.supportsService(com.sun.star.text.Paragraph)) then traiterParagraphe(anElement) else 'ne devrait pas arriver ? : ne rien faire end if wend end sub sub traiterTableau(unTableau as object) dim aCellName as string for each aCellName in unTableau.cellNames traiterParagraphEnum(unTableau.getCellByName(aCellName).createEnumeration()) next aCellName end sub sub traiterParagraphe(unParagraphe as object) dim textPortionEnum as object dim contentEnum as object textPortionEnum = unParagraphe.createEnumeration() while (textPortionEnum.hasMoreElements()) contentEnum = textPortionEnum.nextElement().createContentEnumeration(com.sun.star.text.TextContent) while (contentEnum.hasMoreElements()) BoulotPourObjetUltime(contentEnum.nextElement()) wend wend end sub Sub BoulotPourObjetUltime (Lobjet As Object) if Lobjet.getImplementationName=SwXTextEmbeddedObject then if (Lobjet.embeddedObject.getImplementationName = com.sun.star.comp.math.FormulaDocument) then 'Lobjet est une formule print formule détectée : Lobjet.Name end if end if End Sub Cordialement, T. Vataire - Mail Original - De: Agnès Simonet agnes.simo...@laposte.net À: prog@fr.openoffice.org Envoyé: Mardi 27 Avril 2010 12:05:09 Objet: [prog] [writer]récupérer les formules dans un tableau Bonjour, Je cherche à récupérer les formules d'un document entier ou d'une sélection, pour pouvoir les modifier ensuite. Les formules sont présentes dans le plain-texte et dans un tableau. Pour le document je récupère comme ceci et tout va bien : LeDocument=Thiscomponent LesObjetsEmbedded=leDocument.getEmbeddedObjects for i=0 to LesObjetsEmbedded.count-1 LobjetEmbedded=LesObjetsEmbedded(i) BoulotPourObjetUltime (LobjetEmbedded) next i Pour la sélection je procède ainsi : LaSelection=ThisComponent.getCurrentSelection() LesObjetsSel=LaSelection.getbyIndex(0) LesObjetsTextContent=LesObjetsSel.createContentEnumeration(com.sun.star.text.TextContent) while LesObjetsTextContent.HasMoreElements LobjetTextContent=LesObjetsTextContent.NextElement BoulotPourObjetUltime (LobjetTextContent) wend Le sous-programme BoulotPourObjetUltime : Sub BoulotPourObjetUltime (Lobjet As Object) if Lobjet.getImplementationName=SwXTextEmbeddedObject then if Lobjet.embeddedObject.getImplementationName=com.sun.star.comp.math.FormulaDocument then 'Lobjet est une formule print formule détectée : Lobjet.Name endif endif End Sub Dans le cas de la sélection, les formules ancrées comme caractère dans le tableau ne sont pas vues. J'avoue que je ne comprends pas pourquoi. Quelqu'un aurait-il une idée et -le rève- une solution ? Le fichier exemple est disponible ici : http://agnooo.free.fr/pluxml/data/documents/pb/styles_formules/pb_formules_dans_tableau.odt Bonne journée Agnès S. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Comment Ajouter un emplacement de fichiers de confiance pour les macro
Je ne suis pas sûr de comprendre ce qu'est ce mode partagé. Est-ce pour tous les utilisateur ? Oui, tout à fait. Lors d'une installation en mode partagée, l'extension est installée dans le répertoire installation OOo/share/uno_packages/ et est alors disponible pour l'ensemble des utilisateur du poste. Mais comme je l'avais indiqué je pensait faire la correction avec un batch ou un script. Cela est tout à fait possible. Dans ce cas je préfère ne pas l'utiliser pour mon cas, car je préfère avoir un profil Administrateur brut d'install lorsque j'ai un test de bon fonctionnement à faire dessus. L'idée est de tester sur poste de test (eventuellement une machine virtuelle) puis d'intégrer la modification sur les postes clients au niveau de la couche partagée (rep. install OOo/share/registry/...). Cela évite d'avoir à répeter la même manip pour chacun des comptes utilisateurs sur les postes clients. A le voila mon fichier que je n'arrivai pas à trouver... En fait c'est juste ça qui me manquait. C'est pas faute d'avoir cherché pourtant... Je me suis fait avoir par le $(user) (lors de ma recherche car le dossier ajouté était dans le profile) La variable d'environnement $(user) correspond en fait au chemin du profile OOo d'un utilisateur. Lors d'un déploiement en mode partagé, le fichier de config déployé contient cette variable. Mais lors du lancement d'OOo par un utilisateur, elle est automatiquement interprétée comme le chemin du profile OOo de cet utilisateur. Chaque utilisateur disposera donc d'un emplacement de fichier de confiance qui lui sera spécifique. Cordialement. - créer les fichiers de configuration de l'extension et y ajouter le fichier Common.xcu créé précedemment - déclarer le fichier Common.xcu dans le fichier META-INF/manifest.xml de l'extension - zipper l'ensemble de ces fichiers, puis renommer l'archive zip en nom_extension.oxt - déployer l'extension La documentation concernant les extensions se trouve ici : http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Extensions/Extensions Cordialement, T. Vataire Encore merci pour toutes ces info. Samuel - Mail Original - De: Samuel Mounier (Liste CGO) ldiffus...@cgocean.com À: prog@fr.openoffice.org Envoyé: Mardi 27 Avril 2010 08:57:44 Objet: [prog] Comment Ajouter un emplacement de fichiers de confiance pour les macro Bonjour, Je maintiens un parc d'une centaine de portable sur lequel j'ai besoin d'ajouter un emplacement de fichiers de confiance, afin que nos utilisateurs n'ai pas à configurer d'eux même cet emplacement. Bien sur pour mes 100 micro, je voudrai éviter de passer dessus pour le faire à la main. Et je préfèrerai utiliser un batch ou un script pour modifier cette configuration à distance. (j'ai déjà la main à distance en tant qu'administrateur et j'ai aussi la possibilité de mettre à disposition un script ou un batch pour que l'utilisateur n'ai qu'à faire un double-clique). Savez-vous s'il existe un moyen de corriger ce paramétrage j'ai : - Déjà recherché dans les fichiers du profils sans rien trouvé. - Lu pas mal de doc sur les macro et la sécurité et je n'ai rien trouvé non plus Samuel Mounier - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] invalider la tabulation dans un textfield
Bonjour, j'avais essayé cela mais cela ne fonctionne pas sur OOo3.2. Mettre cette propriété à Non empêche d'entrer dans le control lorsque le focus est ailleurs mais si le focus est sur le controle, TAB passe quand même au control suivant. Exact. Mon erreur a été de définir la propriété tabulation à false pour tous les controles de ma boite de dialogue. Ceci semble mieux fonctionner : sub _klist_keyPressed(event as variant) dim textField as object dim selection as variant dim selMin as long dim tfText as string dim newCaretPos as long textField = event.source if ((event.keyCode = com.sun.star.awt.Key.TAB) and (event.keyFunc = com.sun.star.awt.KeyFunction.DONTKNOW) and (event.modifiers = 0)) then selection = textField.selection selMin = selection.min tfText = textField.text 'insère la tabulation à la position initiale dur curseur textField.text = left(tfText, selMin) chr(9) right(tfText, (len(tfText) - selection.max)) newCaretPos = selMin + 1 'redonne le focus au champs de texte textField.setFocus() 'place le curseur à la bonne position selection.min = newCaretPos selection.max = newCaretPos textField.selection = selection end if end sub Cordialement, T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] invalider la tabulation dans un textfield
Bonjour, Le listener doit bien être enregistré auprès du champs texte mais la le type d'objet et la méthode ne sont pas les bon. Il faut utiliser un listener de type com.sun.star.awt.XKeyListener et la méthode addKeyListener() du champs text. Voici un exemple : option explicit sub registerKeyListener() dim dialog as object dialog = createUnoDialog(DialogLibraries.Standard.Dialog1) dialog.getControl(tf).addKeyListener(createUnoListener(_klist_, com.sun.star.awt.XKeyListener)) dialog.execute() end sub sub _klist_keyPressed(event as variant) 'nothing to do end sub sub _klist_keyReleased(event as variant) dim control as object control = event.source if ((event.keyCode = com.sun.star.awt.Key.TAB) and (event.keyFunc = com.sun.star.awt.KeyFunction.DONTKNOW) and (event.modifiers = 0)) then control.text = control.text + chr(9) end if end sub sub _klist_disposing(event as variant) 'nothing to do end sub Cordialement, T. Vataire - Mail Original - De: Christophe Devalland christophe.devall...@ac-rouen.fr À: prog@fr.openoffice.org Envoyé: Mardi 23 Mars 2010 13:16:21 Objet: [prog] invalider la tabulation dans un textfield Bonjour, je cherche à désactiver la perte du focus d'un champ texte contenu dans une boite de dialogue lors d'un appui sur la tabulation. je veux simplement que la tabulation s'affiche dans ce champ texte et qu'il ne perde pas le focus. je devine qu'il faut que je créer un listener de type XKeyHandler afin de ne pas laisser passer la touche TAB à l'interface mais mon control ne possède pas la méthode AddKeyHandler. la seule interface de type listener disponible pour mon champ texte est XTextComponenthttp://api.openoffice.org/docs/common/ref/com/sun/star/awt/XTextComponent.html( http://api.openoffice.org/docs/common/ref/com/sun/star/awt/UnoControlEdit.html ) ce code ne fonctionne donc pas : Sub RegisterKeyHandler oKeyHandler=createUnoListener(TexteFonction_,com.sun.star.awt.XKeyHandler) dim champTextFieldNewFunction as Object champTextFieldNewFunction=oDialogFunctions.GetControl(TextFieldNewFunction) champTextFieldNewFunction.AddKeyHandler(oKeyHandler) end sub Faut-il que je tape plus haut dans la hiérarchie pour placer le Handler sur un autre élément ? J'ai essayé sur le dialog lui même mais sans succès. Si vous avez des idées pour aboutir... merci d'avance -- Christophe Devalland - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Problème générati on d'une formule en OOo Basic
Bonjour, Lorsque vous utilisez la propriété formulaLocal, utilisez le nom de la formule tel qu'il apparait lorsqu'elle insérée par l'interface graphique. Lorsque vous utilisez la pseudo-propriété formula, il est nécéssaire d'utiliser le nom de la formule en anglais. soit : thisComponent.sheets.getByIndex(0).getCellRangeByName(A1).formulaLocal = =SOMME(3+5) thisComponent.sheets.getByIndex(0).getCellRangeByName(A2).formula = =SUM(3+5) Cordialement, T. Vataire - Mail Original - De: yves dutrieux ydutri...@gmail.com À: prog@fr.openoffice.org Envoyé: Jeudi 25 Février 2010 12:42:14 Objet: Re: [prog] Problème génération d'une formule en OOo Basic Bonjour, Le 25 février 2010 12:34, Stéphane PURNELLE stephane.purne...@corman.be a écrit : Bonjour Laurent, Alors, oui je suis sur de mes champs. N'est-on pas obligé de définir le type du champs pour le forcer à un string ? Yves REM Adesso - nous allons réaliser les formules REM reposition sur st_li jeCherche = maFeuille.createSearchDescriptor with jeCherche .SearchString = st_li .searchWords = false end with trouv = maFeuille.findAll(jeCherche) monDocument.CurrentController.Select(trouv(0)) maCellule = monDocument.currentSelection print D+cstr(maCellule.CellAddress.Row+1) adresseDebut = D+cstr(maCellule.CellAddress.Row+1) REM print maFeuille.getCellrangeByName(D+cstr(maCellule.CellAddress.Row+1)).string REM print maFeuille.getCellByPosition(maxcol-2,maCellule.CellAddress.Row).string maCellule = maFeuille.getCellByPosition(maxcol-1,maCellule.CellAddress.Row) REM print maCellule.String adresseFin=adresseString(monDocument,maCellule.CellAddress) print adresseFin maCellule = maFeuille.getCellByPosition(maxcol,maCellule.CellAddress.Row) REM print maCellule.String maCellule.Formula = =SOMME(+adresseDebut+:+adresseFin+) --- Stéphane PURNELLE Admin. Systèmes et Réseaux Service Informatique Corman S.A. Tel : 00 32 (0)87/342467 Laurent Godard oooc...@free.fr wrote on 25/02/2010 12:31:13: Laurent Godard oooc...@free.fr 25/02/2010 12:31 Veuillez répondre à prog@fr.openoffice.org A prog@fr.openoffice.org cc Objet Re: [prog] Problème génération d'une formule en OOo Basic Bonjour stefane J'ai dans mon code la ligne suivante : maCellule.Formula = =SOMME(+adresseDebut+:+adresseFin+) Seulement, elle ne marche pas car elle devient =somme(D3:AS3) dans la cellule difficile de dire sans le code et l'exemple sous les yeux es tu sur de la valeur et du calcul de adresseDebut et adresseFin ? Laurent - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org -- web site : http://www.molenbaix.com - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Question de méthode
Bonjour, En ce qui conerne l'enregistreur, je n'ai pas dit qu'il était déconseillé, c'est juste que je ne sais pas retrouver les différents paramètres à changer. Le fichier http://api.openoffice.org/files/documents/22/1344/slots.sxc répertorie bon nombre des commandes utilisables via l'API dispatch et précise pour chacune d'elle les arguments utilisables. Cordialement, T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] empecher l'enregistrement d'un document
Bonjour, Qu'entendez-vous exactement par empêcher qu'un utilisateur modifie un formulaire? Empêcher l'ajout/suppression de contrôles de formulaire, empêcher le déplacement des contrôles, autre...? solution 1 : un ots, mais j'ai une macro d'ouverture qui s'execute sur l'ots et non sur le nouvel ods !? Je part du principe que la macros se trouve dans le modèle. De mon coté, lorsque j'associe l'exécution de ma macro aux événements du modèle Créer le document et Ouvrir le document, celle-ci s'applique bien au document généré et non au modèle. A quel(s) évènement(s) l'avez-vous associé? Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: liste prog prog@fr.openoffice.org Envoyé: Jeudi 29 Octobre 2009 09:14:03 Objet: [prog] empecher l'enregistrement d'un document bonjour je reviens vers vous car bien que progressant en macro je ne suis encore q'un amateur je souhaite empecher qu'un utilisateur modifie un formulaire qui doit servir de base a chaque saisie (modele de facture) solution 0 : ouverture en lecture seule mais pas de saisie possible :( solution 1 : un ots, mais j'ai une macro d'ouverture qui s'execute sur l'ots et non sur le nouvel ods !? solution 2 : empecher l'enregistrement des modifications en assignant une macros sur les evenements sauf que je ne trouve pas la syntaxe appropriée dans l'API ou je me noyes ! si qq'un a deja réalisé cela merci Hervé - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] empecher l'enregistrement d'un document
Petite précision : il faut également modifier le menu fichier pour ce document et supprimer le bouton enregistrer. Procéder de la même manière mais dans l'onglet Menu au lieu de Barres d'outils Cordialement, T. Vataire. - Mail Original - De: Thibault Vataire tvata...@starxpert.fr À: prog@fr.openoffice.org Envoyé: Jeudi 29 Octobre 2009 14:39:34 Objet: Re: [prog] empecher l'enregistrement d'un document Pourquoi ne pas créer un modèle de document pour lequel vous supprimez le bouton enregistrer dans la barre d'outils Normale : - Editer le modèle - Outils Personnaliser Barres d'outils - Dans la liste Enregistrer dans, sélectionner le modèle - Dans la liste Barres d'outils, sélectionner Standard - Sélectionner le bouton Enregistrer - Dans le bouton déroulant Modifier, sélectionner Supprimer - Valider avec OK - Enregistrer le modèle Lors de la création d'un document à partir de ce modèle, le bouton enregistrer n'apparait pas. Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: prog@fr.openoffice.org Envoyé: Jeudi 29 Octobre 2009 14:27:24 Objet: Re: [prog] empecher l'enregistrement d'un document 1/ si j'utilise un ods Qu'entendez-vous exactement par empêcher qu'un utilisateur modifie un formulaire? Empêcher l'ajout/suppression de contrôles de formulaire, empêcher le déplacement des contrôles, autre...? oui l'utilisateur peu saisir des valeurs dans certaines cellules, selectionner d'autres depuis des tableaux ou liste de selection ... a la fin, on genere un pdf mais quand l'utilisateur quitte OOo va vouloir sauvegarder le document puique il est modifié ou l'utilisateur par habitude va vouloir le sauvegarder ce que je ne souhaite pas de plus il doit lui etre interdit de modifier les controles ... 2/ si j'utilise un ots, ca resoud le probleme ci-dessus mais la macros qui ne s'execute pas dans le doc généré par le modele en fait la macro est dans l'evenement d'ouverture et donc elle s'execute dans le modele et non dans le nouveau document genere par le modele comment fait on pour qu'elle s'execute dans le doc généré (la solution du focus n'est pas bonne) Est ce que protéger le fichier en écriture par rapport aux utilisateurs au niveau de l'OS ne suffirait pas ? oui mais la macro d'ouverture de document est faite dans l'ots et non le nouvel ods 3/ j'ai bien pense lancer un premier doc avec une macro qui renome mon ods et le lance, mais un peu lourd j'espère avoir été plus clair merci Herve - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] empecher l'enregistrement d'un document
oui mais ca n'empeche pas la demande de sauvegarde par OOo à la fermeture de l'application C'est vrai, et ça ne règle pas non plus le problème de l'utilisation des raccourcis clavier auxquels je n'avais pas pensé non plus. et ca ne fait pas executer la macro d'ouverture de document dans l'ods Avez vous essayé, comme indiqué dans mon message précédent d'associer la macro aux 2 evènements Créer le document ET Ouvrir le document? Dans ce cas : - à l'édition du modèle, la macro est exécutée sur me modèle (mais peut être empêché si le niveau de sécurité des macros est sur moyen et que l'on choisi de ne pas l'exécuter) - à la création d'un document à partir du modèle, ou à l'ouverture d'un document précédement créé, la macro s'exécute sur ce document. une solution en ods serait de trapper l'evenement et de l'empecher trapper on sait faire mais l'empecher ? exemple : sur l'evenement enregistrer avoir une macro qui fait que l'evenement ne fait rien d'autre que le code de la macro sans faire l'enregistrement Je ne connais pas de solution pour bloquer l'évènement. Cordialement, T. Vataire. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Ajouter menu
Bonjour, Le plus simple pour réaliser cela, est de générer une extension contenant votre macro et de l'installer via le gestionnaire des extensions. Je vous conseille l'outil BasicAddonBuilder qui permet de créer des extensions et de personnaliser/créer des menus, barres d'outils... simplement. Cordialement, T. Vataire. - Mail Original - De: c c prog_amat...@hotmail.fr À: liste prog prog@fr.openoffice.org Envoyé: Mercredi 28 Octobre 2009 16:30:52 Objet: [prog] Ajouter menu Bonjour, Peut-on par macro, rajouter un menu dans OO ? Je viens de ré-écrire ma première macro de MS vers OO et pour celle-là il ne me reste que ce problème de menu. Les utilisateurs ont l'habitude de voir apparaître un nouveau menu (après le menu fenêtres) qui contient la liste actions possibles pour le document ouvert. Ce menu est supprimé à la fermeture du document. J'aimerais bien garder cette fonctionnalité. Merci à tous pour l'aide apportée depuis le début de ma reconversion Claude _ Nouveau Windows 7 : Trouvez le PC qui vous convient. En savoir plus. http://clk.atdmt.com/FRM/go/181574580/direct/01/ - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Plage nommée
Bonjour, Les pseudo-propriétés .referredCells et .referredCells.rangeAddress sont en lecture seule. A ma connaissance, les coordonnées de la plage ne peuvent être modifiées. Il faut supprimmer puis recréer. Cordialement, T. Vataire - Mail Original - De: c c prog_amat...@hotmail.fr À: liste prog prog@fr.openoffice.org Envoyé: Mardi 27 Octobre 2009 09:18:34 Objet: [prog] Plage nommée Bonjour, Peut-on mettre à jour les coordonnées (startrow,startcolumn,endrow,endcolumn) d'une plage nommée ou doit-on la supprimer et la re-créer? J'ai trouvé les fonctionnalités addNewByName et removeByName mais rien qui permettrait la mise à jour. Merci _ Nouveau Windows 7 : Simplifiez votre PC ! Trouvez le PC qui vous convient. http://clk.atdmt.com/FRM/go/181574580/direct/01/ - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] datapilotsource et refresh
Bonjour, S'il s'agit d'actualiser l'affichage du pilote de données, vous pouvez vous inspirer de ceci qui permet d'actualiser tous les pilotes de données de la feuille active : Sub refereshDataPilot() dim dpEnum as object dpEnum = thisComponent.currentController.activeSheet.dataPilotTables.createEnumeration() do while(dpEnum.hasMoreElements()) dpEnum.nextElement().refresh() loop End Sub Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: prog@fr.openoffice.org Envoyé: Lundi 26 Octobre 2009 10:52:31 Objet: [prog] datapilotsource et refresh bonjour j'ai une feuille calc avec un datapilot dont la source est une requete sql d'une database OO je cherche a faire un refresh j'ai trouve des codes java mais rien en OObasic si qq'un a un exemple merci herve - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] datapilotsource et refresh
Effectivement, je n'avais pas pris en compte que votre pilote était créé sur le résultat d'une requête. Dans ce cas, mon exemple ne fonctionne effectivement pas. Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: prog@fr.openoffice.org Envoyé: Lundi 26 Octobre 2009 15:15:42 Objet: Re: [prog] datapilotsource et refresh bonjour, en fait votre proposition ne fonctionne pas avec mes datas alors j'ai eu l'idée d'enregistrer une macro sur ma feuille : clic droit, actualiser ce qui donne : document = ThisComponent.CurrentController.Frame dispatcher = createUnoService(com.sun.star.frame.DispatchHelper) dispatcher.executeDispatch(document, .uno:RecalcPivotTable, , 0, Array()) merci encore herve Bonjour, S'il s'agit d'actualiser l'affichage du pilote de données, vous pouvez vous inspirer de ceci qui permet d'actualiser tous les pilotes de données de la feuille active : Sub refereshDataPilot() dim dpEnum as object dpEnum = thisComponent.currentController.activeSheet.dataPilotTables.createEnumeration() do while(dpEnum.hasMoreElements()) dpEnum.nextElement().refresh() loop End Sub Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: prog@fr.openoffice.org Envoyé: Lundi 26 Octobre 2009 10:52:31 Objet: [prog] datapilotsource et refresh bonjour j'ai une feuille calc avec un datapilot dont la source est une requete sql d'une database OO je cherche a faire un refresh j'ai trouve des codes java mais rien en OObasic si qq'un a un exemple merci herve - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Copier valeurs et format d'une zone nommée
Bonjour, Je me suis servi de cette astuce pour copier-coller les valeurs d'une zone d'une feuille dans une autre feuille. Cela fonctionne bien si la feuille d'arrivée est vide, mais si on relance sans vider la feuille d'arrivée les formats sont perdus. Je n'arrive pas à reproduire votre problème. Lorsque je reprends l'exemple fourni, la mise en forme est conservée même si je relance une nouvelle fois la macro. Qu'entendez-vous par les formats sont perdus? Que la mise en forme disparait sur la feuille de destination? Qu'ai-je bien pu oublier ? Impossible à savoir, il faudrait que vous nous montriez le code de votre macro. Cordialement, T. Vataire Date: Fri, 9 Oct 2009 09:38:47 + From: tvata...@starxpert.fr To: prog@fr.openoffice.org Subject: Re: [prog] Copier valeurs et format d'une zone nommée Bonjour, A ma connaissance, dataArray ne copie pas la mise en forme car il ne s'agit que de tableau de tableau de string/double. Par contre il est possible d'utiliser successivement la méthode copyRange() d'un feuille (cela va tous copier y compris les formats est formules) puis d'écraser les données copiée avec celles d'un dataArray (les formules sont remplacé par leur résultat). sub test dim namedRanges as object dim sourceRange as object dim destRange as object namedRanges = thisComponent.namedRanges sourceRange = namedRanges.getByName(source).referredCells destRange = namedRanges.getByName(dest).referredCells sourceRange.spreadsheet.copyRange(destRange.getCellByPosition(0, 0).cellAddress, sourceRange.rangeAddress) destRange.dataArray = sourceRange.dataArray end sub Cordialement, T. Vataire - Mail Original - De: Michel Grentzinger mic.gre...@online.fr À: prog@fr.openoffice.org Envoyé: Vendredi 9 Octobre 2009 11:11:55 Objet: Re: [prog] Copier valeurs et format d'une zone nommée Le vendredi 9 octobre 2009, Michel Grentzinger a écrit : Bonjour, J'ai une zone nommée (Liste des personnes) dont je veux copier le contenu (valeurs, format, texte : tout sauf les formules) vers une feuille vide. Comment faire pour copier sans les formules ? Avec DataArray ! J'ai posté trop vite... Je pensais que dataArray allait me copier uniquement les valeurs... Les formats sont aussi corrects ! -- Michel Grentzinger OpenPGP key ID : B2BAFAFA Available on http://www.keyserver.net - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org _ A la recherche de bons plans pour une rentrée pas chère ? Bing ! Trouvez ! http://www.bing.com/search?q=bons+plans+rentr%C3%A9eform=MVDE6 - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] calc et focus
Bonjour, S'il s'agit de mettre à jour une plage de base de données, ceci devrait correspondre à votre besoin : option explicit '1/ enregistrer un ecouteur aupres du controler 'associer cette fonction à l'evenement Ouvrir le document du document calc. sub main thisComponent.currentController.addActivationEventListener(createUnoListener(_actList_, com.sun.star.sheet.XActivationEventListener)) end sub '2/ a chaque evenement, parcourir la liste des plages existantes et actualiser celles correspondant a la feuille active. sub _actList_activeSpreadsheetChanged(event as object) dim databaseRangesEnum as object dim databaseRange as object databaseRangesEnum = event.source.model.databaseRanges.createEnumeration() do while (databaseRangesEnum.hasMoreElements()) databaseRange = databaseRangesEnum.nextElement() if(databaseRange.referredCells.spreadSheet.name = event.activeSheet.name) then databaseRange.refresh() end if loop end sub sub _actList_disposing(event as object) 'nothing to do end sub Cordialement, T. Vataire - Mail Original - De: hs...@villeneuvedascq.fr À: prog@fr.openoffice.org Envoyé: Lundi 19 Octobre 2009 13:49:56 Objet: [prog] calc et focus bonjour j'ai un classeur avec plusieurs feuilles dont 3 qui sont bases sur une requete sql de la base OOo de mon projet quand je suis sur une de ces feuilles je dois faire clic droit et actualiser pour qu'il prenne en compte les modifs enregistrées dans la base comment puis-je le faire quand le focus vient sur la feuille j'espere m'etre fait comprendre ! merci herve - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Sélectionner plage
Bonjour, Ceci : thisComponent.sheets.getByName(Feuille1).queryContentCells(com.sun.star.sheet.CellFlags.VALUE + _ com.sun.star.sheet.CellFlags.DATETIME + _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.FORMULA) permet d'obtenir pour la feuille nommée Feuille1, une collection de plages de cellules contenant des données de type date, valeur, chaine ou formule. Chaque plage peut ensuite être obtenu en utilisant la méthode getByIndex() Le nombre de colonnes et de lignes d'une plage peux ensuite être obtenu en utilisant rows.count et columns.count Cordialement, T. Vataire - Mail Original - De: c c prog_amat...@hotmail.fr À: liste prog prog@fr.openoffice.org Envoyé: Jeudi 8 Octobre 2009 14:41:41 Objet: RE: [prog] Sélectionner plage Bonjour, Effectivement, j'ai mal formulé ma question. Je voudrais dans une macro, sélectionner l'ensembles données (ce qui correspond au ctrl+*) de façon à récupérer dans un objet les coordonnées de cet ensemble et pouvoir ainsi déterminer le nombre de lignes et colonnes saisies et ensuite pouvoir travailler sur les cellules. En espérant avoir été plus claire, merci Claude Date: Thu, 8 Oct 2009 09:18:56 + From: tvata...@starxpert.fr To: prog@fr.openoffice.org Subject: Re: [prog] Sélectionner plage Bonjour, Tout dépend de ce que vous souhaitez faire exactement car ctrl+* = selectionner l'ensemble des données et non selectionner l'ensemble d'une feuille. Pour ctrl+* , le plus simple je pense est d'enregistrer une macro (outils macros enregistrer une macro) Pour selectionner l'ensemble d'une feuille, le raccourci est ctrl+A. Vous pouvez enregistrer une macro ou bien utiliser ceci : thisComponent.currentController.select(thisComponent.sheets.getByName(non_de_la_feuille)) Cordialement, T. Vataire - Mail d'origine - De: c c prog_amat...@hotmail.fr À: liste prog prog@fr.openoffice.org Envoyé: Thu, 08 Oct 2009 08:37:14 - (GMT) Objet: [prog] Sélectionner plage Bonjour, Comment puis-je dans une macro sélectionner l'ensemble d'une feuille (l'équivalent du ctrl+*) ? Merci _ Messenger débarque dans Hotmail ! Essayez-le ! http://www.windowslive.fr/hotmail/web-messenger/ - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org _ Un avatar à votre image ? Créez votre mini-moi ! http://www.ilovemessenger.fr/minimize-me - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Copier valeurs et format d'une zone nommée
Bonjour, A ma connaissance, dataArray ne copie pas la mise en forme car il ne s'agit que de tableau de tableau de string/double. Par contre il est possible d'utiliser successivement la méthode copyRange() d'un feuille (cela va tous copier y compris les formats est formules) puis d'écraser les données copiée avec celles d'un dataArray (les formules sont remplacé par leur résultat). sub test dim namedRanges as object dim sourceRange as object dim destRange as object namedRanges = thisComponent.namedRanges sourceRange = namedRanges.getByName(source).referredCells destRange = namedRanges.getByName(dest).referredCells sourceRange.spreadsheet.copyRange(destRange.getCellByPosition(0, 0).cellAddress, sourceRange.rangeAddress) destRange.dataArray = sourceRange.dataArray end sub Cordialement, T. Vataire - Mail Original - De: Michel Grentzinger mic.gre...@online.fr À: prog@fr.openoffice.org Envoyé: Vendredi 9 Octobre 2009 11:11:55 Objet: Re: [prog] Copier valeurs et format d'une zone nommée Le vendredi 9 octobre 2009, Michel Grentzinger a écrit : Bonjour, J'ai une zone nommée (Liste des personnes) dont je veux copier le contenu (valeurs, format, texte : tout sauf les formules) vers une feuille vide. Comment faire pour copier sans les formules ? Avec DataArray ! J'ai posté trop vite... Je pensais que dataArray allait me copier uniquement les valeurs... Les formats sont aussi corrects ! -- Michel Grentzinger OpenPGP key ID : B2BAFAFA Available on http://www.keyserver.net - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Sélectionner plage
Bonjour, Tout dépend de ce que vous souhaitez faire exactement car ctrl+* = selectionner l'ensemble des données et non selectionner l'ensemble d'une feuille. Pour ctrl+* , le plus simple je pense est d'enregistrer une macro (outils macros enregistrer une macro) Pour selectionner l'ensemble d'une feuille, le raccourci est ctrl+A. Vous pouvez enregistrer une macro ou bien utiliser ceci : thisComponent.currentController.select(thisComponent.sheets.getByName(non_de_la_feuille)) Cordialement, T. Vataire - Mail d'origine - De: c c prog_amat...@hotmail.fr À: liste prog prog@fr.openoffice.org Envoyé: Thu, 08 Oct 2009 08:37:14 - (GMT) Objet: [prog] Sélectionner plage Bonjour, Comment puis-je dans une macro sélectionner l'ensemble d'une feuille (l'équivalent du ctrl+*) ? Merci _ Messenger débarque dans Hotmail ! Essayez-le ! http://www.windowslive.fr/hotmail/web-messenger/ - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] macro pour commence r une numérotation alphabétique
Bonjour, Je pense qu'il est possible de réaliser ce à quoi vous pensez en combinant l'utilisation des styles et des macros : 1/ créer autant de styles de puces que types de numérotation à utiliser. L'astuce ici est de sélectionner le niveau 1-10 dans l'onglet Options pour que tous les niveaux du style aient le même aspect. 2/ pour chaque style créé, enregistrer une macro correspondant à l'application de ce style dans un document. 3/ créer une barre d'outils ou chaque bouton correspond à l'éxécution d'une de ces macros. Vous trouverez un exemple ci-joint. Cordialement. - Mail Original - De: Frédéric Péters fpet...@entrouvert.com À: prog@fr.openoffice.org Envoyé: Mercredi 9 Septembre 2009 07:31:57 Objet: Re: [prog] macro pour commencer une numérotation alphabétique Jean-Francois Nifenecker écrivait : Il existe dans la barre d'outils standard un bouton pour activer la numérotation et un bouton pour activer les puces, je me demandais comment il serait possible de faire pour avoir un bouton qui ferait utiliser une numéroration alternative (avec des lettres plutôt que des nombres). Avec des styles ? 1. Créer un style de numérotation correspondant à vos besoins 2. Créer un style de paragraphe faisant appel à ce style de numérotation (onglet Numérotation ;) Associer le tout à un bouton de barre d'outils ou à un accélérateur... et ouala. Pas besoin de macro ! Merci pour la réponse, utiliser les styles était aussi mon intention initiale, mais ils ne permettent pas d'avoir le style imbriqué dans une autre puce. Le comportement auquel j'aimerais arriver, c'est un bouton qui permette aussi bien de faire : [clic numérotation alpha] a) bla bla b) bla bla que : [clic puces] * bla bla [tab] [clic numérotation alpha] a) bla bla b) bla bla C'est-à-dire un comportement tout à fait similaire à puce / numérotation, mais avec un autre style de numérotation. Frédéric - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org Test_num.odt Description: application/vnd.oasis.opendocument.text - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Objet RowSet vs ResultSet
Bonjour, Voici un exemple de mise à jour d'une table à partir d'un RowSet : sub testRowset() dim rowSet as object rowSet = createUnoService(com.sun.star.sdb.RowSet) rowSet.DataSourceName = fournisseurs_fruits rowSet.commandType = com.sun.star.sdb.CommandType.COMMAND rowSet.command = SELECT * FROM soc_prod rowSet.execute() rowSet.moveToInsertRow() rowSet.updateString(rowSet.findColumn(id_societe), 6) rowSet.updateString(rowSet.findColumn(id_produit), 3) rowSet.insertRow() end sub Je me suis inspiré d'un exemple en Java du Developer's Guide trouvé à cette adresse : http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Database/Example:_Querying_the_Bibliography_Database Cordialement, T. Vataire. - Mail Original - De: François Breizh francois.bre...@orange.fr À: prog@fr.openoffice.org Envoyé: Jeudi 23 Juillet 2009 18:42:47 Objet: [prog] Objet RowSet vs ResultSet Bonjour, je m'exerce à la programmation de macros accédant à une base de données Base. Dans le cas actuel j'ai une base qui contient deux tables Documents et Auteurs ; un attribut de la table Documents pointe vers un article de la table Auteurs. pour mettre à jour la tables des documents en ajoutant le nom d'un nouvel auteur, j'ai essayé les deux procédures suivantes : 'Statement.executeUpdate(INSERT INTO Auteurs (Nom) VALUES (' sNomAuteur ')) 'ResultSet = Statement.executeQuery(SELECT ID_Auteur FROM Auteurs WHERE Nom=' sNomAuteur ') 'ResultSet.Next 'Pointeur = ResultSet.getInt(1) 'RowSetDocuments.updateInt(4, Pointeur) 'RowSetDocuments.updateRow() '.. RowSetAuteurs.insertRow' /Erreur : Function sequence error/ RowSetAuteurs.moveToInsertRow RowSetAuteurs.refreshRow RowSetAuteurs.updateString(2,sNomAuteur) RowSetAuteurs.updateRow RowSetDocuments.updateInt(4, RowSetAuteurs.getInt(1)) RowSetDocuments.updateRow() La première méthode, commentée, fonctionne, il est donc possible d'ajouter une ligne à la table Auteurs ; la seconde méthode échoue avec le message d'erreur Function sequence error dès la première ligne. Je n'arrive pas à trouver de développement sur cette erreur, ni comment insérer proprement une nouvelle ligne avec un objet RowSet. J'utilise OpenOffice 3.0.1 et Ubuntu 9.04 - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Prog Macro liée à un bouton, inactive
Bonjour, Quel est l'objectif de votre fonction OpenForm. Actuellement elle ne fait rien d'autre que créer une PropertyValue et renseigner ses différentes propriétés, mais cela ne va rien affiche à l'écran. Il est donc normal que rien ne se passe. Cordialement, T. Vataire - Mail Original - De: Jean Sympa jsy...@free.fr À: Prog prog@fr.openoffice.org Envoyé: Jeudi 16 Juillet 2009 11h42:35 GMT +02:00 Harare / Pretoria Objet: [prog] Prog Macro liée à un bouton, inactive Bonjour à toutes et à tous, Macro liée à un bouton, inactive Sur un formulaire j'ai placé le Bouton Dictons méteorologique pour ouvrir le formulaire M_Meteo. J'ai lié la macro à l'événement Bouton de souris enfoncé. En cliquant sur le bouton, il ne se passe rien. Où est l'erreur? Que faire? Avec mes remerciements Cordialement Papy Prog - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Insertion texte dans tableau
Bonjour, Le problème rencontré avec la fonction ReplaceAll et dû au fait que votre curseur de navigation ne dispose pas de cette méthode : c'est le document qui permet de faire appel à ReplaceAll. Pour savoir si un object dispose d'une méthode ou non, vous pouvez utiliser l'outils Xray. Ci-dessous vous trouverez un exemple d'utilisation de l'API de recherche qui, je pense, correspond à ce que vous souhaitiez effectuer. Sub Main dim doc as object dim rDesc as object dim elem as object doc = thisComponent 'on parametre le descripteur de recherche rDesc = doc.createReplaceDescriptor rDesc.searchString = @ 'on recherche le premier element elem = doc.findFirst(rDesc) 'si un element est trouvé do while (not isNull(elem)) 'et qu'il est dans une cellule if (not isEmpty(elem.cell)) then 'on remplace le texte par le numéro de ligne elem.string = getCellRow(elem.cell.cellName) end if 'puis on recherche l'element suivant elem = doc.findNext(elem, rDesc) loop End Sub 'récupère le numéro de ligne à partir d'un nom de cellule function getCellRow(aCellName as string) as long dim result as long dim st as object dim so as new com.sun.star.util.SearchOptions dim searchRes as object dim startOffset as long st = createUnoService(com.sun.star.util.TextSearch) so.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP so.searchFlag = com.sun.star.util.SearchFlags.REG_NOSUB so.searchString = [:digit:]{1,}$ st.setOptions(so) searchRes = st.searchForward(aCellName, 0, 0) if (searchRes.subRegExpressions = 1) then startOffset = searchRes.startOffset(0) result = cInt(mid(aCellName, startOffset + 1, (searchRes.endOffset(0) - startOffset + 1))) end if getCellRow = result end function Cordialement, T. Vataire - Mail Original - De: Alan alan.lem...@antsys.fr À: prog@fr.openoffice.org Envoyé: Mardi 7 Juillet 2009 12h26:46 GMT +02:00 Harare / Pretoria Objet: [prog] Re: Insertion texte dans tableau Et voilà j'ai ma solution. Pour résoudre le problème, je simule la fonction chercher/remplacer. Je sélectionne au préalable la ligne de mon tableau. Dim CellDest As Object dim args1(18) as new com.sun.star.beans.PropertyValue args1(0).Name = SearchItem.StyleFamily args1(0).Value = 2 args1(1).Name = SearchItem.CellType args1(1).Value = 0 args1(2).Name = SearchItem.RowDirection args1(2).Value = true args1(3).Name = SearchItem.AllTables args1(3).Value = false args1(4).Name = SearchItem.Backward args1(4).Value = false args1(5).Name = SearchItem.Pattern args1(5).Value = false args1(6).Name = SearchItem.Content args1(6).Value = false args1(7).Name = SearchItem.AsianOptions args1(7).Value = false args1(8).Name = SearchItem.AlgorithmType args1(8).Value = 0 args1(9).Name = SearchItem.SearchFlags args1(9).Value = 71680 args1(10).Name = SearchItem.SearchString args1(10).Value = (@) args1(12).Name = SearchItem.Locale args1(12).Value = 255 args1(13).Name = SearchItem.ChangedChars args1(13).Value = 2 args1(14).Name = SearchItem.DeletedChars args1(14).Value = 2 args1(15).Name = SearchItem.InsertedChars args1(15).Value = 2 args1(16).Name = SearchItem.TransliterateFlags args1(16).Value = 1280 args1(17).Name = SearchItem.Command args1(17).Value = 3 args1(18).Name = Quiet args1(18).Value = true For index_row = 1 to nb_rows - 1 args1(11).Name = SearchItem.ReplaceString args1(11).Value = ( index_row - 1 ) CellDest = Table.getCellRangeByPosition(0, index_row, nb_col - 1, index_row) Doc.CurrentController.Select(CellDest) dispatcher.executeDispatch(Frame, .uno:Paste, , 0, Array()) CellDest = Table.getCellRangeByPosition(0, index_row, nb_col - 1, index_row) Doc.CurrentController.Select(CellDest) dispatcher.executeDispatch(Frame, .uno:ExecuteSearch, , 0, args1()) Next Un grand merci à tous ceux qui ont pris du temps pour lire. Et en espérant que ceci aidera quelqu'un d'autre. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Problème conversi on macro excel vers OOo Basic
Bonjour, Cette erreur signifie que l'index de colonne ou de ligne spécifié est hors des valeurs acceptables pour votre plage de cellule. Combien y a t'il de colonnes et lignes dans votre plage nommée? Pour rappel, en macro sous OpenOffice, les lignes et de colonnes sont numérotés à partir de 0. Les index maximums sont donc (nb lignes - 1) pour les lignes et (nb colonnes - 1) pour les colonnes. Par exemple lorsque vous appelez la méthode plage_cellule.getCellByPosition(.getCellByPosition(1, wi_lig - 1) et si wi_lig vaut 2, cela signifie que vous souhaitez accéder a la cellule [deuxième colonne | deuxième ligne]. Si vous n'avez qu'une colonne, une erreur de type IndexOutOfBoundException est alors déclanchée. Par ailleurs, si vous souhaitez tester si le contenu de la cellule est différent de , il faut que vous fassiez appel à sa propriété string : maFeuille1.getCellRangeByName(TdB).getCellByPosition(1,wi_lig - 1).string Cordialement, T. Vataire - Mail Original - De: Stéphane PURNELLE stephane.purne...@corman.be À: prog@fr.openoffice.org Envoyé: Lundi 6 Juillet 2009 13h53:10 GMT +02:00 Harare / Pretoria Objet: [prog] Problème conversion macro excel vers OOo Basic Bonjour, J'essaie de convertir une macro en VBA vers OOo Basic. Je coince déja avec cette ligne : Do While Range(Application.Workbooks(1).Names.Item(TdB)).Offset(wi_lig - 1) Selon une doc trouvée sur internet nommée : Examples or Porting Visual Basic for Applications to StarBasic Je peux convertir cela en : Do While maFeuille1.getCellRangeByName(TdB).getCellByPosition(1,wi_lig - 1) Mais dès que je le lance, j'ai une erreur IndexOutOfBoundException. wi_lig vaut 2 Comme dans la doc, je n'ai pas d'indication a propos de Offset avec 1 paramètre, j'ai mis 1 comme valeur pour X (ce qui correspond à la colone B) Pourriez-vous m'aider ? Merci Stéphane --- Stéphane PURNELLE Admin. Systèmes et Réseaux Service Informatique Corman S.A. Tel : 00 32 (0)87/342467 - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Insertion texte dans tableau
Mais je ne vais pas bien loin car il plante au niveau de la ligne : document = ThisComponent.CurrentController.Frame et je ne sais pas pourquoi... Bonjour, Quel est le message d'erreur? Cordialement, T. Vataire - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Insertion texte dans tableau
Bonjour, Lorsque la même mise en forme est utilisée dans tous le paragraphe, le problème ne se pose pas : c'est cette mise en forme qui est utilisé quelque soit la position du texte ajouté ou la manière dont il est ajouté. Toutefois si votre paragraphe contient diverses mise en forme, le choix de l'emplacement où le texte va être inséré conditionne la mise en forme qui va lui être appliqué. Il est même parfois nécessaire de placer le texte au mauvais endroit pour reprendre une mise en forme existante, puis de réorganiser le texte. Vous trouverez ci-joint un fichier d'exemple. Cordialement, T. Vataire - Mail Original - Envoyé: Vendredi 3 Juillet 2009 09h30:00 GMT +02:00 Harare / Pretoria Objet: [prog] Re: Insertion texte dans tableau Bonjour, Ok dans ce cas qu'existe-t-il comme solution pour garder le formatage de tout en paragraphe d'une cellule ? Mon texte d'origine vient d'une ligne d'un tableau. Je voudrais juste récupérer la ligne de ce tableau, changer quelques caractères et insérer cette nouvelle ligne dans le tableau. Sur des forum, j'ai vu des solutions pour recopier des lignes des tableaux sous Calc via dispatcher et les fonctions de copier/coller. Est-ce applicable à Writer ? Suis-je sur la bonne voie ou en existe-t-il une autre plus simple ? - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org Bonjour, Ok dans ce cas qu'existe-t-il comme solution pour garder le formatage de tout en paragraphe d'une cellule ? Mon texte d'origine vient d'une ligne d'un tableau. Je voudrais juste récupérer la ligne de ce tableau, changer quelques caractères et insérer cette nouvelle ligne dans le tableau. Sur des forum, j'ai vu des solutions pour recopier des lignes des tableaux sous Calc via dispatcher et les fonctions de copier/coller. Est-ce applicable à Writer ? Suis-je sur la bonne voie ou en existe-t-il une autre plus simple ? - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org Exemple_traitement_texte_tableau.odt Description: application/3dr - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Bibliothèque contenant la fonction Shell
Bonjour, Effectivement, ce message indique que le fichier à exécuter n'est pas trouvé. A cause de cette ligne : ef = command.com C:/+filePath+script+.bat filePath est une URL donc il ne faut pas ma préfixer avec C:/. Une simple msgbox affichant la valeur de la variable ef permet de mettre le problème en évidence. Cordialement, T. Vataire - Mail Original - De: Rémi Mathieu remi.math...@neuf.fr À: prog@fr.openoffice.org Envoyé: Mardi 31 Mars 2009 00h12:18 GMT +02:00 Harare / Pretoria Objet: Re: [prog] Bibliothèque contenant la fonction Shell Bonsoir J'ai mal interprété le message d'erreur à l'exécution de ma macro, message qui m'indique que le fichier n'existe pas. Il s'agit probablement du fichier dont le nom est passé en argument de la commande shell. Le texte de la macro est ci-dessous en italique (noir pour les commentaires, rouge pour les autres commandes bacic) /REM * BASIC * Sub Main() REM Il faut d'abord créer sur votre disque un fichier avec le contenu suivant: REM sous Windows (nom de fichier C:\tmp\test.bat) REM echo %1 REM pause REM Exemple de Sync -- REM appel de ma macro d'exécution de script avec bSync=TRUE REM l'exécution du basic attendra que le terminal (ou la fenêtre msdos) REM soit fermé par l'appui d'une touche (CTRL+C sous Windows) REM Sous Windows shellRunner(file://C:/temp/, test, Hello World, TRUE) REM Signaler la fin de l'exécution Print The End REM Sans Sync -- REM Appel avec bSync=FALSE REM L'exécution du code basic sera continuée REM Sous Windows shellRunner(file://C:/temp/, test, Hello World, FALSE) REM On indique la fin de l'exécution Print The End End Sub Sub shellRunner(dirPath$, script$, prms$, sync as Boolean) Dim filePath$, ef$, ed$, isWindows as Boolean REM On regarde sous quel OS on se trouve isWindows = instr(mid(dirPath,8),:/)0 or instr(mid(dirPath,8),\)0 REM Conversion de l'URL en chemin de fichier filePath = convertFromURL(dirPath) REM Création de la ligne de commande If isWindows Then ef = command.com C:/+filePath+script+.bat Else ef = xvt -e sh +filePath+script+.sh End If REM Exécution de la ligne de commande Shell(ef, 1, prms, sync) End Sub/ Thibault Vataire a écrit : Bonjour, La fonction Shell est une fonction intégrée au Starbasic et ne nécessite pas de charger une bibliothèque. La documentation de cette fonction est disponible dans l'aide d'OpenOffice.org dans la section OpenOffice.org Basic. Quel problème rencontrez-vous exactement? Cordialement, T. Vataire - Mail Original - De: Rémi Mathieu remi.math...@neuf.fr À: prog@fr.openoffice.org Envoyé: Lundi 30 Mars 2009 16h03:42 GMT +02:00 Harare / Pretoria Objet: [prog] Bibliothèque contenant la fonction Shell Bonjour Le document d'Andrew Pitonyak Eléments de programmation des macros donne un exemple d'utilisation de la fonction Shell, mais il y manque le chargement de la bibliothèque dans laquelle se trouve cette fonction. Merci d'avance à qui voudra bien m'indiquer le nom de la bibliothèque à charger Rémi Mathieu - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Prog Une erreur dans une macro
Problème de mise en forme de mon message. Les deux lignes OpenForm( thisComponent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, et thisComponent.ActiveConnection, FmTbClients) correspondent en fait à une seule et même ligne de code. Cordialement, T. Vataire - Mail Original - De: Jean Sympa jsy...@free.fr À: prog@fr.openoffice.org Envoyé: Mercredi 1 Juillet 2009 17h16:10 GMT +02:00 Harare / Pretoria Objet: Re: [prog] Prog Une erreur dans une macro Merci Thibault, J'ai effectué le remplacement. A la compilation il y a une erreur Cordialement Papy Thibault Vataire a écrit : Bonjour, Lorsque l'on associe l'exécution d'une macro à un évènement de l'application en passant par le menu Outils Personnaliser Événements, l'évènement à l'origine du déclenchement de la macro n'est pas passé en paramètre. Il faut donc remplacer : Sub onClickOuvrirFmTbClients( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbClients) end sub par : Sub onClickOuvrirFmTbClients() OpenForm( thisComponent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, thisComponent.ActiveConnection, FmTbClients) end sub Cordialement, T. Vataire - Mail Original - De: Jean Sympa jsy...@free.fr À: Prog prog@fr.openoffice.org Envoyé: Mercredi 1 Juillet 2009 11h23:18 GMT +02:00 Harare / Pretoria Objet: [prog] Prog Une erreur dans une macro Bonjour à toutes et à tous, Prog Une erreur dans une macro Je voudrais, au démarrage d'une application, afficher un menu avec trois options. Je voudrais associer à chaque option un bouton qui me permettrait d'ouvrir un sous formulaire. Le retour d'un sous formulaire au menu ferait appel à un deuxième bouton. Jean-Michel Pierre et François Gatto m'ont proposé un exemple. Il y a une erreur dans le formulaire, ouverture des formulaires. Je n'arrive pas à la corriger REM * BASIC * ' ouverture des formulaires ' se fait par appel d'une fonction Sub onClickOuvrirFmTbClients( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbClients) end sub *Erreur d'exécution BASIC* *L'argumentt n'est pas facultatif* Sub onClickOuvrirFmTbRegion( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbRegion) end sub Sub onClickOuvrirFmTbDestinataires( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbDestinataires) end sub Sub onClickOuvrirFmTbProduits( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbProduits) end sub Sub onClickOuvrirFmTbLivraisonProduits( oEvent as variant ) OpenForm( OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments, OEvent.Source.Model.Parent.ActiveConnection, FmTbLivraisonProduits) end sub function OpenForm( formContainer as variant, oConnection as variant, sFormName as string) as variant Dim aProp(1) As New com.sun.star.beans.PropertyValue aProp(0).Name = ActiveConnection aProp(0).Value = oConnection aProp(1).Name = OpenMode aProp(1).Value = open OpenForm = formContainer.loadComponentFromURL(sFormName,_blank,0,aProp()) end function Avec mes remerciements Cordialement Papy - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Insertion texte dans tableau
Bonjour, Qu'entendez-vous par le gras et les sauts de lignes ne sont plus du tout les mêmes ? Parlez-vous de la mise en forme du contenu du tableau ? Votre problème est-il un problème de mise en page ou bien un problème de mise en forme du contenu du tableau? De mon coté, lorsque je remplace le contenu d'une cellule dans un tableau Writer, la mise en forme est conservée. Cordialement, T. Vataire - Mail Original - De: Alan alan.lem...@antsys.fr À: prog@fr.openoffice.org Envoyé: Mardi 30 Juin 2009 11h46:19 GMT +02:00 Harare / Pretoria Objet: [prog] Insertion texte dans tableau Bonjour, j'ai un problème de mise en page lors de l'insertion de texte dans un tableau. Dans le code ci-dessous le texte est bien formaté jusqu'à la ligne cellText = join(splitChamps, index_row - 1) mais une fois inséré dans le tableau, le gras et les sauts de lignes ne sont plus du tout les mêmes. For index_row = 1 to nb_row - 1 For index_col = 0 to nb_colonne - 1 Cell = Table.getCellByPosition(index_col,index_row) dim splitChamps() as string splitChamps = split(listechamps(index_col), @) dim cellText as string cellText = join(splitChamps, index_row - 1) Cell.setString(cellText) Next index_col Next index_row Qu'est ce que j'ai mal fait ? Existe-t-il une autre méthode ? Merci d'avance pour vos réponses, solutions ou aide. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Bibliothèque contenant la fonction Shell
Bonjour, La fonction Shell est une fonction intégrée au Starbasic et ne nécessite pas de charger une bibliothèque. La documentation de cette fonction est disponible dans l'aide d'OpenOffice.org dans la section OpenOffice.org Basic. Quel problème rencontrez-vous exactement? Cordialement, T. Vataire - Mail Original - De: Rémi Mathieu remi.math...@neuf.fr À: prog@fr.openoffice.org Envoyé: Lundi 30 Mars 2009 16h03:42 GMT +02:00 Harare / Pretoria Objet: [prog] Bibliothèque contenant la fonction Shell Bonjour Le document d'Andrew Pitonyak Eléments de programmation des macros donne un exemple d'utilisation de la fonction Shell, mais il y manque le chargement de la bibliothèque dans laquelle se trouve cette fonction. Merci d'avance à qui voudra bien m'indiquer le nom de la bibliothèque à charger Rémi Mathieu - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Obtenir le curseur visible dans Calc ?
Bonjour, Si les données à insérer proviennent du presse-papier, vous pouvez utiliser ceci : Sub Main dim clipboard as object clipboard = createUnoService(com.sun.star.datatransfer.clipboard.SystemClipboard) thisComponent.currentController.insertTransferable(clipboard.getContents) End Sub Les données sont insérées au niveau du curseur visible lorsqu'une cellule est en cours d'édition. Cordialement, T. Vataire - Mail Original - De: Christophe Devalland christophe.devall...@ac-rouen.fr À: prog@fr.openoffice.org Envoyé: Lundi 22 Juin 2009 11h27:33 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: Re: [prog] Obtenir le curseur visible dans Calc ? Le 22 juin 2009 10:34, gilles bignebat gilles.bigne...@bull.net a écrit : christophe.devall...@gmail.comBonjour, que souhaites-tu faire exactement? S'il s'agit d'un contrôle de validité de la saisie tu aurais intérêt à utiliser Outils Validité de Calc, non? je veux simplement avoir un bouton qui appelle une macro qui insère un texte dans une cellule en cours de rédaction. Une sorte de insertString mais à l'endroit où se situe le curseur dans la cellule en cours d'édition. -- Christophe Devalland - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Tableau dans un procédure
Bonjour, Effectivement, la transmission d'un tableau comme paramètre se fait systématiquement par référence. Cette observation est valable quelque soit le type de tableau et le nombre de dimensions. Je ne pense pas que passer un tableau par valeur ai réellement un sens car cela impliquerait de copier l'ensemble des valeurs de ce tableau, ce qui pourrait être très gourmand en ressources. De plus il est fort probable que l'accès à un élément du tableau se fasse à partir de la référence du premier élément, rendant ainsi indispensable le passage par référence. Cordialement, T. Vataire - Mail Original - De: xavier roguiez x...@geo.hmg.inpg.fr À: prog@fr.openoffice.org Envoyé: Dimanche 14 Juin 2009 15h23:50 GMT +02:00 Harare / Pretoria Objet: [prog] Tableau dans un procédure Bonjour Je dois encore commettre une boulette évidente, mais je ne vois pas. Je tente de passer un tableau à 2 dimensions en argument par valeur. J'ai testé sur un ECM le problème me concernant (p125 Programmation OO par l'exemple) Sub Main() dim tata(5,2) as double tata(1,0)=123 tata(2,1)=-5.7 tata(3,2)=pi manipulerTableau (tata()) end sub sub manipulerTableau(byval v() as double) print UBound(v,1), UBound(v,2), v(3,2) End Sub La seule différence par rapport au code de départ est le byval de la sous procédure d'appel manipulerTableau, je l'ai finalement enlevé et ça fonctionne, dans le cas contraire, j'ai un variable d'objet non définie erreur d'exécution basic dont je ne comprends pas l'origine. On ne peut pas passer un tableau à double dimensions par valeurs ? Avez vous l'explication ? xavier - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Tableau dans un procédure
Bonjour Laurent, Je pense que l'utilisation d'un variant ne change rien au fond du problème. Cela permet effectivement de passer le tableau avec le mot clé byval, mais en réalité il est toujours passé par référence. Pour s'en convaincre, exécuter l'exemple suivant : sub mainArray() dim tab(1) as double dim index as long tab(0) = 0 tab(1) = 1 'affichage avant manipulation for index = lbound(tab) to ubound(tab) msgbox(tab(index)) next manipulerTableau(tab) 'affichage après manipulation for index = lbound(tab) to ubound(tab) msgbox(tab(index)) next end sub sub manipulerTableau(byval tab as variant) tab(1) = 2 end sub Cordialement, T. Vataire - Mail Original - De: Laurent Godard oooc...@free.fr À: prog@fr.openoffice.org Envoyé: Lundi 15 Juin 2009 16h34:28 GMT +02:00 Harare / Pretoria Objet: Re: [prog] Tableau dans un procédure Bonjour Xavier pour essayer et si tu passes avec un variant ? sub manipulerTableau(byval v() as double) deviendrait sub manipulerTableau(byval v) Laurent - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Enregistrement de la configuration d'une extension
Bonjour, Il me semble que l'object context est de type com.sun.star.uno.XComponentContext Toutefois tu n'en aura pas besoin en starbasic car il est utilisé de manière implicite par la méthode createUnoService propre au starbasic. Tu peux donc directement instancier le service com.sun.star.registry.SimpleRegistry ainsi : aRegistry = createUnoService(com.sun.star.registry.SimpleRegistry) T. Vataire - Mail Original - De: Romain Pelisse bela...@gmail.com À: prog@fr.openoffice.org Envoyé: Mercredi 6 Mai 2009 22h36:10 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: Re: [prog] Enregistrement de la configuration d'une extension Une solution possible est de regarder du coté de com.sun.star.registry.SimpleRegistry qui permet de stocker des infos sous forme de clés dans un fichier ayant une extension rdb. Tout d'abord merci pour ta réponse (rapide en plus) donc en première analyse et de ta connaissance, il n'existe pas un mécanisme dédié pour les extensions. Merci aussi pour l'exemple python (que j'espère proche du StarBasic car je n'ai pas le loisir de faire du python :( ), j'ai néanmoins une question (peut être bête), comme puis je récupérer l'objet context ? De quelle sorte d'objet s'agit il en fait ? Exemple en Python : aRegistry = context.ServiceManager.createInstanceWithContext(com.sun.star.registry.SimpleRegistry, context) sFile = ./mesoptions.rdb aURL = unohelper.systemPathToFileUrl(sFile) try: aRegistry.open(aURL, False, False) except InvalidRegistryException, e: aRegistry.open(aURL, False, True) aRootKey = aRegistry.getRootKey() aLockKey = aRootKey.openKey(LOCKED) if aLockKey is None: aLockKey = aRootKey.createKey(LOCKED) elif aLockKey.getLongValue(): # ne pas lancer l'extension par exemple else: # lancer l'extension ne pas oublier de mettre quelque part dans le code aRegistry.close() Voilà cela peut-être un point de départ. -- Gérard Deneux - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] taille des icones
Bonjour, Voici un petit bout de code permettant de modifier la taille des icônes des barres d'outils : sub main() dim confParam as object dim param(0) as new com.sun.star.beans.PropertyValue param(0).name = nodepath param(0).value = /org.openoffice.Office.Common confParam = createUnoService(com.sun.star.configuration.ConfigurationProvider).createInstanceWithArguments( _ com.sun.star.configuration.ConfigurationUpdateAccess, param) '0 = small '1 = large '2 = automatic confParam.misc.symbolSet = 1 confParam.commitChanges() end sub Cordialement, T. Vataire - Mail Original - De: Rémy Petit remy.pe...@ac-besancon.fr À: prog@fr.openoffice.org Envoyé: Lundi 6 Avril 2009 10h58:54 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: Re: [prog] taille des icones En fait je voudrais afficher par macro les barres d'outils avec des grandes icones à l'ouverture de certains modèles de documents et remettre l'affichage en position initiale à la fermeture. ( ce que l'on fait à la main par option affichage...) Merci Didier Dorange-Pattoret a écrit : Bonsoir, De quelles icônes parlez-vous ? Cdlt. Rémy Petit wrote: Bonjour à tous, est-il possible d'accéder à la taille des icones par macros et comment ? Merci - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] batch file to launch calc macro
Bonjour, Voici comment executer une macro depuis une invite de commande ou un fichier batch : C:\chemin\vers\executable\OOo macro:///nom_bibliotheque.nom_module.nom_procédure Quelques exemples: * macro sans argument C:\Program Files\OpenOffice.org 3\program\soffice.exe macro:///test.Module1.Main * macro avec 2 arguments (une chaine et un entier) C:\Program Files\OpenOffice.org 3\program\soffice.exe macro:///test.Module1.Main(valeur, 15) * pour executer la macro sans splash screen C:\Program Files\OpenOffice.org 3\program\soffice.exe -nologo macro:///test.Module1.Main(valeur, 15) Cordialement, T. Vataire - Mail Original - De: Laurent laurentgeorgea...@yahoo.fr À: prog@fr.openoffice.org Envoyé: Mercredi 1 Avril 2009 18h04:39 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: [prog] batch file to launch calc macro Hello, i succeed in programming a macro that produces numerous files (calc) but i want to use oo automatically by launching this macro with a scheduled task (w2003). How can i launch from a .bat file ? or a .php file? - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re : Re: [prog] RE : [prog] Ouverture en lecture seule
Bonjour, Vous pouvez également utiliser cette fonction pour tester si un document est déjà ouvert non : function isDocAlreadyOpened(url as string) as boolean dim success as boolean dim frames as object dim found as boolean dim fIndex as long dim controller as object url = convertToUrl(url) if (url ) then frames = starDesktop.frames do while ((fIndex frames.count) and (not found)) controller = frames.getByIndex(fIndex).controller if (not isNull(controller)) then found = (controller.model.url = url) end if fIndex = fIndex + 1 loop end if isDocAlreadyOpened = found end function - Mail Original - De: Pascal Chantriaux pascal.chantri...@ac-grenoble.fr À: prog@fr.openoffice.org Envoyé: Lundi 9 Mars 2009 17h08:39 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: [prog] Re : Re: [prog] RE : [prog] Ouverture en lecture seule Bonjour, Merci de ta réponse. Je vais donc attendre la 3.1 avant de faire de nouveaux tests car mes problèmes viennent peut-être de là (j'ai la 3.0.1). Encore merci. Pascal - Message d'origine - De: Bernard Marcelly marce...@club-internet.fr Date: Lundi, Mars 9, 2009 5:01 pm Objet: Re: [prog] RE : [prog] Ouverture en lecture seule Bonjour, Cela dépend de la version OpenOffice.org utilisée. La version initiale 3.0 a introduit un nouveau mécanisme de verrouillage mal conçu. Je crois que la 3.0.1 améliore un peu, et le problème devrait être corrigé en 3.1. Il y a de nombreux cas tordus dès qu'on est en réseau (même un réseau familial à 2 postes) : fichier OpenDocument ou fichier Word/Excel, versions OOo différentes ouvrant le même fichier, réseau hétérogène Windows/Linux, ou un mélange de ces cas. Bernard Message de pascal.chantri...@ac-grenoble.fr date 2009-03-09 16:33 : Je viens de faire des tests avec les MEMES fichiers et je n'ai pas l'erreur aujourd'hui. En tout cas pas de surprise quand je fais enregistrer sous, c'est bien le bon répertoire. Par contre, je viens de constater quelque chose de très surprenant : par une macro (cf ci-dessous) du document A je peux ouvrir un autre document classeur.ods plusieurs fois et les différentes instances de ce document classeur.ods portent le même nom. J'ai donc plusieurs documents classeur.ods ouverts en même temps et j'ai vérifié qu'ils pointaient bien tous sur le même fichier d'origine. J'ai également constaté que je pouvait modifier et enregistrer chaque document sans qu'il y ait aucune mise à jour dans les autres, chaque enregistrement d'un document écrasant le fichier précédent sans que les autres document semblent au courant. Ce comportement est-il normal sachant que lors de l'ouverture manuelle de fichiers il y a un verrouillage qui empêche cettte situation de se produire ? - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Mot de passe bibliotheque
Bonjour, Je n'arrive pas à reproduire votre problème : 1/ lorsqu'une de mes librairies est protégée par mot de passe, je n'arrive pas à lire/modifier sont contenu avec une autre macro. 2/ lorsque j'ouvre cette librairie avec le mot de passe, je peux lire/modifier le contenu et le sauvegarder. Cela n'empêche en rien d'accéder à son contenu par la suite, que ce soit par macro ou par l'interface graphique. Voici un exemple de la manière dont je procède : option explicit sub main dim const passw = password dim const libName = mdp dim const modName = Module1 dim doc as object dim libr as object dim libCont as object dim modContent as string doc = starDesktop.loadComponentFromUrl( convertToUrl(/tmp/test_mdp.ods), _ _blank, _ com.sun.star.frame.FrameSearchFlag.CREATE, _ array()) libCont = doc.basicLibraries libCont.loadLibrary(libName) libr = libCont.getByName(libName) 'rien ne s'afficher à cause du mot de passe modContent = libr.getByName(modName) msgbox(modContent) 'affiche le contenu du module if (libCont.isLibraryPasswordProtected(libName) = true) then libCont.verifyLibraryPassword(libName, passw) end if modContent = libr.getByName(modName) 'modifie, met à jour le module et re-affiche le contenu libr.replaceByName(modName, (modContent chr(10) 'commentaire ajouté au module.)) modContent = libr.getByName(modName) msgbox(modContent) doc.store() doc.dispose() end sub Est-ce également de cette manière que vous modifiez le contenu de la macro? Peux-être n'ai-je pas bien compris votre problème? Cordialement, T. Vataire - Mail Original - De: Pascal Chantriaux pascal.chantri...@free.fr À: prog@fr.openoffice.org Envoyé: Dimanche 8 Mars 2009 08h26:39 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne Objet: [prog] Mot de passe bibliotheque Bonjour, J'ai écrit une macro qui, à partir d'un document calc A, ouvre un autre document calc B qui contenant une bibliothèque de macro M protégée par mot de passe pour éliminer les lignes de commentaire de M afin de réduire la taille du document B. Je suis surpris qu'on puisse faire cela sans donner le mot de passe de la bibliothèque (je n'ai pas trouvé comment le faire et cela ne semble pas empêcher la macro d'agir) Cette macro fonctionne bien comme j'ai pu le constater en la faisant tourner en laissant le document B ouvert par contre si elle sauve ensuite le document B, il n'y a plus moyen d'ouvrir la bibliothèque M, il refuse le mot de passe ainsi que le mot de passe vide. Ce comportement est-il connu ? D'avance, merci. Pascal - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org -- Cordialement, Equipe support Starxpert. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org