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 :

Récupérer du texte dans un doc et le coller dans un autre endroit du dic


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur logiciel métier
    Inscrit en
    Décembre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur logiciel métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2023
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Récupérer du texte dans un doc et le coller dans un autre endroit du dic
    Bonjour,

    j'ai un document modèle avec des champs de fusion.
    Dans ce document je rentre du texte que j'aimerai copier dans un autre endroit du même document.
    J'ai essayé avec les signets et renvois, mais ils disparaissent à chaque réouverture du document.
    J'ai essayé les copier coller en VBA mais je cale, limité par mes connaissances surement.

    Je joint le document avec en partie rouge les parties de doc à copier.

    Merci de votre aideTest document.docxTest document.docx

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Administrateur logiciel métier
    Inscrit en
    Décembre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur logiciel métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2023
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Précision
    En précision, il faut dire que le texte n'est pas toujours le même, et qu'il change à chaque fois, et que j'aimerai remplir l'autre partie de mon document en automatique via VBA.
    j'ai pensé à faire un copier du texte situé entre tel mot et tel mot et le copier entre tel mot et tel mot. Mais je ne sais pas comment faire.

    merci de votre aide


    Citation Envoyé par Montail31 Voir le message
    Bonjour,

    j'ai un document modèle avec des champs de fusion.
    Dans ce document je rentre du texte que j'aimerai copier dans un autre endroit du même document.
    J'ai essayé avec les signets et renvois, mais ils disparaissent à chaque réouverture du document.
    J'ai essayé les copier coller en VBA mais je cale, limité par mes connaissances surement.

    Je joint le document avec en partie rouge les parties de doc à copier.

    Merci de votre aideTest document.docxTest document.docx

  3. #3
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    Si vous remplacez le contenu des signets, il y a de fortes chances qu'ils n'existent plus après modification, il faut les reconstruire en sélectionnant les nouveaux textes.

    Dans l'exemple ci-dessous, on saisit les contenus des signets 1, 2, 3 dans un userform et la validation met à jour les signets et leur renvoi.

    Nom : Capture.JPG
