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

Macros et VBA Excel Discussion :

remplacer des mots en utilisant file input et


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Par défaut remplacer des mots en utilisant file input et
    Bonjour,

    Je voudrais depuis excel (VBA), ouvrir un fuchier un word, remplacer quelques mots par de valeurs lues sur la feuille excel en utilisant file input et file outpout.

    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
    Dim tempstr, temp
     
    vacature = Trim(Range("F3").Text)
     
    Open "C:Mailingmaker.doc" For Input As #1
     
          Do While Not EOF(1)
                Line Input #1, temp
                tempstr = tempstr & temp
            Loop
            Close #1
     
          tempstr = Replace(tempstr, "<function", vacature)
     
          Open "C:\Mailingmaker.doc" For Output As #1
            Print #1, tempstr
            Close #1
    Mais l'application word est bien demarrée, car le document est vide, alors qu'il contien du texte. Mais rien ne se passe.

    Merci de votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Un fichier Word ne saurait être lu et écrit par cette méthode (ton code est valable pour un fichier texte, ce qui n'est pas le cas d'un fichier Word).

    EDIT : J'ajoute que si tu t'amuses à lire par open la totalité (c'est possible), à la modifier, puis à la réécrire ===>> ton fichier Word deviendra totalement inexploitable (même plus ouvrable depuis Word).

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Alors, j'ajoute quelque précisions capitales à ce que ucfoutu vient de te dire.
    En gros tu dois:
    • Ajouter une référence à Microsoft Word à ton projet
    • Démarrer une instance de Word (via la méthode CreateObject)
    • Utiliser le modèle objet de Word pour ouvrir ton fichier (et non pas utiliser l'instruction Open)
    • Faire tes manipulations sur ton fichier (toujours avec le modèle objet Word)
    • Enregistrer le fichier
    • Fermer ton application word (très très important)


    Pour que cela fonctionne sans interruption dans le code, Word doit rester en arrière plan (normalement il devrait l'être par défaut), et tu ne verras pas les opérations effectuées

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 309
    Par défaut
    Merci pour vos réponse,

    Au fait j'utilise cette methode car la solution suivante la plus simple normalement n'a pas fonctionné:

    Le macro fonctionne sous word mais pas sous excel.

    Sous excel j'ai le message d'erreur:

    La méthode 'Replacement' de l'objet 'Find' a échoué

    Voici le code utilisé:
    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
     
    Dim wdApp As Word.Application, wdDoc As Word.Document
     
    Public Sub macro1()
      Dim email as String
      set wdApp = New Word.Application
      wdApp.Visible = True
     
      Set wdDoc = wdApp.Documents.Open("C:\Mailingmaker.doc")
     
      email = Trim(Range("C3").Text)
     
      Call TakenDataExcelToWord("<E-mailAdres>", email)
     
    End Sub
     
    Sub TakenDataExcelToWord(toReplace, theValue)
     
        wdDoc.ActiveWindow.Selection.Find.ClearFormatting
        wdDoc.ActiveWindow.Selection.Find.Replacement.ClearFormatting
     
        With wdDoc.ActiveWindow.Selection.Find
            .Text = toReplace
            .Replacement.Text = theValue
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        wdDoc.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll
     
    End SubJ'utilise excel 2007 et word 2007
    J'utilise excel 2007 et word 2007

    Merci d'avance de votre aide,

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    simple commentaire peut-être pas du tout à propos, mais j'ose.

    ce que tu essaie de faire ressemble assez bien à du publipostage, c'est à dire que tu veux mettre le contenu d'une variable à un endroit, ou plusieurs.

    cela peut se faire via des signets sans utiliser replace.

    Est-ce correct ?

    Autrechose, j'ai généré un code de find & replace dans Word, pour tester le tien, c'est très similaire mais je ne comprends pas pourquoi tu précise Activewindow dans tes instructions. cela me parait inutile.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    C'est à quelle ligne exactement qu'il y a cet échec? Car j'en vois 2 qui sont susceptibles d'être sujettes à cette erreur, même s'il y en a une que je privilégie (histoire de bogues récurrents).

Discussions similaires

  1. Remplacer des mots dans une chaine de caracteres
    Par johnson95 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2011, 09h19
  2. [XL-2007] remplacement des mots dans la meme colonne
    Par jeph.net dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2011, 19h59
  3. [RegEx] Remplacer des mots d'une chaine aléatoirement
    Par sigmoun dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2009, 18h56
  4. Boucle pour remplacer des mots ds un fichiers
    Par dinozo13 dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 21/07/2008, 14h34
  5. Parser une page pour remplaçer des mots par d'autres
    Par HALOMOTO dans le forum Langage
    Réponses: 13
    Dernier message: 13/07/2006, 22h58

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