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 :

changements de mots dans word à partir d'une requêtes d'access


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut changements de mots dans word à partir d'une requêtes d'access
    onjour,

    Je voudrai remplacer des mots dans un texte à partir de 2 listes de mots obtenus depuis access. Il y a deux cas possibles : certains mots sont à supprimer directement, d'autres mots sont à colorer puis à supprimer manuellement en fonction du contexte.

    Je suis débutant sur le vba...
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Public Sub supprime()
    Dim oWord As Word.Application
    Dim oDoc As Word.Document
    Dim db As DAO.Database
    Dim rsasup As DAO.Recordset
    Dim rsavoir As DAO.Recordset
     
    Set oWord = ??
    Set db = CurrentDb
    Set rsasup = db.OpenRecordset("SELECT mots FROM MOTS_SORTIS WHERE nom_ent = 0")
     
    While Not rsasup.EOF
        With Word_Application
        .Selection.Find.ClearFormatting
        .Selection.Find.Replacement.ClearFormatting
     
         With .Selection.Find
              .Text = rsasup
             .Replacement.Text = ""
             .Forward = True
             .Wrap = wdFindContinue
             .Format = False
             .MatchCase = False
             .MatchWholeWord = False
             .MatchWildcards = False
             .MatchSoundsLike = False
             .MatchAllWordForms = False
        End With
        .Selection.Find.Execute
     
         rsasup.MoveNext
    Wend
    rsasup.Close
    Set rsasup = Nothing
     
    Set rsavoir = db.OpenRecordset("SELECT mots FROM MOTS_SORTIS WHERE nom_ent = -1")
    While Not rsavoir.EOF
    With Word_Application
        .Selection.Find.ClearFormatting
        .Selection.Find.Replacement.ClearFormatting
     
         With .Selection.Find
              .Text = rsasup
             .Forward = True
             .Wrap = wdFindContinue
             .Format = False
             .Font.Color = wdColorRed
             .MatchCase = False
             .MatchWholeWord = False
             .MatchWildcards = False
             .MatchSoundsLike = False
             .MatchAllWordForms = False
        End With
        .Selection.Find.Execute
     rsavoir.MoveNext
    Wend
     
    rsavoir.Close
    Set rsavoir = Nothing
     
    db.Close
    Set db = Nothing
    oWord.Quit
    End Sub

  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,

    Set oWord = New Word.Application

    Mais le problème principal n'est pas là.
    Or, rsasup est un RecordSet.

    Jette un oeil à ce tuto.

    http://warin.developpez.com/access/dao/
    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
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut amélioration
    Bonjour,

    J'ai essayé d'améliorer mon code mais à priori il y a toujours un problème. J'imagine que j'utilise du vba word qui n'est pas exécutable depuis access. Est-ce le problème ?
    La méthode find n'est pas reconnue lors de l'exécution : myRange.Find.Execute FindText:=rsasup.Fields(1), _
    Merci d'avance pour votre aide

    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
    Public Sub supprime()
     
    'déclaration des variables access
    Dim db As DAO.Database
    Dim rsasup As DAO.Recordset
     
    'déclaration des variables word
    Dim myRange As Word.Application
     
     
    'affectation de la base et des recordset
    Set db = CurrentDb
     
    'affectation des recordset à supprimer
    Set rsasup = db.OpenRecordset("SELECT mots FROM MOTS_SORTIS WHERE nom_ent = 0")
    'Set oDoc = Documents.Open("C:\Users\jean\DONNEES THESE\CONTROLE DONNEES\sujet les ruptures\liste discours 40 ruptures\liste complete\discours sequence fusion")
     
    'affectation du doc word
    Set myRange = Documents.Open("C:\Users\jean\Desktop\test.doc")
     
    'Boucle de traitement des recordset à remplacer
    Do While Not rsasup.EOF
     
        Set myRange = ActiveDocument.Content
        myRange.Find.Execute FindText:=rsasup.Fields(1), _
        ReplaceWith:=rsasup.Fields(2), Replace:=wdReplaceAll
     
    Loop
     
    ' Fermeture de l'objet recordset
    rsasup.Close
    Set rsasup = Nothing
     
    ' Fermeture de l'objet base
    db.Close
    Set db = Nothing
     
    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,

    On peut très bien utiliser word au départ d'Access en VBA.

    Mais tu changes beaucoup de chose.

    Une recherche fonctionne mieux sur un objet Selection que sur un objet Range.

    De plus, dans ta sentence SQL tu n'utilises qu'un seul champ alors que tu en utilises deux ?
    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: 6
    Dernier message: 05/06/2014, 16h17
  2. [AC-2010] Tableau word à partir d'une requête
    Par AidezMoiSvp dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/11/2012, 11h12
  3. insérer dans word à partir d'une application VB.NET
    Par meryamaa dans le forum VB.NET
    Réponses: 14
    Dernier message: 18/09/2012, 11h32
  4. Affichage d'une liste dans JSP à partir d'une requête HQL
    Par samirmember dans le forum Hibernate
    Réponses: 23
    Dernier message: 28/12/2011, 22h34
  5. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15

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