FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017 Ajouter une question
Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).
Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.
- 8.6.1. Les paragraphes (2)
- 8.6.2. Les signets (3)
- 8.6.3. Les images dans le traitement de texte (1)
- 8.6.4. Les tableaux dans le traitement de texte (4)
- 8.6.5. Les cadres - TextFrames (5)
- Comment vérifier si un mot est présent dans un document Traitement de texte ?
- Comment remplacer une chaîne de caractères dans un document Traitement de texte ?
- Comment insérer un saut de page à l'emplacement du curseur ?
- Comment créer un lien hypertexte dans le document ?
- Comment récupérer les informations statistiques d'un document ?
- Comment récupérer le nom et la taille de la police à l'emplacement du curseur ?
- Comment extraire tout ce qui se trouve entre deux mots clés ?
- Comment afficher un document en plein écran ?
- Comment scinder chaque page d'un fichier Traitement de texte pour créer de nouveaux documents ?
- Comment modifier la largeur de la première colonne du tableau dans lequel se trouve le curseur ?
Cette procédure retrouve un mot spécifique, le colorie en rouge et modifie sa mise en forme afin de mieux le visualiser dans le document.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Sub retrouverMot Dim oSearch As Object , Cible As Object Dim Tableau As Variant Dim x As long oSearch = ThisComponent.createSearchDescriptor With oSearch .SearchString = "essai" 'la chaîne à identifier .SearchWords = True End With Tableau = ThisComponent.FindAll(oSearch) MsgBox "Le mot recherché est présent " & Tableau.count & " fois." For x = 0 To Tableau.Count - 1 Cible = Tableau(x) Cible.CharWeight = com.sun.star.awt.FontWeight.BOLD 'gras Cible.CharPosture = com.sun.star.awt.FontSlant.ITALIC 'italique Cible.CharFontName = "Arial" 'police Cible.CharUnderline = com.sun.star.awt.FontUnderline.SINGLE 'souligné Cible.CharBackcolor = RGB(255,0,0) 'couleur de fond Next End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Sub RemplacerChaine Dim oDoc As Object Dim Remplace As Object Dim Ancien As String , Nouveau As String Ancien = "Mme" Nouveau = "Madame" oDoc = ThisComponent Remplace = oDoc.createReplaceDescriptor Remplace.SearchString = Ancien Remplace.ReplaceString = Nouveau oDoc.replaceAll(Remplace) End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Sub RemplacerPlusieursChaines Dim oDoc As Object Dim Remplace As Object Dim Ancien(3) As String , Nouveau(3) As String Dim i As Long Ancien() = Array("Mme" , "Mlle" , "Mr") Nouveau() = Array("Madame" , "Mademoiselle" , "Monsieur") oDoc = ThisComponent Remplace = oDoc.createReplaceDescriptor For i = 0 To 2 Remplace.SearchString = Ancien(i) Remplace.ReplaceString = Nouveau(i) oDoc.replaceAll(Remplace) Next i End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | Sub Insertion_SautDePage Dim oCurseur As Object Dim Cible As Object oCurseur = ThisComponent.getCurrentController().getViewCursor() Cible = oCurseur.getText() Cible.insertControlCharacter( oCurseur, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False ) oCurseur.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE End Sub |
La procédure suivante ajoute un lien hypertexte à l'emplacement du curseur.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Sub InsererLien_EmplacementCurseur Dim oCurseur As Object , oTexte As Object oCurseur = ThisComponent.CurrentController.getViewCursor() oTexte = oCurseur.getText() oTexte.insertString(oCurseur, "La description", True) With oCurseur 'Spécifie l'URL du lien hypertexte .HyperLinkURL = "http://www.developpez.com" 'Spécifie le nom du lien .HyperLinkName = "Nom lien hypertexte" '--- pour créer un lien vers un document odt --- '.HyperLinkURL = ConvertToURL("C:\LeDocument.odt") ' 'Pour atteindre un signet lors de l'ouverture du fichier : '.HyperLinkURL = ConvertToURL("C:\LeDocument.odt") & "#LeSignet" '----------------------------------------------- '--- Pour créer un lien à l'intérieur du même document --- 'Cet exemple permet d'atteindre un signet nommé "NomSignet" '.HyperLinkURL = "#NomSignet" '--------------------------------------------------------- End With End Sub |
Par exemple, si vous souhaitez connaître le nombre de pages, de mots, de caractères, d'images, de paragraphes, de tableaux ou de lignes dans un document :
- lorsque le fichier est ouvert ;
- utilisez le menu Fichier ;
- propriétés ;
- Onglet « Statistiques ».
Pour récupérer ces informations par macro :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Sub LireProprietes_Statisques_Writer Dim Resultat As String Dim Curseur As Object Curseur = ThisComponent.currentController.getViewCursor Curseur.jumpToLastPage() Resultat = "Nombre de caractères: " & ThisComponent.CharacterCount & Chr(10) & _ "Nombre d'images: " & ThisComponent.GraphicObjects.Count & Chr(10) & _ "Nombre de mots: " & ThisComponent.WordCount & Chr(10) & _ "Nombre de paragraphes: " & ThisComponent.ParagraphCount & Chr(10) & _ "Nombre de tableaux: " & ThisComponent.TextTables.Count & Chr(10) & _ "Nombre de pages: " & Curseur.Page & Chr(10) & _ "Nombre de lignes: " & ThisComponent.CurrentController.LineCount MsgBox Resultat End Sub |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Sub NomPolice_EmplacementCurseur Dim Curseur As Object Curseur = ThisComponent.CurrentController.ViewCursor MsgBox "Nom: " & Curseur.CharFontName & Chr(10) & _ "Taille: " & Curseur.CharHeight End Sub |
La procédure extrait le texte contenu entre deux mots identiques « MotCle ».
La procédure fonctionne uniquement si les deux mots servant de balise sont dans le même paragraphe.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Sub ExtractionPlageTexteDelimite Dim Plage As Object Dim Cible As String Dim oCSD As Object oCSD = ThisComponent.createSearchDescriptor Cible = "MotCle" & ".*" & "MotCle" With oCSD .SearchString = Cible .SearchRegularExpression = True End With Plage = ThisComponent.FindFirst( oCSD ) If IsNull(Plage) Then Msgbox "Non trouvé" Else Msgbox Plage.String End If End Sub |
Sans macro, vous pouvez utiliser le Menu Affichage/Plein écran
La procédure suivante permet d'obtenir le même résultat :
Noubliez pas de créer un bouton pour revenir en mode normal, en cas de besoin.
La macro ne fonctionne pas toujours lorsqu'elle est lancée depuis l'éditeur de macros.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | Sub AffichagePleinEcran Dim oFrame As Object Dim oDispatcher As Object Dim Args(0) As New com.sun.star.beans.PropertyValue oFrame = ThisComponent.CurrentController.Frame oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Args(0).Name = "FullScreen" Args(0).Value = True oDispatcher.executeDispatch( oFrame , ".uno:FullScreen", "", 0, Args() ) End Sub |
Cette macro peut également être utilisée dans Tableur.
L'objectif est d'extraire chaque page du document pour créer de nouveaux fichiers.
La macro boucle sur toutes les pages, sélectionne le contenu de chaque page, copie la sélection, effectue un collage dans un nouveau fichier et l'enregistre.
Une option permet de créer une copie de chaque fichier au format PDF.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | Sub ExtractionPages_Dans_DocumentWriter Dim NbPages As Integer , NumPage As Integer Dim Curseur As Object , oTextCurseur As Object Dim Debut As Variant , Fin As Variant Dim ArgsProprietes(2) As New com.sun.star.beans.PropertyValue Dim Document As Object , Dispatcher As Object Dim Args() Dim oDesktop As Object , oDoc As Object Dim Fichier As String , NomFichier As String Dim Destination As Variant 'Fige l'écran ThisComponent.LockControllers 'Compte le nombre de pages dans le document Curseur = ThisComponent.currentController.ViewCursor Curseur.GoToEnd(False) NbPages = Curseur.Page 'On sort s'il n'y a qu'une page If NbPages = 1 Then Exit Sub 'Positionne le curseur au début du document Curseur.GoToStart( True ) '--- Spécifie le filtre de conversion --- ArgsProprietes(0).Name = "FilterName" ArgsProprietes(0).Value = "writer_pdf_Export" ArgsProprietes(1).Name = "CompressMode" ArgsProprietes(1).Value = 1 |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 'Boucle sur toutes les pages For NumPage = 1 To NbPages 'Source: 'http://www.oooforum.org/forum/viewtopic.phtml?t=20670&sid=1c0970c54c1cdd27e6659496a86851f7 'JohnV oTextCurseur = ThisComponent.Text.createTextCursor Curseur.gotoRange( oTextCurseur , False ) Do While Curseur.Page <> NumPage If Not oTextCurseur.gotoNextParagraph( False ) Then End End If Curseur.gotoRange( oTextCurseur , False ) Loop Debut = ThisComponent.Text.createTextCursorByRange(oTextCurseur) Do While Curseur.Page <> NumPage + 1 If Not oTextCurseur.gotoNextParagraph( False ) Then oTextCurseur.gotoEndOfParagraph( False ) GoTo MarkIt End If Curseur.gotoRange( oTextCurseur , False ) Loop oTextCurseur.gotoPreviousParagraph( False ) oTextCurseur.gotoEndOfParagraph( False ) MarkIt: Fin = ThisComponent.Text.createTextCursorByRange( oTextCurseur ) 'Sélectionne le contenu de la Xeme page Curseur.gotoRange( Debut , False ) Curseur.gotoRange( Fin , True ) |
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | '--- 'Copie la Xeme page sélectionnée Document = ThisComponent.CurrentController.Frame Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dispatcher.executeDispatch(Document, ".uno:Copy", "", 0, Array()) 'Crée un nouveau document Traitement de texte oDesktop = createUnoService("com.sun.star.frame.Desktop") Fichier = "private:factory/swriter" oDoc = oDesktop.LoadComponentFromURL(Fichier, "_blank", 0, Args()) 'Effectue un collage dans le nouveau document Destination = oDoc.CurrentController.Frame Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dispatcher.executeDispatch(Destination, ".uno:Paste", "", 0, Array()) 'Sauvegarde le nouveau fichier au format odt NomFichier = ConvertToURL( "C:\Copie Page" & NumPage & ".odt" ) oDoc.storeAsURL(NomFichier, Args()) 'Crée une copie au format pdf NomFichier = ConvertToURL( "C:\CopiePDF Page" & NumPage & ".pdf" ) oDoc.storeToUrl( NomFichier , ArgsProprietes()) 'Ferme le fichier oDoc.Close( False ) '--- 'Positionne le curseur au début du document Curseur.GoToStart( True ) Next NumPage ThisComponent.UnlockControllers MsgBox "Terminé." End Sub |
Ayant un document avec plus de 200 tableaux et j'ai dû modifier la largeur de la 1ère colonne de tous les tableaux (pour passer de 1 cm à 1,3 cm).
Voici donc le code de la macro que j'ai utilisée :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | rem ------------------------------------------------------------------------------- rem Procédure pour modifier la largeur de la première colonne d'un tableau à 1,3 cm rem ------------------------------------------------------------------------------- Sub ModifyTableWidth() Dim largeur as double Dim separateur as variant Dim oVCurs ' récupère la vue du curseur oVCurs = ThisComponent.getCurrentController().getViewCursor() ' vérifie que le curseur est dans un tableau If IsEmpty(oVCurs.TextTable) Then MsgBox "The cursor is NOT in a table" Exit Sub End If ' récupère le tableau oTable = oVCurs.TextTable ' MsgBox "The cursor is in table " & oTable.getName ' la largeur de la page en cm (il y a probablement un autre moyen pour la récupérer) width_page = 17 ' la largeur du tableau width_table = oTable.TableColumnRelativeSum ' la largeur désirée en cm needed_width = 1.3 ' calcule la nouvelle largeur de la colonne width_col = needed_width * width_table / width_page ' récupère les séparateurs du tableau separateur = oTable.TableColumnSeparators ' modifie la largeur de la colonne 0 separateur(0).position = width_col ' positionne la nouvelle largeur oTable.TableColumnSeparators = separateur end sub |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.