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 avec le presse papier


Sujet :

VBA Word

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 142
    Points : 236
    Points
    236
    Par défaut CHercher et remplacer avec le presse papier
    Bonjour à tous,

    J'ai une application Excel qui génère un document Word à partir d'un fichier Word dans lequel j'ai inséré des balise du type <%=xxxx%> afin d'utiliser la fonction "rechercher / remplacer".

    Cela fonctionne très bien pour les variables de moins de 255 caractères. Pour les variables contenant plus de texte, j'essaye d'utiliser le presse papier mais le fonctionnement est totalement aléatoire. Le texte est bien ajouté mais 1 fois sur 10 on va dire

    Avez-vous une idée du pourquoi du comment ? Merci d'avance.

    Voici le du 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
    Sub Remplace(doc As Word.Document, chaine As String, ByVal value As String)
        Dim i As Integer
        Dim objData As New DataObject
     
        doc.Characters.First.Select
     
        If Len(value) > 254 Then
            objData.SetText value
            objData.PutInClipboard
     
            With doc.ActiveWindow.Selection.Find
                .Text = chaine
                .Replacement.Text = "^c"
                .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
            End With
     
            objData.SetText ""
            objData.PutInClipboard
        Else
            With doc.ActiveWindow.Selection.Find
                .Text = chaine
                .Replacement.Text = value
                .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
            End With
        End If
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Soticca Voir le message
    Bonjour,

    Dans le code ci-dessous, je copie colle le contenu d'une cellule de plus de 680 caractères sur un signet de position. La cellule (le tableau) est ensuite transformée en 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Sub CopierPlusDe255Caracteres()
     
    Dim AppWord As Object, DocWord As Object
    Dim MaCelluleACopier As Range
     
        Set MaCelluleACopier = Sheets("Paramètres").Range("CelluleACopier")
     
        Set AppWord = CreateObject("word.application")
        With AppWord
             .Visible = True
             Set DocWord = .Documents.Open(ThisWorkbook.Path & "\RAPPORT_REV0.docm")
        End With
     
        With DocWord
             MaCelluleACopier.Copy
             .Bookmarks("fixe").Range.Paste
             Application.CutCopyMode = False
             .Tables(1).ConvertToText Separator:=wdSeparateByParagraphs, NestedTables:=True
             .Close SaveChanges:=True
        End With
     
        AppWord.Quit
     
        Set DocWord = Nothing
        Set AppWord = Nothing
        Set MaCelluleACopier = Nothing
     
    End Sub

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 142
    Points : 236
    Points
    236
    Par défaut
    Au départ j'utilisai les signets mais le problème c'est qu'il ne peut pas y avoir x signets avec le même nom et j'ais besoin de pouvoir insérer plusieurs fois la même valeur à différents endroits du document Word.

    Maintenant, si je ne trouve pas une solution fonctionnelle pour les variables de plus de 255 caractères, je ferai un mix "remplacer / signet".

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Soticca Voir le message
    Je ne comprends pas le problème car rien n'empêche d'injecter la même valeur sous N noms de signets différents. Pour cela, utilisez une table d'association.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 142
    Points : 236
    Points
    236
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Je ne comprends pas le problème car rien n'empêche d'injecter la même valeur sous N noms de signets différents. Pour cela, utilisez une table d'association.
    Juste une question de pratique car cela monte à plus de 150 signets (15 * 10 valeur distinctes) et la table d'association n'est pas forcément idéale.

    Je vais garder les signets pour les valeurs supérieures à 255 caractères car là, ils sont unique à chaque fois (même si j'en ai une bonne cinquantaine).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Soticca Voir le message
    Vous pourriez également utiliser avantageusement des renvois pour chaque signet en double.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2023, 23h07
  2. Problème avec le Presse-papier (Clipboard)
    Par DPhBxl dans le forum Windows Vista
    Réponses: 5
    Dernier message: 27/11/2008, 01h42
  3. Problème avec le presse papiers
    Par scara dans le forum Langage
    Réponses: 0
    Dernier message: 01/12/2007, 18h02
  4. Réponses: 4
    Dernier message: 28/10/2005, 10h39
  5. Placer du texte dans le presse papier avec DOM
    Par Desraux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/01/2005, 13h11

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