Bonjour,
Je galère depuis quelques jours sur cette fonction et malgré toutes mes recherches je ne trouve pas de soltuion.
J'ai créé un document oWriter avec un entête contenant le mot "essai"
Dans le corps le mot "essai"
Ensuite j'ai créé un tableau contenant le mot "essai"
Cette fonction devrait permettre de remplacer "essai" partout dans le document oWriter entête et tableaux compris
J'ai utilisé la fonction suivante:
Function RechercherRemplacerToutPressePapier(ByVal sMots As String, ByVal sRespecterCasse As Boolean, ByVal sMotEntier As Boolean) As Long
Dim oResultat As Object
Dim oDispatcherLocal As Object
Dim oIndex As Integer
Dim oControleur As Object
Dim Arguments(0) As Object
Arguments(0) = MakePropertyValue("Hidden", False)
sMots = ConvertToAllowsString(sMots)
oSel = oDocument.CurrentController.frame
oDispatcherLocal =
CreateUnoService("com.sun.star.frame.DispatchHelper")
oMonTexte = oDocument.getText()
oControleur = oDocument.CurrentController
oJeCherche = oDocument.createSearchDescriptor
With oJeCherche
'Definir la balise à rechercher dans le document OpenOffice Word
.SearchString = sMots
'Distinguer les majuscules des minuscules dans la recherche
.SearchCaseSensitive = sRespecterCasse
'Ne rechercher que des mots
.SearchWords = sMotEntier
'Rechercher à reculons
.SearchBackwards = False
'Faire une recherche avec la méthode des expressions régulières
.SearchRegularExpression = True
'Rechercher des paragraphes d’un style donné par SearchString
.SearchStyles = False
'Rechercher un texte similaire au texte cherché
.SearchSimilarity = False
End With
oResultat = oDocument.findAll(oJeCherche)
For oIndex = 1 To oResultat.getCount()
' sélectionner la chaine de recherche
oMonCurseur =
oMonTexte.createTextCursorByRange(oResultat.getByIndex(oIndex - 1))
oControleur.select(oMonCurseur)
' Remplacement par un texte
' oMonCurseur.setString("Chaine de remplacement")
'Remplacement par le contenu du presse papier
oDispatcherLocal.executeDispatch(oSel, ".uno:Paste", "", 0,
Arguments)
Next
RechercherRemplacerToutPressePapier = oResultat.getCount()
End Function
Avec cette fonction j'ai un plantage a chaque changement de type(entête corps ou tableau)
Si j'ai le mot dans l'entête ca plante au premier trouvé dans le corps
Si je supprime le mot recherché dans l'entête ca plante quand je passe a celui contenu dans le tableau ...
Merci de votre aide pour corriger cette fonction ...
PS : je peux transmettre le fichier exemple contenant les données a remplacer pour mieux comprendre le problème …