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 :

[VBA-E] Mise à jour signet dans word


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut [VBA-E] Mise à jour signet dans word
    J'ai un problème pour mettre à jour un signet dans word depuis VBA excel.(office2002)
    Je met mon texte dans le signet mais le signet s'efface ensuite!!
    Pourtant, je crée un nouveau signet (meme nom)au meme endroit avec "range" mais ca ne marche pas!!

    aidez moi...Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ton code siouplé

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    le voila...

    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
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
        Txtintro = Feuil1.TextBox_intro.Text
     
        Set Rngintro = LeDocWord.Bookmarks("intro").Range
     
        With LeDocWord
        'Le nom du signet dans le document word est ici "intro"
        .Bookmarks("intro").Range.Text = Txtintro
        .Bookmarks.Add "intro", Rngintro
        End With
     
        'LeDocWord.Bookmarks.Add "intro", Rngintro
     
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        ObjWord.Quit
     
        'Set ObjWord = Nothing
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu ne peux pas faire ça. Si tu ajoutes un signet, tu effaces l'ancien (pas le texte, mais le signet).
    Pour affecter un signet à du text, tu dois sélectionner ton texte, puis, lui affecter le signet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Txtintro = Feuil1.TextBox_intro.Text
        Selection.GoTo What:=wdGoToBookmark, Name:="Intro"
        Selection.TypeText Text:=Txtintro
        Selection.Find.ClearFormatting
        Selection.Find.Text = Txtintro
        Selection.Find.Execute
        ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="Intro"
    Ceci dit, si le texte est très long, j'ignore si ça fonctionne
    Tu dis

    Edit
    Je n'ai pas utilisé l'instance de l'appli, n'oublie pas de la rajouter

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    ca ne marche pas, je créee mon signet à la fin de la macro, ca c'est bon!! mais mon texte dans le signet n'est pas mis à jour.

    je renvoie 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
    27
    28
    29
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
        Txtintro = Feuil1.TextBox_intro.Text
     
        Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        Selection.TypeText Text:=Txtintro
        Selection.Find.ClearFormatting
        Selection.Find.Text = Txtintro
        Selection.Find.Execute
        ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="intro"
     
     
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        ObjWord.Quit
     
        'Set ObjWord = Nothing
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Autant pour moi, mon code testé hier ne fonctionne plus aujourd'hui
    J'ai corrigé pour qu'il fonctionne mais là, j'ai du mal à comprendre.
    Tel qu'il fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Selection.HomeKey Unit:=wdStory
        'Txtintro = Feuil1.TextBox_intro.Text
        Txtintro = "répertoriées sont nouvelles"
        Selection.GoTo What:=wdGoToBookmark, Name:="Intro"
        Selection.TypeText Text:=Txtintro
        Selection.HomeKey Unit:=wdStory '***** Ajouté
        Selection.Find.ClearFormatting
        With Selection '***** modifié mais qui ne devrait rien changer
            .Find.Text = Txtintro
        End With
        Selection.Find.Execute
        With Selection
            .Bookmarks.Add Name:="Intro" '**** modifié
        End With
    Tu dis

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut

    non toujours pas rien dans le texte du signet, il n'est toujours pas mis à jour.
    voici le code avec ta partie que j'ai inseré.

    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
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
     
        Selection.HomeKey Unit:=wdStory
        'Txtintro = Feuil1.TextBox_intro.Text
        Txtintro = "répertoriées sont nouvelles"
        Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        Selection.TypeText Text:=Txtintro
        Selection.HomeKey Unit:=wdStory '***** Ajouté
        Selection.Find.ClearFormatting
        With Selection '***** modifié mais qui ne devrait rien changer
            .Find.Text = Txtintro
        End With
     
        Selection.Find.Execute
        With Selection
            .Bookmarks.Add Name:="intro" '**** modifié
        End With
    une autre suggestion car la je suis au fond du trou....

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Faut pas désespérer.
    Deux choses : Avant de lancer cette macro, le signet existe bien ? Tu as bien pensé à le créer dans ton doc ? Sans ça, il n'existe pas et la macro ne le trouvera pas (!)
    La deux : Comment récupères-tu le texte contenu dans le signet ?
    Ajoute simplement après une ligne goto et à la place de
    Txtintro = Feuil1.TextBox_intro.Text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        LeTexte = Selection
        msgbox LeTexte
    J'ai toujours fait comme ça en me "débrouillant" avec ce que je savais, et n'ai donc jamais cherché autre chose.
    Je ne connaissais donc pas la syntaxe que tu utilises.
    S'il y a mieux, je suis preneur
    A+

    Edit
    J'ai oublié que tu étais dans Excel. Ajoute les instances de l'appli
    Ton code ne peux pas fonctionner si tu ne le fais pas pour chaque ligne de code

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Bon, il va falloir que je me penche sur le pb, ta syntaxe est sans doute meilleure si on traite correctement les instances.
    Ce serait tout de même plus simple que mon bricollage
    A+

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    Oui mon signet est bien présent dans mon doc word,
    Et puis je ne veux pas récuperer l'ancien texte de mon signet je veux le remplacer par le texte de ma listbox de mon fichier excel.
    Et puis faire de ce texte, le contenu du signet.

    C'est bon?

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    C'est bon mais je t'ai dit une bêtise, c'est bien l'instance du doc qu'il faut utiliser. Dans un autre cas, c'est celle de l'appli... Complètement tordu ce Word
    Je teste et je reviens

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    C'est bon j'ai un truc qui marche à moitié,
    le soucis c'est que quand je fais un "entrer" dans ma list box ,
    le signet se met n'importe comment sur mon doc word.

    et du coup à la macro suivante ca ne marche plus.

    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
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
     
        ObjWord.Selection.HomeKey Unit:=wdStory
        Txtintro = Feuil1.TextBox_intro.Text
        'Txtintro = "répertoriées sont nouvelles"
        ObjWord.Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        ObjWord.Selection.TypeText Text:=Txtintro
        ObjWord.Selection.HomeKey Unit:=wdStory '***** Ajouté
        ObjWord.Selection.Find.ClearFormatting
        With ObjWord.Selection '***** modifié mais qui ne devrait rien changer
            .Find.Text = Txtintro
        End With
     
        ObjWord.Selection.Find.Execute
        With ObjWord.Selection
            .Bookmarks.Add Name:="intro" '**** modifié
        End With
     
     
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        'ObjWord.Quit
     
        'Set ObjWord = Nothing
    End Sub

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ben non, j'avais pas dit de bêtise
    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
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        'RA = ThisWorkbook.path & "\RA1.doc"
        RA = "D:\doc\Claviers sans fil.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
        'Txtintro = TextBox_intro.Text
        Txtintro = "répertoriées sont nouvelles"
     
        ObjWord.Selection.HomeKey Unit:=wdStory
        ObjWord.Selection.Goto What:=wdGoToBookmark, Name:="Intro"
        ObjWord.Selection.TypeText Text:=Txtintro
        ObjWord.Selection.HomeKey Unit:=wdStory
        ObjWord.Selection.Find.ClearFormatting
        With ObjWord.Selection
            .Find.Text = Txtintro
        End With
        ObjWord.Selection.Find.Execute
        With ObjWord.Selection
            .Bookmarks.Add Name:="Intro"
        End With
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        ObjWord.Quit
     
        Set ObjWord = Nothing
    End Sub
    Mais c'est mon bricollage qui a gagné !

  14. #14
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    Une idée pour mon probleme de signet qui s'en va en haut de la page dès que je fais "entrer" dans mon texte à introduire?

    merci déjà pour tout ca..

  15. #15
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    EN fait ta premiere crainte est verifiée.
    Dès que j'ai plusieurs ligne de texte dans ma listbox à introduire dans le signet
    ca ne marche plus.
    Le texte s'insere dans le signet et le signet et supprimé et se replace en haut de la feuile.

    Une suggestion pour résoudre ce problème.
    Merci encore d'avance.

  16. #16
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    J'ai oublié voici le dernier 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
     
        On Error Resume Next
     
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)
     
        ObjWord.Selection.HomeKey Unit:=wdStory
        Txtintro = Feuil1.TextBox_intro.Text
     
        ObjWord.Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        ObjWord.Selection.TypeText Text:=Txtintro
        ObjWord.Selection.HomeKey Unit:=wdStory '***** Ajouté
        ObjWord.Selection.Find.ClearFormatting
        With ObjWord.Selection '***** modifié mais qui ne devrait rien changer
            .Find.Text = Txtintro
        End With
     
        ObjWord.Selection.Find.Execute
     
        With ObjWord.Selection
            .Bookmarks.Add Name:="intro" '**** modifié
        End With
     
     
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        'ObjWord.Quit
     
        'Set ObjWord = Nothing
    End Sub

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Une idée, oui ! Mais la méthode est totalement différente
    Consiste à encadrer ton texte de balises : < LeTexte >
    Tes balises peuvent être masquées
    Maintenant que tu as le principe (quand tu utilises "Selection", c'est l'instance de l'appli que tu dois utiliser, pas celle du document...) tu peux faire ça... Je cherche, je dois bien avoir ce foutu code quelque part
    A tout'

  18. #18
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    instance appli c'est: ObjWord
    instance doc c'est: LeDocWord

    c'est bien ca?

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Selection.HomeKey Unit:=wdStory
        With Selection.Find
            .Text = "<"
        End With
        Selection.Find.Execute
        With Selection
            .ExtendMode = True
            With .Find
                .Text = ">"
            End With
        End With
        Selection.Find.Execute
    Là, le texte situé entre les deux balises est sélectionné. Reste plus qu'à insérer le signet
    Tu mets ces lignes, avec l'instance de l'appli, juste après avoir remplacé le texte du signet.
    A+

  20. #20
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    J'ai pas tout compris, j'ai fait ca mais ca ne marche pas.Donc c'est que j'ai pas compris ou il fallait mettre tes balises.

    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
    Sub IntroVersSignet()
        Dim RA As String
        Dim Txtintro As String
        Dim ObjWord As Word.Application
        Dim LeDocWord As Word.Document
        Dim Rngintro As Range
        
        On Error Resume Next
        
        RA = ThisWorkbook.Path & "\RA1.doc"
        Set ObjWord = CreateObject("Word.Application")
        ObjWord.Visible = True
        Set LeDocWord = ObjWord.Documents.Open(RA)      
        
        ObjWord.Selection.HomeKey Unit:=wdStory
        Txtintro = Feuil1.TextBox_intro.Text
    
        ObjWord.Selection.GoTo What:=wdGoToBookmark, Name:="intro"
        ObjWord.Selection.TypeText Text:=Txtintro
        ObjWord.Selection.HomeKey Unit:=wdStory '***** Ajouté
        ObjWord.Selection.Find.ClearFormatting
        With ObjWord.Selection '***** modifié mais qui ne devrait rien changer
            .Find.Text = Txtintro
        End With
        ObjWord.Selection.Find.Execute
        
        ObjWord.Selection.HomeKey Unit:=wdStory
        With ObjWord.Selection.Find
            .Text = "<"
        End With
        ObjWord.Selection.Find.Execute
        With ObjWord.Selection
            .ExtendMode = True
            With .Find
                .Text = ">"
            End With
        End With
        ObjWord.Selection.Find.Execute  
        With ObjWord.Selection
            .Bookmarks.Add Name:="intro" '**** modifié
        End With
          
        
        'Pour enregistrer le document et quitter Word
        LeDocWord.Save
        'ObjWord.Quit
        
        'Set ObjWord = Nothing
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PHP 5.3] Mise à jour DOCVARIABLE dans un document Word
    Par sieste68 dans le forum Langage
    Réponses: 0
    Dernier message: 13/04/2012, 13h08
  2. Réponses: 0
    Dernier message: 30/11/2011, 18h56
  3. [VBA][EXCEL] Mise à jour de TCD en macro
    Par Scuriolus dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/12/2005, 14h30
  4. [c#][VS2003]Mise à jour propriété dans le designer
    Par cedkat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/11/2005, 16h10
  5. Création étiquettes avec signets dans Word
    Par rohstev dans le forum VBA Word
    Réponses: 2
    Dernier message: 18/03/2005, 14h14

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