Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2008, 11h24   #1
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 1
Points : 1
Par défaut Lire signets WORD depuis EXCEL

Bonjour,

J'utilise OFFICE 2007.
J'ai un document WORD avec des signets :

Code :
1
2
3
4
5
Ici le champ1 : signet1
Ici le champ2 : signet2
Ici le champ3 : signet3
Ici le champ4 : signet4
Ici le champ5 : signet5
En affichant les signets dans les options, j'ai bien les mots signet1 à signet5 qui sont affichés entre crochets.
J'ai nommé mes signets s1, s2, ... s5.

J'accède à ces champs depuis une macro VBA sous EXCEL.
Mon but est de remplacer ces signets par des données d'EXCEL :
Code :
1
2
3
4
5
6
7
    Set wdApp = New Word.Application
    Set oDoc = wdApp.Documents.Open(strCheminDestination & strNomProjet & ".doc")
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 1)
    oDoc.Bookmarks(2).Range.Text = xlSh.Cells(2, 2)
    oDoc.Bookmarks(3).Range.Text = xlSh.Cells(2, 3)
    oDoc.Bookmarks(4).Range.Text = xlSh.Cells(2, 4)
    oDoc.Bookmarks(5).Range.Text = xlSh.Cells(2, 5)
Le problème est que l'accès aux Bookmarks 3, 4 et 5 provoque une erreur 5941: le membre de la collection requis n'existe pas.

L'instruction
Code :
oDoc.Bookmarks("s1").Range.Text
renvoie la même erreur.

Seule
Code :
oDoc.Bookmarks("s2").Range.Text
renvoie la bonne valeur.

Et l'instruction renvoie 1 seulement.

Une idée ?
Merci
nico75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 12h06   #2
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 1
Points : 1
Un collègue vient de me filer la réponse :

Code :
1
2
3
4
5
6
7
    Set wdApp = New Word.Application
    Set oDoc = wdApp.Documents.Open(strCheminDestination & strNomProjet & ".doc")
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 1)
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 2)
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 3)
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 4)
    oDoc.Bookmarks(1).Range.Text = xlSh.Cells(2, 5)
Quand on écrit sur un signet, celui-ci est "bouffé" par la valeur et donc n'existe plus.
L'indice du signet suivant est donc 1 et non pas 2.
nico75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2008, 15h07   #3
Invité de passage
 
Inscription : avril 2007
Messages : 11
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 11
Points : 1
Points : 1
J'ai de nouveau un soucis (et cette fois, le collègue ne sait pas ) :

Une fois le signet remplacé par sa valeur, celui-ci n'existe plus.
Or je vais avoir besoin d'y accéder de nouveau.

J'ai essayé d'utiliser :
Code :
oDoc.Bookmarks.Add ("s1")
mais ça ne marche pas :-(
nico75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 02h47   #4
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Par défaut Suppression d'un signet lors de l'affectation de sa valeur par macro

Salut,

Word supprime en effet le signet lorsque tu lui donnes une valeur par macro car c'est exactement ce que tu lui demandes, trouves-moi mon signet et écris le texte "...". Pour ne pas le supprimer et lui donner une valeur, tu dois utiliser "Range"

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 22h43   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 364
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 364
Points : 29 286
Points : 29 286
Salut,

Je vais apporter une précision.
Si ton signet contient du texte, il est effectivement supprimé lorsque l'on insère une valeur sur le signet.

si le signet est juste un emplacement et qu'il ne contient pas de texte, il subsiste.

Jette un oeil ici si tu veux garder du texte dans tes signets.
http://www.developpez.net/forums/sho...d.php?t=483824
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 23h34   #6
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut,

Oui bonne remarque de Heureux-Oli, (comme d'habitude), elle ^peut avoir son importance selon le contexte de ta macro

@+ (et excuse d'avoir oublier ce point )
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h16.


 
 
 
 
Partenaires

Hébergement Web