Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 15/08/2006, 17h37   #1
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Par défaut [VBA-W2000] Renvoyer les coordonnées d'un signet placé dans un tableau

Bonjour,

Je ne connais pas encore bien le modèle d'objets de Word et je me retrouve donc à buter sur un problème peut-être tout bête.
Je m'explique :

Un utilisateur place un signet dans un tableau Word et j'aurais besoin de récupérer les coordonnées (numéros de ligne et de colonne) de ce signet au sein de mon tableau.

PS : je sais comment atteindre le signet et renvoyer l'objet Range correspondant, mais je n'arrive pas à trouver la propriété/méthode qui me renverrait ses coordonnées au sein du tableau.

Merci d'avance !
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 14h16   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Jamais fait mais ce devrait être un truc comme ça une fois qu'on est dans la bonne cellule (extrait de l'aide... mais faut savoir ce qu'on cherche )
Code :
1
2
3
4
5
6
Private Sub NoColonneEtNoLigne()
    If Selection.Information(wdWithInTable) = True Then
        MsgBox "Colonne " & Selection.Information(wdStartOfRangeColumnNumber)
        MsgBox "Ligne " & Selection.Information(wdStartOfRangeRowNumber)
    End If
End Sub
Regarde aussi les exemples donnés par SylkiRoad à cette adresse, il met plein de solutions
http://www.developpez.net/forums/sho...34&postcount=8
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 15h00   #3
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Merci ouskel'n'or !
Pratique cette propriété Information !
Malheureusement, j'aurais aussi besoin de récupérer l'objet Table (ou son numéro d'index au sein de la collection Tables) auquel ces coordonnées correspondent.
Quelque chose du genre :
Code :
1
2
Selection.Information(wdStartOfRangeTableNumber) 
'cette constante n'existe malheureusement pas
J'ai eu beau regarder toutes les constantes wdInformation, je n'ai rien trouvé de tel. Tu n'aurais pas une idée par hasard ?
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 16h20   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Non, mais tu peux utiliser le nom de ton tableau.
Pour ça, tu colles un signet à l'ensemble de ton tableau (en plus des signets de tes cellules) et ensuite, tu récupères le nom du signet de la cellule active :
Code :
MsgBox "Signet " & Selection.Bookmarks(Selection.BookmarkID).Name
Selection.BookmarkID te fournit l'index du tableau dans lequel tu te trouves
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 21h15   #5
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Merci pour ta réponse ouskel'n'or.

Mais je ne comprends pas : a priori, Selection.Bookmarkid va me renvoyer l'index du signet, pas celui du tableau contenant ce signet, non ?

En outre, j'utilise ces signets comme des champs de fusion que mes utilisateurs positionnent eux-mêmes au sein de leur document Word, document que je complète ensuite par programmation. Et comme je voudrais leur simplifier la vie au maximum, je souhaiterais leur éviter d'avoir à insérer un signet pour marquer chaque tableau de leur document.
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 09h30   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ok, j'ai compris le pb hier soir en me couchant
C'est vrai : le problème existe si toutes les cellules de tes tableaux ont des signets.
La question : As-tu une colonne de cellules n'ayant pas de signet ?
L'idée pour pallier le pb consisterait alors à relever le signet de la cellule dont tu veux récupérer la donnée puis de décaler sur la colonne du même tableau qui ne contient pas de nom de cellule et de récupérer le nom du signet correspondant au tableau, non à une cellule.
Ce qui n'est pas très reluisant... mais sinon, là je ne vois pas.
Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 11h23   #7
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Malheureusement, ça obligerait bien les utilisateurs à marquer (à l'aide d'un signet) les tableaux dans lesquels ils insèrent des signets.
En tout cas, je te remercie pour tes réponses, ouskel'n'or.

Si quelqu'un d'autre a une idée, je récapitule en quelques mots le problème :
comment, à partir d'un objet Range contenu dans un tableau, récupérer l'objet Table correspondant ?
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 13h59   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Non, les utilisateurs n'auraient qu'à lancer une macro pour nommer tous les tableaux en fonction de leurs index dans le doc. En outre, tu dois pouvoir récupérer l'index du tableau (il me semble...)
Tu dis si ça t'intéresse
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2006, 23h55   #9
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Je pense avoir trouvé.
Je viens de découvrir l'existence de signets "prédéfinis" dans Word. Parmi eux figure le signet "\Table", qui marque le tableau en cours.
Avec ça, je fais l'économie de la macro que tu me proposais au niveau du document Word.
La deuxième étape (pas la plus évidente !) consiste à renvoyer l'objet Table correspondant à ce "signet de tableau". Pour cela, je récupère d'abord l'objet Range correspondant à mon "signet de tableau", puis je récupère, au sein de la collection Tables de cette plage, l'objet Table d'index 1.
Les 2 étapes se résument ainsi :
Code :
1
2
Set tblMonTableau = rngMaPlage.Bookmarks("\Table").Range.Tables(1)
'rngMaPlage étant un objet Range compris dans un tableau
Je crois que ça devrait faire l'affaire. Mais je trouve que ma solution fait un peu "bricolage", donc si quelqu'un a mieux à me proposer, je suis preneur : ça métonnerait quand même que rien n'existe en VBA Word pour récupérer directement, à partir d'un objet Range contenu dans un tableau, l'objet Table correspondant !
Je marquerai ce week-end le topic comme "Résolu" si personne ne se manifeste d'ici là.

PS : pour ceux que ça pourrait intéresser, l'article de Microsoft relatif aux signets "prédéfinis" :
http://support.microsoft.com/kb/212555/en-us
PPS : encore merci pour ton aide, ouskel'n'or
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 09h48   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ne me remercie pas, ça m'a donné l'occasion de creuser ce problème des tableau dans Word sur lequel je ne m'étais jamais penché Donc, merci à toi
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h22.


 
 
 
 
Partenaires

Hébergement Web