Macro recherche et remplace calc

Bonjour,
Je n’arrive pas trouver dans le service SearchDescriptor les propriétés suivantes :
“rechercher dans toutes les feuilles”
“recherche dans valeurs”

J’ai trouvé cette page mais ces propriétés n’y figurent pas

https://www.openoffice.org/api/docs/common/ref/com/sun/star/util/SearchDescriptor.html

Une idée ou l’endroit où chercher
Merci d’avance
Claude

Bonsoir,
Ce sont des options à passer en arguments.
Ce que donne l’enregistreur de macro ;

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(20) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 1 ' 0 pour Formules
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = true
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 0
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65536
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "toto"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = "Titi"
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1073743104
args1(18).Name = "SearchItem.Command"
args1(18).Value = 0
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

Avec la recherche suivante :

Bon courage pour la suite !
JM

Bonjour,
C’est gentil, merci mais en Basic cela ne passe pas.
Message erreur : “propriété ou méthode non trouvée”.

Je ne suis pas du tout à l’aise avec le code généré par l’enregistreur de macro, cela me demanderait trop de temps de m’y mettre et je ne suis pas seule à maintenir les codes. Du coup je vais contourner le problème en balayant la collection des feuilles pour le AllTables et en protégeant mes formules pour éviter qu’elles soient modifiées.

Encore une fois merci quand même
Claude

Bonjour,

C’est gentil, merci mais en Basic cela ne passe pas.

Parce que vous pensez que je ne l’ai pas testé ? :face_with_spiral_eyes:
Envoyez nous un fichier avec votre code et on pourra chercher d’où vient l’erreur.

Je ne suis pas du tout à l’aise avec le code généré par l’enregistreur de macro,

Personnellement, je n’aime pas non plus, bien que le code ci-dessus soit assez simple et qu’il s’agit de l’exécution d’un service.
J’ai fourni ce code uniquement pour les paramètres de la recherche (tous !), dans lesquels vous prenez ceux dont vous avez besoin (visiblement “SearchItem.CellType”, et
"SearchItem.AllTables" ).
D’autre part, ces paramètres dont vous avez besoin, dépendent de l’interface de recherche, et ne font pas partie (comme vous l’avez remarqué) de l’objet SearchDescriptor et ne sont donc accessibles que par le Dispatcher (à ma connaissance…).
Il vous est donc possible de créer une fonction “boîte noire” qui utilise cette méthode. Bien documentée, elle ne devrait pas effrayer les autres personnes qui interviennent sur le code.
Je peux aider dans ce domaine, si vous le souhaitez, il suffira de définir le résultat à obtenir.
Cordialement,
JM

Merci de me confirmer que ces paramètres ne font pas partie de l’objet “Searchdescriptor” . J’ai résolu mon problème comme indiqué dans ma réponse et en plus cela me convient mieux car il y a quelques données que je ne voulais par remplacer.
En réalité ma macro permet de modifier un ensemble de données dans des fichiers avec des données sensibles (un simulacre de brouillage) de façon à servir d’exercices pour des stages de formation.
J’en avais un peu marre de re-saisir des exemples alors que j’ai plein de “vrais” fichiers avec des formules complexes et comme j’adore coder…
Claude

Ps : quand je disais que cela ne fonctionnait pas en basic c’est juste que j’avais essayé de transposer sur l’objet “Searchdescriptor”. Désolée de vous avoir froissé