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

VB 6 et antérieur Discussion :

[VB][WORD] MSWORD.OLB Remplacement.Text 255 char ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut [VB][WORD] MSWORD.OLB Remplacement.Text 255 char ?
    Bonjour,

    Je crée une application VB qui intéragit avec un fichier word grace à MSWORD.OLB.

    Le but est de remplacer un tag dans un fichier word par un texte prit d'une base de donnée.

    Le problème est que mon texte peut faire plus de 255 caractères et quand c'est le cas, j'ai une erreur comme quoi mon texte est trop long. Il y a-t-il un moyen pour mettre un texte de plus de 255 caractères ?

    P.s. J'utilise Word 2002

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Bonjour,

    peux-tu nous montrer le code gérant le remplacement des tags ainsi que le message d'erreur ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Hello, Merci beauoup de me répondre

    Voici 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
    Private Sub FindAndReplaceAll(strChamp As String, strTexte As String)
        'Rechercher/Remplacer tout dans le nouveau document
        Dim OriginalView As Long
     
        pclsLogTaxPM.LogIt 3, Me.Name, "FindAndReplaceAll"
        If pudtModele.strCodTypDoc = CODTYPDOC_WORD Then
            'Word
            With mappWrd.Selection.Find
                .ClearFormatting
                .Text = strChamp
                .Replacement.Text = strTexte
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
                .Execute Replace:=wdReplaceAll
            End With
        Else
            'Excel
            mappXls.Cells.Replace What:=strChamp, Replacement:=strTexte, LookAt:=xlPart
        End If
    End Sub

    Le message d'erreur est : Paramètre de la chaîne trop long.


    Merci d'avance

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Je pense que tu devrais gérer le remplacement différemment, non pas avec la commande rechercher/remplacer mais peut-être en utilisant des signets (propriété Bookmarks de l'objet Document)

    Chaque "tag" est un signet dans le document Word (menu Insertion/Signet). Dans ton code, tu fais un boucle en identifiant tous les signets (bookmarks) de ton document. L'objet Range te permet ensuite de remplacer le signet par une chaine de caractère de ton choix.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Ok, merci beaucoup, je vais essayer !

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Je sais que j'abuse mais tu n'arriverais pas par hasard à adapter le code ? Je suis dessus depuis 3 heures et je m'arrache les cheveux.

    Merci d'avance

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Un truc comme ça devrait fonctionner, à adapter bien sûr :

    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
     
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim wrdRange As Word.Range
     
        Set wrdApp = New Word.Application
        Set wrdDoc = wrdApp.Documents.Open("C:\temp\monfichier.doc") '/ Document à traiter
     
        Do While wrdDoc.Bookmarks.Count > 0
            Set wrdRange = wrdDoc.Bookmarks(wrdDoc.Bookmarks(1).Name).Range
            wrdRange.Text = fonction_remplacant_ton_signet_par_un_string(wrdDoc.Bookmarks(1).Name) '/ ce sont les meilleures fonctions  :)
        Loop
        '
        wrdApp.Visible = True
        '
        Set wrdRange = Nothing
        Set wrdDoc = Nothing
        Set wrdApp = Nothing
        '

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci infiniment mais mon problèmes - et c'est là que je dois pas tout capter - c'est que mon bookmark.count est toujours de zéro.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Tu dois insérer des signets dans ton document du nom des variables à remplacer.
    Ex : dans Word, menu Insertion/Signet, ajoute un signet nommé NOM

    Dans la boucle, la fonction :
    fonction_remplacant_ton_signet_par_un_string(NOM) renvoie "unacsed" et remplace le signet par la valeur "unacsed" dans le document Word

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup, ça fonctionne parfaitement !

    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pilotage Word depuis Access, remplacer dans zone de texte
    Par Jean-Philippe André dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/07/2014, 15h38
  2. Remplacer texte dans Word par Textbox avec scrollbar
    Par 31400 dans le forum VBA Word
    Réponses: 0
    Dernier message: 06/09/2011, 14h06
  3. [VB]Pb reference msword.olb
    Par lehuit dans le forum VBA Word
    Réponses: 2
    Dernier message: 13/02/2006, 07h49
  4. [Système] Remplacement texte dans document actif
    Par tom06440 dans le forum Langage
    Réponses: 5
    Dernier message: 08/01/2006, 11h43

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