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]

Reply via email to