Affichages : 35
Taille : 14,1 Ko

    La mise à jour des renvois doit être réalisée selon leur position dans le document (directement dans un paragraphe ou dans une forme).

    Le code dans un module standard :
    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
     
    Option Explicit
     
    Public ContenuSignet1 As String, ContenuSignet2 As String, ContenuSignet3 As String
    Public Continuer As Boolean
     
    Sub MettreAJourLesSignets()
     
        Continuer = False
        With UsfSignets
             .TextBoxSignet1 = ActiveDocument.Bookmarks("Texte1").Range.Text
             .TextBoxSignet2 = ActiveDocument.Bookmarks("Texte2").Range.Text
             .TextBoxSignet3 = ActiveDocument.Bookmarks("Texte3").Range.Text
             .Show
        End With
     
        If Continuer = False Then Exit Sub
     
        MajSignet ActiveDocument, "Texte1", ContenuSignet1
        MajSignet ActiveDocument, "Texte2", ContenuSignet2
        MajSignet ActiveDocument, "Texte3", ContenuSignet3
     
        MettreAJourLesRenvois
     
    End Sub
     
     
    Sub MajSignet(ByVal DocEnCours As Document, ByVal NomDuSignet As String, ByVal ContenuDuSignet As String)
     
        DocEnCours.Bookmarks(NomDuSignet).Select
        With Selection
             .Range.Text = ContenuDuSignet
             .Expand Unit:=wdParagraph
             .Bookmarks.Add Name:=NomDuSignet
             .MoveRight Unit:=16
             .TypeParagraph
        End With
     
    End Sub
     
     
    Sub MettreAJourLesRenvois()
     
    Dim WdDoC As Document
    Dim I As Integer
     
        Set WdDoC = ActiveDocument
        With WdDoC
     
             .Range.Fields.Update  ' Renvoi Textes 2 et 3
     
             For I = 1 To .Shapes.Count
                 With .Shapes(I).TextFrame
                      If .HasText Then
                         If .TextRange.Fields.Count > 0 Then .TextRange.Fields.Update  ' Renvoi Texte1
                      End If
                 End With
             Next I
     
        End With
        Set WdDoC = Nothing
     
    End Sub

    Le code dans l'userform :

    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
    Option Explicit
     
    Private Sub BoutonRetour_Click()
     
            Continuer = False
            Unload UsfSignets
     
    End Sub
     
    Private Sub BoutonValider_Click()
     
     
           ContenuSignet1 = Me.TextBoxSignet1
           ContenuSignet2 = Me.TextBoxSignet2
           ContenuSignet3 = Me.TextBoxSignet3
     
           Continuer = True
           Unload UsfSignets
     
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur logiciel métier
    Inscrit en
    Décembre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur logiciel métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2023
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour la réponse, mais j'ai trop de texte à mettre, et je ne serai pas le seul à utiliser le document.

    Je pensais plutôt à un copier coller automatique. Copier le texte entre 2 Mots puis coller dans un document à la suite .

    Ou tout autre méthode.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur logiciel métier
    Inscrit en
    Décembre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur logiciel métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2023
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Nouvel essai
    J'ai essayé en faisant des copier coller en VBA mais ça ne marche pas, je ne sais pas pourquoi.Test document.docxTest document.docxTest document.docxTest document.docxTest document.docx

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur logiciel métier
    Inscrit en
    Décembre 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur logiciel métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2023
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Copier coller en VBA j'aimerai supprimer les balises
    J'ai fait quelques lignes pour copier et coller du texte. Voir ci dessous.

    J'aimerai lors du copier coller que les balises soient supprimées. Pour le moment ça me supprime que les balises de fin.

    Voici mon code :

    Private Sub CommandButton1_Click()
    Dim doc As Document
    Set doc = ActiveDocument

    ' Copier le texte entre "sommaire de l'établissement" et "conception des bâtiments"
    CopierCollerEntreBalises doc, "Copier début descriptif", "Copier fin descriptif", _
    "Coller début descriptif", "Coller fin descriptif"

    ' Copier le texte entre "proposition d'avis du groupe" et "prescriptions"
    CopierCollerEntreBalises doc, "Copier début avis", "Copier fin analyse", _
    "Coller début avis", "Coller fin analyse"

    ' Copier le texte entre "ci-après" et "règlement en vigueur"
    CopierCollerEntreBalises doc, "Copier début prescriptions", "Copier fin prescriptions", _
    "Coller début prescriptions", "Coller fin prescriptions"




    End Sub

    Sub CopierCollerEntreBalises(doc As Document, debutBalise As String, finBalise As String, _
    debutCollerBalise As String, finCollerBalise As String)
    ' Déclaration des variables
    Dim debutRange As Range
    Dim finRange As Range
    Dim texteCopie As Range

    ' Sélection du texte entre les balises
    Set debutRange = doc.Range
    debutRange.Find.Text = debutBalise
    debutRange.Find.Execute
    Set finRange = doc.Range
    finRange.Find.Text = finBalise
    finRange.Find.Execute

    ' Copier le texte entre les balises
    Set texteCopie = doc.Range(debutRange.End, finRange.Start)
    texteCopie.Copy

    ' Coller le texte entre les balises de collage
    debutRange.Find.Text = debutCollerBalise
    debutRange.Find.Execute
    Set finRange = doc.Range
    finRange.Find.Text = finCollerBalise
    finRange.Find.Execute
    finRange.Paste

    End Sub

Discussions similaires

  1. Mettre du texte dans l'autre sens en bas de page
    Par DamKre dans le forum Word
    Réponses: 2
    Dernier message: 19/09/2007, 07h57
  2. Réponses: 12
    Dernier message: 21/08/2006, 16h25
  3. Modifier un texte dans une autre frame
    Par hotkebab99 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2006, 14h46
  4. Envoyer du texte dans une autre application (ou send key)
    Par Coussati dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 10/02/2006, 15h26
  5. [TP]Insertion texte dans un autre programme
    Par FLB dans le forum Turbo Pascal
    Réponses: 53
    Dernier message: 14/06/2003, 20h11

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