Bonjour à tous,
Milles excuses auprès de Bidouille notre modérateur.
Je sais bien qu'il faut proposer des lignes de codes pour avoir de l'aide mais ici je ne ais pas comment commencer.
J'ai fait des recherches sur le forum et j'ai été surpris de ne rien trouver (ou alors je n'ai pas compris).
Ma demande est donc de m'aider à mettre le pied à l’étrier.
Dans un classeur qui aide à l'écriture d'un scénario, je voudrais faire par macro, l'équivalent d'un "Rechercher-remplacer".
Quand l'utilisateur du classeur change le nom du personnage dans une cellule (qui ne contient que son nom), le nom soit remplacé partout où il l'a déjà écrit.
Au milieu de textes donc.
J'ai pensé qu'à la fin de la procédure le nouveau nom pourrait être copié dans une deuxième cellule dans laquelle on irait piocher au moment de remplacer encore une fois le nom du personnage.
Et ainsi de suite.
Mon souci est que je ne sais pas comment écrire dans une macro l'équivalent du "rechercher-remplacer".
Si quelqu'un peut me le dire, je pourrai essayer de construire mon code à partir de ça.
Merci d'avance.
[Résolu][Calc]Rechercher-remplacer dans un texte de cellule
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre hOOnoraire
- Messages : 159
- Inscription : 20 janv. 2013 11:19
[Résolu][Calc]Rechercher-remplacer dans un texte de cellule
Dernière modification par Whiteneck le 24 janv. 2018 14:29, modifié 1 fois.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
-
- PassiOOnné
- Messages : 669
- Inscription : 20 déc. 2017 14:45
Re: [Calc]Rechercher-remplacer
Bonjour,
Même sans macro, tu peux joindre un document et des captures d'écran pour montrer le problème non ?
Même sans macro, tu peux joindre un document et des captures d'écran pour montrer le problème non ?
Euh ? https://forum.openoffice.org/fr/forum/v ... er#p286014Whiteneck a écrit :J'ai fait des recherches sur le forum et j'ai été surpris de ne rien trouver (ou alors je n'ai pas compris).
OpenOffice 4.1.15 - Windows 10
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Calc]Rechercher-remplacer
Bonjour
A testerAvant l'exécution de la procédure Après l'exécution de la procédure A+
A tester
Code : Tout sélectionner
Sub RemplacerNom()
Dim oDoc As Object, maFeuille As Object, Remplacer As Object
oDoc = ThisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
Remplacer = maFeuille.createReplaceDescriptor
With Remplacer
.setSearchString(maFeuille.getCellRangeByName("A2").String)
.setReplaceString(maFeuille.getCellRangeByName("B2").String)
.SearchWords = False
End With
maFeuille.replaceAll(Remplacer)
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre hOOnoraire
- Messages : 159
- Inscription : 20 janv. 2013 11:19
Re: [Calc]Rechercher-remplacer
Merci PIAF,
J'ai mis quelques conditions pour que cela ne parte pas dans tous les sens.
La plus importante étant que la cellule avec le nom du personnage ne soit pas vide.
Sans ça, plein de cellules vides se retrouvent remplies avec le nom du personnage.
J'ai ensuite limité à quelques lignes, du coup j'ai fait une copie entre les deux cellules de départ qui comportent le nom du personnage.
J'ai conditionné à un style de cellule, mais ça c'est pour moi.
J'ai mis quelques conditions pour que cela ne parte pas dans tous les sens.
La plus importante étant que la cellule avec le nom du personnage ne soit pas vide.
Sans ça, plein de cellules vides se retrouvent remplies avec le nom du personnage.
J'ai ensuite limité à quelques lignes, du coup j'ai fait une copie entre les deux cellules de départ qui comportent le nom du personnage.
J'ai conditionné à un style de cellule, mais ça c'est pour moi.
Code : Tout sélectionner
Sub RemplacerNom()
' Remplace dans une plage de cellule le terme renseigné dans une cellule déterminée.
Dim oDoc As Object, maFeuille As Object, Remplacer As Object, oZone As object
Dim i as Integer
oDoc = ThisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
Remplacer = maFeuille.createReplaceDescriptor
if maFeuille.getCellRangeByName("NOMPERSONNAGE").String <> "" Then 'Seulement si le nom du personnage est renseigné
With Remplacer
.setSearchString(maFeuille.getCellRangeByName("NOMPERSONNAGE2").String)
.setReplaceString(maFeuille.getCellRangeByName("NOMPERSONNAGE").String) 'cellule où on renseigne le nouveau nom du personnage
.SearchWords = False
End With
End if
maFeuille.getCellRangeByName("NOMPERSONNAGE2").String = maFeuille.getCellRangeByName("NOMPERSONNAGE").String 'Copie le nom du personnage dans la cellule "témoin"
For i = 10 To 15 'Ne s'applique qu'aux lignes 10 à 15
oZone = maFeuille.getCellByPosition(0,i)
If oZone.CellStyle = "TEXTE" Then 'Seulement si le style de cellule est "Texte"
oZone.replaceAll(Remplacer)
End if
Next i
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1