IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Modifier ma macro


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 10
    Points
    10
    Par défaut Modifier ma macro
    Salut

    j'ai actuellement une macro (écrite par quelqu'un d'autre pour moi) qui sert à changer l'ordre des lignes de paragraphes de texte en fonction des marqueurs au début de chacune de ses lignes (toujours les mêmes marqueurs dans le même ordre).
    J'aimerais modifier cette macro pour changer l'ordre (inverser 2 éléments en fait).

    Je vous donne ici la macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub XmlToLp3MettreMarqueursDansOrdreLp()
        Application.ScreenUpdating = False
        Dim strTags As String, i As Long
        strTags = "sfx|xv,xinfor|xfon"
        With ActiveDocument.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchWildcards = True
            .Text = "^13"
            .Replacement.Text = "^13^p"
            .Execute Replace:=wdReplaceAll
            For i = 0 To UBound(Split(strTags, ","))
                .Text = "(\\" & Split(Split(strTags, ",")(i), "|")(0) & "*)(\\" & Split(Split(strTags, ",")(i), "|")(1) & "*^13)"
                .Replacement.Text = "\2\1"
                .Execute Replace:=wdReplaceAll
            Next
            .Text = "^13^13"
            .Replacement.Text = "^p"
            .Execute Replace:=wdReplaceAll
        End With
        Application.ScreenUpdating = True
    End Sub
    et ici un exemple de paragraphe avant toute macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    \sfx PYK-29083-MK-0310.mp3
    \xinfor M.K. (1924)
    \xbrloc Veleur ket alies.
    \xfon 
    \xv Ne weler ket alies.
    \xtrad On ne le voit pas souvent.
    \lt 
    \nt
    ici un exemple de paragraphe après ma macro actuelle (celle que j'ai copiée-collée ci-dessus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    \xv Ne weler ket alies.
    \sfx PYK-29083-MK-0310.mp3
    \xfon 
    \xinfor M.K. (1924)
    \xbrloc Veleur ket alies.
    \xtrad On ne le voit pas souvent.
    \lt 
    \nt
    et ici le paragraphe tel que je voudrais qu'il soit (grâce à la macro que vous voudrez bien m'aider à faire je l'espère ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    \xbrloc Veleur ket alies.
    \sfx PYK-29083-MK-0310.mp3
    \xfon 
    \xinfor M.K. (1924)
    \xv Ne weler ket alies.
    \xtrad On ne le voit pas souvent.
    \lt 
    \nt
    Par rapport au résultat de la macro actuelle, il faut donc seulement inverser les lignes qui commencent par \xbrloc et \xv.
    Si vous pouviez modifier la macro en conséquence, ça serait génial ! ça doit être simplissime mais je ne comprends rien du tout à la façon d'écrire des macros donc je peux malheureusement pas le faire moi-même
    Merci d'avance!

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut pwyll,

    Normalement sur le site on n'écrit pas de macro pour faire le boulot à la place des DVPnautes mais ici le problème est que le code est super optimisé pour Word avec des subtilités balèzes ==>

    Dans la macro, remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strTags = "sfx|xv,xinfor|xfon"
    par la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strTags = "sfx|xbrloc,xinfor|xfon"
    j'ai testé voici le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \xbrloc Veleur ket alies.
    \sfx PYK-29083-MK-0310.mp3
    \xfon 
    \xinfor M.K. (1924)
     
    \xv Ne weler ket alies.
    \xtrad On ne le voit pas souvent.
    \lt 
    \nt
    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 10
    Points
    10
    Par défaut
    Merci!

    Et si je veux transformer

    \xv Bla bla.
    \sfx audio/blibli.mp3
    \xbrloc Blibli.
    \xfon [blublu]
    \xinfor (bléblé)
    \xtrad Blin blin.


    en

    \xbrloc Blibli.
    \sfx audio/blibli.mp3
    \xv Bla bla.
    \xfon [blublu]
    \xinfor (bléblé)
    \xtrad Blin blin.


    (soit simplement inverser les lignes commençant par \xv et par \xbrloc. Sachant que dans mon document, il y a plein de paragraphes différents sur ce modèle)

    Comment faut-il faire?

    merci infiniment d'avance

  4. #4
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut pwyll2,

    As-tu essayé de changer la ligne de ta macro initiale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strTags = "sfx|xv,xinfor|xfon"
    par la ligne
    @+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 10
    Points
    10
    Par défaut
    Salut

    j'ai essayé, mais ça inverse pas seulement les 2 éléments, ça déplace aussi la ligne \xv et ça rajoute une ligne vide:

    Ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \xp .
    \xv Emañ ret deoc’h chom war yun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xso (17)
    \xn Tu dois jeûner.
    Devient ceci avec ta modification:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \xv Emañ ret deoc’h chom war yun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
     
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xso (17)
    \xn Tu dois jeûner.
    alors que j'attendais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
    \xv Emañ ret deoc’h chom war yun.
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xso (17)
    \xn Tu dois jeûner.
    ou même ceci (si c'est possible, ça serait l'idéal mais j'en ai pas parlé pour pas trop compliquer le truc :/ )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xv Emañ ret deoc’h chom war yun.
    \xso (17)
    \xn Tu dois jeûner.

    Merci d'avance si tu peux m'aider

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut pwyll2,

    La ligne vide supplémentaire était présente dans le résultat de ta 1ère demande (je t'ai envoyé ce résultat) et donc ce n'est pas nouveau. Mais on peut essayer de la supprimer, si tu veux.

  7. #7
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut pwyll2,

    J'ai dû (légèrement) adapter la macro pour avoir le comportement demandé (et en supposant que tu ne veuilles plus la ligne vide)

    En partant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \xp .
    \xv Emañ ret deoc’h chom war yun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xso (17)
    \xn Tu dois jeûner.
    Voici le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \xp .
    \xbrloc ‘Ma rhet d’oh chom ar iun.
    \sfx audio/ema_rhet_deoch_chom_ar_yun.mp3
    \xfon [ma tɔχ ʃom aʁ jyːn]
    \xv Emañ ret deoc’h chom war yun.
    \xso (17)
    \xn Tu dois jeûner.
    avec la macro suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub DVP_XmlToLp3MettreMarqueursDansOrdreLp()
        Dim strTags As String, aI As Long
        strTags = "xv|xbrloc,xv|sfx,xv|xfon"
     
        Application.ScreenUpdating = False
        With ActiveDocument.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .Text = "^p"
            .Replacement.Text = "$$$"
            .Execute Replace:=wdReplaceAll
            For aI = 0 To UBound(Split(strTags, ","))
                .MatchWildcards = True
                .Text = "(\\" & Split(Split(strTags, ",")(aI), "|")(0) & "*)(\\" & Split(Split(strTags, ",")(aI), "|")(1) & "*$$$)"
                .Replacement.Text = "\2\1"
                .Execute Replace:=wdReplaceAll
            Next
            .Text = "$$$"
            .Replacement.Text = "^p"
            .Execute Replace:=wdReplaceAll
        End With
        Application.ScreenUpdating = True
    End Sub
    @+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 10
    Points
    10
    Par défaut
    Ok, ça marche! Merci beaucoup !!!

    ce que j'ai oublié de dire (j'avais peur d'abuser en demandant un truc trop compliqué...) c'est que j'ai tantôt des paragraphes comme j'ai dit:


    \xv aaaaaaaaaa
    \sfx bbbbbbbbbbbbbb
    \xbrloc ccccccccccccc
    \xfon ddddddddddddddddd
    \xso fffffffffffff
    \xn ggggggggggggggggg

    tantôt j'en ai des plus courts, avec seulement:

    \xv aaaaaaaaa
    \xbrloc bbbbbbbbbbbbb
    \xn ccccccccccccccc

    avec parfois au milieu des \nt:

    \xv aaaaaaaaa
    \nt ababaabababa
    \xbrloc bbbbbbbbbbbbb
    \nt defvetgtedtg
    \xn ccccccccccccccc
    \nt vbreghjstg

    Mais dans tous ces paragraphes, tjrs la même tâche: intervertir xv et xbrloc:

    \xbrloc bbbbbbbbbbbb
    (\nt vvbretnbfkytbgnrf)
    \xv aaaaaaaaaaa
    (\nt frghektbgixrd)
    \xn cccccccccccc
    (\nt frzegetgrhy)


    Est-ce possible de faire tout ça avec la même macro?
    Un truc du genre:

    si j'ai
    \xv .......
    \sfx .........
    \xbrloc .........
    \xfon .........

    alors faire:
    \xbrloc ........
    \sfx ..........
    \xfon .........
    \xv ..............

    si j'ai:

    \xv ........
    \xbrloc ..........
    \xn ...........

    alors faire:

    \xbrloc ..........
    \xv ...............
    \xn ..............

    et si j'ai

    \xv ...........
    \nt ............
    \xbrloc ............
    \nt ............
    \xn ...........
    \nt ............

    alors faire pareil en ignorant les \nt:

    \xbrloc ..........
    \nt ..........
    \xv ...........
    \nt ..........
    \xn ..............
    \nt ..............

    J'espère que c'est pas trop compliqué

  9. #9
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut pwyll2,

    Avant de demander, as-tu vérifier si la macro fonctionne et quel résultat donne-t-elle avec les modif que j'ai fait sur la macro existante et les paramètres ? Nous sommes là pour t'aider pas pour faire à ta place, sachant qu'ici ta macro est vraiment très optimisée et donc on fait plus qu'on t'a aidé.

    Teste, vérifie et dis-nous.

    @+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 47
    Points : 10
    Points
    10
    Par défaut
    La macro marche si je l'applique avec un document où tout est au format

    \xp .
    \xv aaaaaaaa
    \sfx bbbbbbbbbbbbb
    \xt ccccccccccccc
    \xfon ddddddddddd
    \xso eeeeeeeeeeeee
    \xn ffffffffffffffffffffff

    mais dans mon document, y a aussi des paragraphes comme j'ai dit précédemment, plus courts, et avec parfois \nt intercalés.


    Par exemple si je prends cet extrait:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    \sn 7.
    \sd (pour introduire une quantité, une dimension)
     
    \xp .
    \xv Kaout un hirded a X metr.
    \xt Kaout on hirded a X mèt.
    \xn Avoir une longueur de X mètres, faire X mètres de long.
     
    \xp .
    \xv Koad divarret, hag en deus un hirded, a ur metr, ur metr hanter.
    \sfx audio/koed_divarret_hag_en_neus_un_hirded_a_ur_metr.mp3
    \xt Koèd divarret, hag en nes on hirded, a or mèt, or mèt hanter.
    \xfon [kwɛd divaːʁǝt, ag ǝ nǝz ɔ͂hniʁdǝt, a oʁ mɛt, oʁ mɛt antǝʁ]
    \xso (In1)
    \xn Du bois émondé, qui a une longueur, d’un mètre, un mètre et demi.
    et que j'y applique la macro, ça fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    \sn 7.
    \sd (pour introduire une quantité, une dimension)
     
    \xp .
    \xt Kaout on hirded a X mèt.
    \sfx audio/koed_divarret_hag_en_neus_un_hirded_a_ur_metr.mp3
    \xfon [kwɛd divaːʁǝt, ag ǝ nǝz ɔ͂hniʁdǝt, a oʁ mɛt, oʁ mɛt antǝʁ]
    \xv Kaout un hirded a X metr.
    \xn Avoir une longueur de X mètres, faire X mètres de long.
     
    \xp .
    \xt Koèd divarret, hag en nes on hirded, a or mèt, or mèt hanter.
    \xv Koad divarret, hag en deus un hirded, a ur metr, ur metr hanter.
    \xso (In1)
    \xn Du bois émondé, qui a une longueur, d’un mètre, un mètre et demi.
    c'est à dire que sfx et xfon ont été déplacés au paragraphe (court) qui est avant (à part ça les \xv et \xt ont bien été inversés comme je voulais, ça c'est ok).

    merci

Discussions similaires

  1. [WD-2002] Macro qui modifie une macro
    Par Wanaka dans le forum VBA Word
    Réponses: 2
    Dernier message: 09/05/2009, 11h46
  2. Modifier une macro espion
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 08/07/2008, 18h03
  3. Impossible de modifier mes macros
    Par meuah dans le forum Excel
    Réponses: 1
    Dernier message: 24/05/2008, 10h00
  4. Modifier une macro avec une autre
    Par Teppic dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 04/03/2008, 11h24
  5. Réponses: 5
    Dernier message: 04/01/2007, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo