Gérard Laloux a écrit :
Yeps,
Question à propos d'une macro enregistrée avec l'enregistreur de macros.
J'ai une liste de noms et prénoms à partir de laquelle je dois créer
mes logins d'accès au réseau de l'école. Pour cela, je prend "x"
caractères du nom et "y" caractères du prénom. _Seulement avant
d'effectuer cette opération, je dois supprimer tous les caractères
accentués ainsi que les tirets et apostrophes_.
J'ai donc activé l'enregistreur de macros et répété autant de fois que
nécessaire la commande "Rechercher et remplacer". La macro fonctionne
correctement ... mais (il y a un mais, sinon je n'aurais pas écrit ce
mail ... :-) ) lorsque la macro s'exécute, si tel caractère n'est pas
présent, j'obtiens le message "terme recherché introuvable" ... ce qui
fait désordre ! (parfois plusieurs fois de suite bien sûr).
Je dois avouer que j'ai fait l'essai avec l'autre tableur (celui dont
on ne doit pas prononcer le nom) et que là, bien qu'un message
similaire apparaisse durant l'enregistrement de la macro si un
caractère n'est pas présent, une fois la macro terminée et
enregistrée, le problème ne se pose plus.
Si quelqu'un a une solution à me proposer, elle est la bienvenue.
Bon wékèn à tous.
----------
Gérard Laloux
B - 6210 Rèves
----------
Bonsoir Gérard,
Il faut poser ces questions sur Prog
L'enregistreur de macros, c'est pas le top. Enfin ce n'est que mon avis.
Essayes cette mini macro, loin d'être optimisée mais qui devrait te
dépanner:
Sub SupprimeAccents
Dim oDocument As Object, oSheet As Object
Dim oCell As Object
Dim Col As Integer, Lig As Integer, i As Integer
Dim LigDeb As Integer, LigFin As Integer
'
Col = 0
LigDeb = 0
LigFin = 10
'
oDocument=ThisComponent
oSheet=oDocument.Sheets.getByName("Feuille1")
'
For i = LigDeb to LigFin
Txt = oSheet.getCellByPosition(Col, i).getString
Nc = Len(Txt)
For n = 1 to Nc
Car = Mid(Txt, n, 1)
If Car = "é" Or Car ="è" Or Car = "ê" Or Car = "ë" Then
Car = "e"
Mid(Txt, n, 1) = Car
oSheet.getCellByPosition(Col, i).setString(Txt)
ElseIf Car = "â" Or Car ="à" Or Car ="ä" Then
Car = "a"
Mid(Txt, n, 1) = Car
ElseIf Car = "_" Or Car ="-" Then
Car = ""
Mid(Txt, n, 1) = Car
oSheet.getCellByPosition(Col, i).setString(Txt)
Nc = Nc - 1
Endif
Next n
Next i
End Sub
Il faut que tu modifies les variables Col (colonne), LigDeb et LigFin,
éventuellement le nom de feuille dans getByName
Attention au décalage, Col=0, c'est la colonne A et Lig = 0, c'est la
ligne 1
Particularité : le cas des _ et -. Tu ne dis pas si tu les remplaces par
rien. C'est ce que j'ai fait ici avec
Car = ""
mais aussi j'ajoute Nc = Nc - 1 pour réduire la longueur de chaine. A
supprimer si tu remplaces par un espace.
Recontactes, sur Prog, si ça ne vas pas.
Bon surf,
Christian
--
Visitez http://christianwtd.free.fr/ pour débuter avec Calc, d'OpenOffice.org
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]