Re: [fr-users] Macro dans writer
Bonjour. Si tu affiches l'historique de la page du Wiki, tu verras que le texte de la Macro date un peu. Rien d'étonnant à ce qu'il y aie aujourd'hui une erreur d'objet. Les codes des Macros les plus à jour sont ceux du forum. Jean-Michel PIERRE Tél : 06.19.55.73.22 > Le 17 déc. 2017 à 14:45, Bernard Siaud alias Troumada > écrit : > > > Bonjour > > En partant de la doc de LibreOffice ( > https://wiki.documentfoundation.org/Documentation/BASIC_Guide/fr ) , on est > renvoyé sur la doc de AOO. > J'arrive ici : > https://wiki.openoffice.org/wiki/FR/Documentation/BASIC_Guide/Structure_of_Text_Documents > Et je teste le premier programme : > >> REM * BASIC * >> >> >> sub Main >> >> Dim Doc As Object >> Dim Enum As Object >> Dim TextElement As Object >> >> ' Create document object >> Doc = StarDesktop.CurrentComponent >> ' Create enumeration object >> Enum = Doc.Text.createEnumeration >> ' loop over all text elements >> >> While Enum.hasMoreElements >> TextElement = Enum.nextElement >> >> If TextElement.supportsService("com.sun.star.text.TextTable") Then >> MsgBox "The current block contains a table." >> End If >> >> If TextElement.supportsService("com.sun.star.text.Paragraph") Then >> MsgBox "The current block contains a paragraph." >> End If >> >> Wend >> >> >> end sub > > Et ça ne marche pas : >> Erreur d'exécution BASIC. >> Propriété ou méthode non trouvée : Text. > Doc.Text est inconnu :( > -- > Amicalement vOOotre Troumad Alias Bernard SIAUD > mon site : http://troumad.org : AD maths WEB... > Pour la liberté http://www.developpez.net/forums/f17/systemes/linux/ > N'envoyez que des documents avec des formats ouverts, comme > http://fr.libreoffice.org > > -- > Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire > Les archives de la liste sont disponibles à > https://listarchives.libreoffice.org/fr/users/ > Tous les messages envoyés sur cette liste seront archivés publiquement et ne > pourront pas être supprimés > -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
[fr-users] Macro dans writer
Bonjour En partant de la doc de LibreOffice ( https://wiki.documentfoundation.org/Documentation/BASIC_Guide/fr ) , on est renvoyé sur la doc de AOO. J'arrive ici : https://wiki.openoffice.org/wiki/FR/Documentation/BASIC_Guide/Structure_of_Text_Documents Et je teste le premier programme : REM * BASIC * sub Main Dim Doc As Object Dim Enum As Object Dim TextElement As Object ' Create document object Doc = StarDesktop.CurrentComponent ' Create enumeration object Enum = Doc.Text.createEnumeration ' loop over all text elements While Enum.hasMoreElements TextElement = Enum.nextElement If TextElement.supportsService("com.sun.star.text.TextTable") Then MsgBox "The current block contains a table." End If If TextElement.supportsService("com.sun.star.text.Paragraph") Then MsgBox "The current block contains a paragraph." End If Wend end sub Et ça ne marche pas : Erreur d'exécution BASIC. Propriété ou méthode non trouvée : Text. Doc.Text est inconnu :( -- Amicalement vOOotre Troumad Alias Bernard SIAUD mon site : http://troumad.org : AD maths WEB... Pour la liberté http://www.developpez.net/forums/f17/systemes/linux/ N'envoyez que des documents avec des formats ouverts, comme http://fr.libreoffice.org -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour vous désinscrire Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
[fr-users] Macro dans Writer
Bonjour, Merci, je vais regarder Nicolas Nicolas Paour 292, route du Grenat Villette 38380 Saint Laurent du Pont Tel : 09 52 30 99 07 Mob : 06 51 96 10 45 Fax : 09 57 30 99 07 Sujet : Re: [fr-users] Macro dans Writer De : linux supsup.li...@free.fr Date : 07/08/2015 08:48 Pour : users@fr.libreoffice.org Ci-joint un exemple de procédure que j'utilise pour copier un diagramme dans un tableau de writer à la position que je veux. remarque il largement perfectible de plus j'appelle d'autre procédure qui sont suffisamment explicite pour être remplacer par des lignes de codes adéquate et il reste la définition de l'ancrage que je n'arrive pas à faire. Attention aux ouverture et fermeture de fichier elle rende active le document Cordialement Jean Luc - - [fr-users] Re: Espaces insécables - 21366 - William Pyke guillaume...@free.fr - - [fr-users] Re: Espaces insécables - 21367 - William Pyke guillaume...@free.fr - - [fr-users] installation libreoffice 4.4 sous windows 10 - 21368 - vulcain vulc...@gmx.com - - [fr-users] installation libreoffice 4.4 sous windows 10 - 21369 - Sébastien Adam sebastien.adam...@gmail.com - - [fr-users] Icônes Sifr - 21370 - Didier TROM didier.t...@free.fr - - [fr-users] installation libreoffice 4.4 sous windows 10 - 21371 - Jacques Guilleron jacques.guille...@orange.fr - -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: [fr-users] Macro dans Writer
Ci-joint un exemple de procédure que j'utilise pour copier un diagramme dans un tableau de writer à la position que je veux. remarque il largement perfectible de plus j'appelle d'autre procédure qui sont suffisamment explicite pour être remplacer par des lignes de codes adéquate et il reste la définition de l'ancrage que je n'arrive pas à faire. Attention aux ouverture et fermeture de fichier elle rende active le document Cordialement Jean Luc Sub CopierUnDiagrammeDansUnTableauDUnePage(oMonDocumentCUDDUP,NomFeuilleDiagrammeCUDDUP,nomFEUILLEdonneeCUDDUP,_ NOMdiagrameCUDDUP,oMonDocumentTexteCUDDUP,NomDuTableauCUDDUP,PositionDeLaCopieDansLeTableauCUDDUP,statutCUDDUP) Dim oMonDiagrammeCUDDUP, oLeDiagrammeCUDDUP, oLesFeuillesCUDDUP,oMaFeuilleCUDDUP, FenetreSelectionnerCUDDUP As Object Dim oMonTableauCUDDUP As Object Dim ServiceCUDDUP, PositionDuCurseurDansLeTableauCUDDUP, NomDuFichierCalcCUDDUP As String Dim LeDiagrammeExisteCUDDUP As Boolean Dim oDispatchHelperCUDDUP As Object ' dispatcher = createUnoService(com.sun.star.frame.DispatchHelper) Dim ArgsCUDDUP(0) as new com.sun.star.beans.PropertyValue dim PysDoc,PysCopie as object, PysDestination, oDocCtrl, oDocFrame, oDrawDoc, oDrawPage , oDrawDocCtrl, oDrawDocFrame as object Dim NiveauDebugCUDDUP, NbrDeDiagrammeCUDDUP,DeplacementHorizontalCUDDUP, DeplacementVerticalCUDDUP As Integer NiveauDebugCUDDUP=1 MessageDebug(NiveauDebugCUDDUP,3,582,CopierUnDiagrammeDansUnePage) NomDuFichierCalcCUDDUP = oMonDocumentCUDDUP.Location 'l'argument n'est pas facultatif If NOMdiagrameCUDDUP= Then NOMdiagrameCUDDUP=Object 1 End If ' On Error Goto errmodifCUDDUP oMaFeuilleCUDDUP = oMonDocumentCUDDUP.sheets.getByName(NomFeuilleDiagrammeCUDDUP) For NbrDeDiagrammeCUDDUP = 0 to oMaFeuilleCUDDUP.DrawPage.count - 1 oMonDiagrammeCUDDUP = oMaFeuilleCUDDUP.DrawPage.getByIndex(NbrDeDiagrammeCUDDUP) If oMonDiagrammeCUDDUP.name = NOMdiagrameCUDDUP Then thiscomponent.currentcontroller.select(oMonDiagrammeCUDDUP) oLeDiagrammeCUDDUP = ThisComponent.CurrentController.Frame oDispatchHelperCUDDUP = createUnoService(com.sun.star.frame.DispatchHelper) oDispatchHelperCUDDUP.executeDispatch(oLeDiagrammeCUDDUP , .uno:Copy, , 0, Array()) NbrDeDiagrammeCUDDUP = oMaFeuilleCUDDUP.DrawPage.count - 1 Else If NbrDeDiagrammeCUDDUP = oMaFeuilleCUDDUP.DrawPage.count - 1 Then MessageDebug(NiveauDebugCUDDUP,1,605,CopierUnDiagrammeDansUnePage,Array(nom du diagramme selectionné ,oMonDiagrammeCUDDUP.name ,nom du diagramme à trouver , NOMdiagrameCUDDUP) End If End If Next NbrDeDiagrammeCUDDUP EnregistrerEtFermer(oMonDocumentCUDDUP) EnregistrerE(oMonDocumentTexteCUDDUP) oMonTableauCUDDUP = oMonDocumentTexteCUDDUP.createInstance(com.sun.star.text.TextTable) oMonTableauCUDDUP = FindObjectByName(oMonDocumentTexteCUDDUP.TextTables,NomDuTableauCUDDUP, com.sun.star.text.TextTable) ThisComponent.CurrentController.Select(oMonTableauCUDDUP) dim document as object document = ThisComponent.CurrentController.Frame Dim CurseurVisible, CurseurVisible2 As Object CurseurVisible=oMonDocumentTexteCUDDUP.currentcontroller.ViewCursor PositionDuCurseurDansLeTableauCUDDUP= CurseurVisible.Cell.CellName If CurseurVisible.Cell.CellName = PositionDeLaCopieDansLeTableauCUDDUP Then ' CurseurVisible.gotoRange(oMonTableauCUDDUP.getAnchor(),False) 'ne sert à rien Else 'il faut décaler le curseur DeplacementHorizontalCUDDUP=Val(Right(PositionDeLaCopieDansLeTableauCUDDUP,1)) - Val(Right(PositionDuCurseurDansLeTableauCUDDUP,1)) DeplacementVerticalCUDDUP=Asc(left(PositionDeLaCopieDansLeTableauCUDDUP,1))-Asc(left(PositionDuCurseurDansLeTableauCUDDUP,1)) CurseurVisible.goDown(DeplacementVerticalCUDDUP,False) CurseurVisible.goRight(DeplacementHorizontalCUDDUP,False) End IF oDispatchHelperCUDDUP = createUnoService( com.sun.star.frame.DispatchHelper ) dim args6(0) as new com.sun.star.beans.PropertyValue args6(0).Name = SelectedFormat args6(0).Value = 3 '3 ' Copie au paragraphe '2 pas de copie '1 pas de copie '3 oDispatchHelperCUDDUP.executeDispatch( document, .uno:ClipboardFormatItems, , 0, args6()) 'copie dans le tableau ' oDispatchHelper.executeDispatch( oMonDocumentTexteCUDDUP, .uno:Paste, , 0,Array() ) ' oDispatchHelperCUDDUP.executeDispatch( document, .uno:Paste, , 0,args5() ) 'copie à la page dim i as integer dim o as object ' o= ThisComponent.Select() 'document.getPropertySetInfo.Properties ' ici THISCOMPONENT est l'objet à scanner ' Xray o 'for i = lbound(o) to ubound(o) 'print o(i).name 'next i ' document = ThisComponent.CurrentController.Frame ' Print (recherche de l'ancrage) ' Xray document ' document.SetAnchorToChar ' OuvrirleFichier(NomDuFichierCalcCUDDUP,, CopierUnDiagrammeDansUnTableauDUnePage Ligne 657) ' On Error GoTo 0 Exit Sub errmodifCUDDUP: print (Dans le Programme ModifierUnDiagramme L'instruction n'existe pas erreur non Bloquante N°: Err Error à la ligne
Re: [fr-users] macro dans writer
Bonjour, Pourquoi ne pas utiliser le recherche et remplace. L'exemple ci-dessous a été fait sous OO 3.2.1 mais cela doit fonctionner sous libreoffice ( afin je le souhaite) Option Explicit Sub RemplacerCaractereParNombreAleatoire() Dim monDocument As Object Dim Cherche As Object, trouv As Variant Dim x As Long monDocument = ThisComponent Cherche = monDocument.createSearchDescriptor with Cherche .SearchString = µ .SearchWords = false end with trouv = monDocument.findAll(Cherche) print Nombre d'occurrences : trouv.Count for x = 0 to trouv.Count -1 trouv(x).string = Int((8*Rnd)+1) next End Sub Cordialement Claude Message original Sujet : [fr-users] macro dans writer De : Olivier Jaccomard jaccom...@free.fr Pour : users@fr.libreoffice.org Date : 15/06/2011 23:52 Bonjour, cherchant à convertir un système fait sous Word, je voudrais faire une macro qui remplace tous les caractères µ d'un document par un nombre aléatoire entre 1 et 8. J'ai essayé ça, mais sans résultat (mon curseur ne se déplace pas) : Pouvez-vous m'aider ? Cordialement, O.Jaccomard Sub Macro1 Randomize 2^14-1 Dim monDocument As Object, monTexte As Object Dim monCurseur As Object Dim curseurVisible As Object monDocument = ThisComponent monTexte=monDocument.Text monCurseur=monTexte.createTextCursor curseurVisible=monDocument.CurrentController.getViewCursor monDocument.CurrentController.Select(monCurseur) monCurseur.gotoStart(False) curseurVisible.gotoStart(false) For i=1 To monDocument.CharacterCount If (curseurVisible.String=µ) Then curseurVisible.String=Int((8*Rnd)+1) End If monCurseur.goRight(1,false) curseurVisible.goRight(1,false) Next i End Sub -- Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: [fr-users] macro dans writer
Bonjour, Pourquoi ne pas utiliser le recherche et remplace. Comment fait-on alors le nombre aléatoire ??? Message original Sujet : [fr-users] macro dans writer De : Olivier Jaccomard jaccom...@free.fr Pour : users@fr.libreoffice.org Date : 15/06/2011 23:52 Bonjour, cherchant à convertir un système fait sous Word, je voudrais faire une macro qui remplace tous les caractères µ d'un document par un nombre aléatoire entre 1 et 8. J'ai essayé ça, mais sans résultat (mon curseur ne se déplace pas) : Pouvez-vous m'aider ? Cordialement, O.Jaccomard Sub Macro1 Randomize 2^14-1 Dim monDocument As Object, monTexte As Object Dim monCurseur As Object Dim curseurVisible As Object monDocument = ThisComponent monTexte=monDocument.Text monCurseur=monTexte.createTextCursor curseurVisible=monDocument.CurrentController.getViewCursor monDocument.CurrentController.Select(monCurseur) monCurseur.gotoStart(False) curseurVisible.gotoStart(false) For i=1 To monDocument.CharacterCount If (curseurVisible.String=µ) Then curseurVisible.String=Int((8*Rnd)+1) End If monCurseur.goRight(1,false) curseurVisible.goRight(1,false) Next i End Sub -- Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés -- Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: [fr-users] macro dans writer
idée de bidouille : copier-coller dans un tableur et utiliser =SUBSTITUE(B7;µ;ALEA.ENTRE.BORNES(1;8)) sauf que le passage writercalc transforme les paragraphes en cellules : donc si plusieurs occurrences de µ dans un paragraphes, le tirage aléatoire est le même pour toutes les occurrences... il faudrait trouver un moyen d'exploser le texte pour mettre un mot dans chaque cellule bonne jourrnée, Pierrre Le 16/06/2011 11:16, Élodie Omer a écrit : Bonjour, Pourquoi ne pas utiliser le recherche et remplace. Comment fait-on alors le nombre aléatoire ??? Message original Sujet : [fr-users] macro dans writer De : Olivier Jaccomardjaccom...@free.fr Pour : users@fr.libreoffice.org Date : 15/06/2011 23:52 Bonjour, cherchant à convertir un système fait sous Word, je voudrais faire une macro qui remplace tous les caractères µ d'un document par un nombre aléatoire entre 1 et 8. J'ai essayé ça, mais sans résultat (mon curseur ne se déplace pas) : Pouvez-vous m'aider ? Cordialement, O.Jaccomard Sub Macro1 Randomize 2^14-1 Dim monDocument As Object, monTexte As Object Dim monCurseur As Object Dim curseurVisible As Object monDocument = ThisComponent monTexte=monDocument.Text monCurseur=monTexte.createTextCursor curseurVisible=monDocument.CurrentController.getViewCursor monDocument.CurrentController.Select(monCurseur) monCurseur.gotoStart(False) curseurVisible.gotoStart(false) For i=1 To monDocument.CharacterCount If (curseurVisible.String=µ) Then curseurVisible.String=Int((8*Rnd)+1) End If monCurseur.goRight(1,false) curseurVisible.goRight(1,false) Next i End Sub -- Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
[fr-users] macro dans writer
Bonjour, cherchant à convertir un système fait sous Word, je voudrais faire une macro qui remplace tous les caractères µ d'un document par un nombre aléatoire entre 1 et 8. J'ai essayé ça, mais sans résultat (mon curseur ne se déplace pas) : Pouvez-vous m'aider ? Cordialement, O.Jaccomard Sub Macro1 Randomize 2^14-1 Dim monDocument As Object, monTexte As Object Dim monCurseur As Object Dim curseurVisible As Object monDocument = ThisComponent monTexte=monDocument.Text monCurseur=monTexte.createTextCursor curseurVisible=monDocument.CurrentController.getViewCursor monDocument.CurrentController.Select(monCurseur) monCurseur.gotoStart(False) curseurVisible.gotoStart(false) For i=1 To monDocument.CharacterCount If (curseurVisible.String=µ) Then curseurVisible.String=Int((8*Rnd)+1) End If monCurseur.goRight(1,false) curseurVisible.goRight(1,false) Next i End Sub -- Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés