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 :

Mettre en gras des caractères dans un autre document Word.


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Débutant en informatique
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Mettre en gras des caractères dans un autre document Word.
    Bonjour,

    Comme c'est mon premier message, je commence par me présenter.
    Je ne suis pas un professionnel de l'informatique, juste quelqu'un qui n'a pas peur de mettre de temps en temps ses mains dans les entrailles des logiciels et qui a déjà fait un peu de programmation.
    Je débute complètement en VBA (je commence à apprendre en lisant sur le Web) et je suis nouveau sur ce Forum. J'espère que vous serez indulgents si j'écris des bêtises...

    Je vous contacte car j'essaie d'écrire un script en VBA qui crée un document Word, qui copie du texte dans cet autre document en fonction de paramètres entrés par l'utilisateur dans une boîte de dialogue.
    Le document en question est créé ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Création d'un document Word
       Dim appWD As Word.Application
       Set appWD = CreateObject("Word.Application")
       appWD.Visible = True
       Set oDoc = appWD.Documents.Add
    Jusque là, tout va bien.

    J'aimerai ensuite que le script VBA mettre en gras le texte situé entre des parenthèses dans le document généré par le script. Et cela, je n 'y arrive pas.

    J'utilise une routine que j'ai trouvée sur un autre forum pour tenter en vain de faire cela.
    Voici la routine en question:

    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
     
    Private Sub dudule()
    Selection.HomeKey unit:=wdStory
    ScreenUpdating = False
    With Selection.find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Replacement.Font.Bold = True
        .MatchWildcards = True
        .Text = "(\(*\))"
        .Replacement.Text = "\1"
        .Forward = True
        .Execute Replace:=wdReplaceAll
    End With
    End Sub
    J'ai essayé de faire différentes modification dans le code et de changer le document actif (comme ceci: oDoc.Activate), et après plusieurs heures d'essais divers, rien n'y fait...
    J'ai l'impression qu'il y a des fondamentaux VBA que je n'ai pas appris/compris.

    Si jamais une bonne âme pouvait m'aider, à réasoudre ce mystère ce serait génial...

    Merci d'avance à vous!

  2. #2
    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,

    Si tu pars de Word, pas besoin de créer une nouvelle instance de Word.

    Documents.Add devrait suffire.

    Un peu de lecture là : http://heureuxoli.developpez.com/office/word/vba-word/

    Malheureusement, tu ne nous donnes pas assez de renseignements.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Débutant en informatique
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Débutant en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour ta réponse. Ne pas créer de nouvelle instance de Word n'a malheureusement pas aidé à résoudre le problème.
    Je suis cependant parvenu à trouver la solution en lisant ton intro au VBA Word. Merci !
    Je n'avais pas bien compris la différence entre range et Selection. Et utiliser Selection sur un document qui n'est pas actif, cela ne peut jamais fonctionner :-)
    (voir nouvelle version du code ci-dessous).


    Belle journée !

    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
     
    Private Sub dudule ()
    Set docRange = oDoc.Range(0, 0)
        ScreenUpdating = False
        With docRange.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Replacement.Font.Bold = True
            .MatchWildcards = True
            .Text = "(\(*\))"
            .Replacement.Text = "\1"
            .Forward = True
            .Execute Replace:=wdReplaceAll
        End With
        ScreenUpdating = True
    End Sub

  4. #4
    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,

    J'ai d'autres choses en rayon.

    http://heureuxoli.developpez.com/off...cument-tiroir/
    Ce lien devrait t'aider un peu et le second est basé sur la recherche et le remplacement.
    http://heureuxoli.developpez.com/off...-et-remplacer/
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  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,

    Si tu utilises un objet document.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myRepDoc = documents.add
    Dans ton code, tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With myRepDoc.Range.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Replacement.Font.Bold = True
            .MatchWildcards = True
            .Text = "(\(*\))"
            .Replacement.Text = "\1"
            .Forward = True
            .Execute Replace:=wdReplaceAll
        End With
    De cette manière, tu peux te passer d'une Selection
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/01/2017, 09h24
  2. Réponses: 5
    Dernier message: 10/08/2012, 15h29
  3. mettre des caractères dans une string
    Par will2taz dans le forum VB.NET
    Réponses: 13
    Dernier message: 13/11/2007, 17h11
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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