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 :

Chercher et remplacer dans une zone de texte


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 35
    Points
    35
    Par défaut Chercher et remplacer dans une zone de texte
    Bonjour,

    j'ai créer une macro qui change tout les 1.2 en 1,2. Elle fonctionne correctement. Par contre j'aimerais la modifier pour qu'elle fasse le changement uniquement sur une zone de texte sélectionné, mais je n'y arrive pas. Est-ce que quelqu'un peut m'aider?

    Voila le code:

    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
    27
     
       Dim count As Integer
       Options.DefaultHighlightColorIndex = wdYellow
     
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
     
        Selection.Find.Replacement.Highlight = True
     
        With Selection.Find
     
            .Text = "([0-9])" & "." & "([0-9])"
            .Replacement.Text = "\1,\2"
            .Forward = True
     
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
     
            While .Execute(Replace:=wdReplaceOne)
                count = count + 1
                Selection.Collapse wdCollapseStart
            Wend
        End With

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Bonjour,

    Tu pourrais ajouter

    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
     Dim count As Integer
       Options.DefaultHighlightColorIndex = wdYellow
     
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
     
        Selection.Find.Replacement.Highlight = True
     
        With Selection.Find
     
            .Text = "([0-9])" & "." & "([0-9])"
            .Replacement.Text = "\1,\2"
            .Forward = True
            .Wrap = wdFindAsk        
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = True
            .MatchSoundsLike = False
            .MatchAllWordForms = False
     
            While .Execute(Replace:=wdReplaceOne)
                count = count + 1
                Selection.Collapse wdCollapseStart
            Wend
        End With

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Je pense pas que ça suffise.

    La recherche se fait sur un Range ou un Selection.

    Si la zone de texte n'est pas sélectionnée, le code ne fara pas de remplacement.

    Il faut faire une boucle sur les différentes zones de texte du document et pour chaque zone faire la recherche.

  4. #4
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Re-,

    Ceci devrait faire mieux.... Il remplace dans le texte sélectionné et ne demande pas pour continuer à tout le texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
            .Text = "1.9"
            .Replacement.Text = "1,9"
            .Forward = True
            .Wrap = wdFindStop        
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pas plus que l'ancien code. Si tu ne mets pas la sélection sur la zone de texte, la recherche se borne à la MainStory.

    Les choix wdFindStop ou wdFindAsk sont juste des paramètres qui selon le choix vont arrêter la recherche à la find du document ou poser une question à l'utilisateur.

  6. #6
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Bonjour Heureux-oli,

    Je sélectionne la zone de texte et lance la macro ; le changement ne se fait que dans la zone sélectionnée.

    Il doit y avoir un truc qui m'échappe.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Chez moi, lorsque je sélectionne un texte avec mon curseur, la modification se fait sur la totalité du texte et non sur la partie sélectionnée...

  8. #8
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Re-,

    Tu sélectionnes une partie du texte, ou une partie d'une zone de texte ou ...?

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Citation Envoyé par QuestVba Voir le message
    Bonjour Heureux-oli,

    Je sélectionne la zone de texte et lance la macro ; le changement ne se fait que dans la zone sélectionnée.

    Il doit y avoir un truc qui m'échappe.
    Tu as raison si tu sélectionne la zone de texte avant de lancer le code.
    Après avoir relu la première question , c'est bien le but souhaité. Je pensais que la boucle devait se faire sur les différentes zones de texte du document.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Je sélectionne le texte dans le document.

    J'aimerais sélectionner du texte et faire le remplacement dans le texte sélectionné!

    Je ne sais pas si je suis clair...

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le code qui est donné fait le remplacement dans le texte qui est sélectionné.

    Voilà le code que j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub RemplacementOli()
    With Selection.Find
        .Text = "1.2"
        .Replacement.Text = "1,2"
        .Wrap = wdFindStop
        .Forward = True
        .Execute Replace:=wdReplaceAll
    End With
     
    End Sub

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Le problème c'est que j'ai besoin de garder le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            While .Execute(Replace:=wdReplaceOne)
                count = count + 1
                Selection.Collapse wdCollapseStart
            Wend
    qui me permet de compter le nombre de modifications effectuées dans le texte. Et je sais que la commande .Execute(Replace:=wdReplaceOne) posse problème car c'est elle qui fait continuer le remplacement... Dès que je l'enlève, cela fonctionne correctement.

    Est-ce que quelqun'un a une idée pour un changement?

  13. #13
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Re,

    Voici un changement: compteur et remplacement

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub Cherchons_Remplacons()
     
    Datext = Selection.Text
    'Motcher=mot à remplacer
    Motcher = "1.9"
    'ctr=compteur
    ctr = 0
    Pos = 0
    Do
    Pos = InStr(1, Datext, Motcher, 1)
    'Chaîne non trouvée.
    If Pos = 0 Then
    Exit Do
    End If
    'ctr = nombre d'occurrences
    ctr = ctr + 1
    Datext = Right(Datext, Len(Datext) - Pos)
    Loop While (ctr > 0 And Len(Datext) > Len(Motcher))
    MsgBox ctr
     
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
            .Text = "1.9"
            .Replacement.Text = "1,9"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
    End With
     
    Selection.Find.Execute Replace:=wdReplaceAll
     
     
    End Sub

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    La macro ne fait pas vraiment ce que je cherche à faire...

    Il faut remplacer tous les points qui se trouvent entre deux chiffres et non pas uniquement 1.9...

Discussions similaires

  1. [WD-2000] Rechercher-remplacer dans une zone de texte
    Par tegestobis dans le forum VBA Word
    Réponses: 4
    Dernier message: 04/09/2009, 14h35
  2. [VBA-W][VBA-E]Remplacer ou écrire 1 texte dans une zone de texte
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2007, 10h31
  3. Remplacer ou écrire 1 texte dans une zone de texte
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 02/03/2007, 18h17
  4. Code de séléctionnement dans une zone de texte
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/10/2005, 13h46
  5. Exclusion de caractere dans une zone de texte
    Par martsigo dans le forum Access
    Réponses: 7
    Dernier message: 23/08/2005, 20h03

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