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

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
Pour : users@fr.libreoffice.org

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
Pour : users@fr.libreoffice.org

Bonjour

Élodie Omer-2 wrote:

Pourquoi ne pas utiliser le recherche et remplace.

Comment fait-on alors le nombre aléatoire ???

En fait la solution de Claude utilise le "rechercher tout", puis, sur chaque
élément trouvé, remplace le caractère par le nombre recalculé à chaque fois
(ce que ne ferait pas, en effet, un cherche-remplace "global" pour lequel on
indique ce qui est recherché et ce par quoi remplacer, qui serait toujours
la même valeur)

Cordialement
Pierre-Yves

idée de bidouille : copier-coller dans un tableur et utiliser =SUBSTITUE(B7;"µ";ALEA.ENTRE.BORNES(1;8))
sauf que le passage writer<>calc 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

Bonjour,

C'est fait grâce aux instructions suivantes (dans la macro que j'ai envoyée)

for x = 0 to trouv.Count -1
trouv(x).string = Int((8*Rnd)+1)
next

-------- Message original --------
Sujet : Re: [fr-users] macro dans writer
Pour : users@fr.libreoffice.org

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

Une solution bien plus élégante, propre, et rapide !
Merci, Claude.

-------- Message original --------
Sujet : [fr-users] macro dans writer
De : Olivier Jaccomard <jaccomard@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

P