Dans un document word contenant plusieurs tableaux,
y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en
VBA ?
Et quel code peut récupérer cette valeur ?
Si avez une piste, elle serait la bien venue
Merci
--
[Jmm21]
WD2003/XP
"Quand quelqu'un paye un tableau 3.000 francs, c'est qu'il lui plaît. Quand
il le paye 300.000 francs, c'est qu'il plaît aux autres."
[Edgar Degas]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anacoluthe
Bonjour !
'JMM21' nous a écrit ...
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Et quel code peut récupérer cette valeur ?
Les tableaux sont des objets organisés en collections. Il n'y a pas de numéro fixe attribué à un item d'une collection. Un même tableau peut être le 14ème du document Activedocument.Tables(14) le 5ème de la Selection Selection.Tables(5) le deuxième de la 3ème section Activedocument.Sections(3).Range.Tables(2) etc etc...
Anacoluthe « Collectionner, c'est être capable de vivre de son passé. » - Albert CAMUS
Bonjour !
'JMM21' nous a écrit ...
Dans un document word contenant plusieurs tableaux,
y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en
VBA ? Et quel code peut récupérer cette valeur ?
Les tableaux sont des objets organisés en collections.
Il n'y a pas de numéro fixe attribué à un item d'une collection.
Un même tableau peut être le 14ème du document
Activedocument.Tables(14)
le 5ème de la Selection
Selection.Tables(5)
le deuxième de la 3ème section
Activedocument.Sections(3).Range.Tables(2)
etc etc...
Anacoluthe
« Collectionner, c'est être capable de vivre de son passé. »
- Albert CAMUS
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Et quel code peut récupérer cette valeur ?
Les tableaux sont des objets organisés en collections. Il n'y a pas de numéro fixe attribué à un item d'une collection. Un même tableau peut être le 14ème du document Activedocument.Tables(14) le 5ème de la Selection Selection.Tables(5) le deuxième de la 3ème section Activedocument.Sections(3).Range.Tables(2) etc etc...
Anacoluthe « Collectionner, c'est être capable de vivre de son passé. » - Albert CAMUS
Geo
Bonjour à toutes et à tous,
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime des tableaux. Pire que ça, cet index dépend de l'objet auquel on fait référence. Ainsi : Selection.Tables(1) est peut-être le même tableau que ActiveDocument.Tables(25) ou que ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille: Set TableCourante = Selection.Tables(1) ca peut être une solution à votre problème. Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ? Si c'est le tableau où se trouve le point d'insertion et qu'on veut son indice dans le document :
Dim i As Integer Dim Ts As Range Dim Td As Tables Set Ts = Selection.Tables(1).Range Set Td = ActiveDocument.Tables For i = 1 To ActiveDocument.Tables.Count If Ts = Td(i).Range Then MsgBox "Indice = " & i Exit For End If Next
-- A+
Bonjour à toutes et à tous,
Dans un document word contenant plusieurs tableaux,
y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en
VBA ?
Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime
des tableaux.
Pire que ça, cet index dépend de l'objet auquel on fait référence.
Ainsi :
Selection.Tables(1)
est peut-être le même tableau que ActiveDocument.Tables(25) ou que
ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille:
Set TableCourante = Selection.Tables(1)
ca peut être une solution à votre problème.
Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ?
Si c'est le tableau où se trouve le point d'insertion et qu'on veut son
indice dans le document :
Dim i As Integer
Dim Ts As Range
Dim Td As Tables
Set Ts = Selection.Tables(1).Range
Set Td = ActiveDocument.Tables
For i = 1 To ActiveDocument.Tables.Count
If Ts = Td(i).Range Then
MsgBox "Indice = " & i
Exit For
End If
Next
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime des tableaux. Pire que ça, cet index dépend de l'objet auquel on fait référence. Ainsi : Selection.Tables(1) est peut-être le même tableau que ActiveDocument.Tables(25) ou que ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille: Set TableCourante = Selection.Tables(1) ca peut être une solution à votre problème. Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ? Si c'est le tableau où se trouve le point d'insertion et qu'on veut son indice dans le document :
Dim i As Integer Dim Ts As Range Dim Td As Tables Set Ts = Selection.Tables(1).Range Set Td = ActiveDocument.Tables For i = 1 To ActiveDocument.Tables.Count If Ts = Td(i).Range Then MsgBox "Indice = " & i Exit For End If Next
-- A+
Geo
Il n'y a pas de numéro fixe attribué à un item d'une collection. Un même tableau peut être le 14ème du document Activedocument.Tables(14) le 5ème de la Selection Selection.Tables(5) le deuxième de la 3ème section Activedocument.Sections(3).Range.Tables(2) etc etc...
Heureusement qu'on n'a pas pris le même exemple, on aurait pu croire que j'ai copié sur toi :-)
Je ne suis pas très satisfait de la solution pour trouver l'indice du tableau courant, il n'y a pas mieux ?
-- A+
Il n'y a pas de numéro fixe attribué à un item d'une collection.
Un même tableau peut être le 14ème du document
Activedocument.Tables(14)
le 5ème de la Selection
Selection.Tables(5)
le deuxième de la 3ème section
Activedocument.Sections(3).Range.Tables(2)
etc etc...
Heureusement qu'on n'a pas pris le même exemple, on aurait pu croire
que j'ai copié sur toi :-)
Je ne suis pas très satisfait de la solution pour trouver l'indice du
tableau courant, il n'y a pas mieux ?
Il n'y a pas de numéro fixe attribué à un item d'une collection. Un même tableau peut être le 14ème du document Activedocument.Tables(14) le 5ème de la Selection Selection.Tables(5) le deuxième de la 3ème section Activedocument.Sections(3).Range.Tables(2) etc etc...
Heureusement qu'on n'a pas pris le même exemple, on aurait pu croire que j'ai copié sur toi :-)
Je ne suis pas très satisfait de la solution pour trouver l'indice du tableau courant, il n'y a pas mieux ?
-- A+
JMM21
Bonjour à toutes et à tous,
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime des tableaux. Pire que ça, cet index dépend de l'objet auquel on fait référence. Ainsi : Selection.Tables(1) est peut-être le même tableau que ActiveDocument.Tables(25) ou que ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille: Set TableCourante = Selection.Tables(1) ca peut être une solution à votre problème. Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ? Si c'est le tableau où se trouve le point d'insertion et qu'on veut son indice dans le document :
Dim i As Integer Dim Ts As Range Dim Td As Tables Set Ts = Selection.Tables(1).Range Set Td = ActiveDocument.Tables For i = 1 To ActiveDocument.Tables.Count If Ts = Td(i).Range Then MsgBox "Indice = " & i Exit For End If Next
-- A+
merci pour votre rapidité
Je creuse le sujet...
A+
Bonjour à toutes et à tous,
Dans un document word contenant plusieurs tableaux,
y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en
VBA ?
Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime
des tableaux.
Pire que ça, cet index dépend de l'objet auquel on fait référence.
Ainsi :
Selection.Tables(1)
est peut-être le même tableau que ActiveDocument.Tables(25) ou que
ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille:
Set TableCourante = Selection.Tables(1)
ca peut être une solution à votre problème.
Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ?
Si c'est le tableau où se trouve le point d'insertion et qu'on veut son
indice dans le document :
Dim i As Integer
Dim Ts As Range
Dim Td As Tables
Set Ts = Selection.Tables(1).Range
Set Td = ActiveDocument.Tables
For i = 1 To ActiveDocument.Tables.Count
If Ts = Td(i).Range Then
MsgBox "Indice = " & i
Exit For
End If
Next
Dans un document word contenant plusieurs tableaux, y-a-t-il un numéro attribué à chacun des tableaux qui soit récupérable en VBA ? Oui, ils sont indexés en séquence : Tables(1), Tables(2) etc.
La difficulté c'est que ce numéro évolue quand on ajoute ou supprime des tableaux. Pire que ça, cet index dépend de l'objet auquel on fait référence. Ainsi : Selection.Tables(1) est peut-être le même tableau que ActiveDocument.Tables(25) ou que ActiveDocument.Section(3).Tables(4)
On peut évidemment mémoriser sur quelle tableau on travaille: Set TableCourante = Selection.Tables(1) ca peut être une solution à votre problème. Mais l'idéal est de donner un nom à chaque tableau.
Et quel code peut récupérer cette valeur ?
Quel tableau ? Indice par rapport à quoi ? Si c'est le tableau où se trouve le point d'insertion et qu'on veut son indice dans le document :
Dim i As Integer Dim Ts As Range Dim Td As Tables Set Ts = Selection.Tables(1).Range Set Td = ActiveDocument.Tables For i = 1 To ActiveDocument.Tables.Count If Ts = Td(i).Range Then MsgBox "Indice = " & i Exit For End If Next
-- A+
merci pour votre rapidité
Je creuse le sujet...
A+
Anacoluthe
Bonjour !
'Geo' nous a écrit ...
Je ne suis pas très satisfait de la solution pour trouver l'indice du tableau courant, il n'y a pas mieux ?
Ben tu peux aussi utiliser la technique classique du 'décompte depuis le début' valable pour tout item de toute collection. Ça donne un truc comme ça en ajoutant un collapse de sécurité (pour éviter une grosse sélection de plusieurs tableaux d'un coup) et un test pour traiter le cas où on n'est pas dans un tableau :
Public Sub QuelTableau() Selection.Collapse If Selection.Information(wdWithInTable) Then i = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count MsgBox "Nous somme dans le tableau n° " & i Else MsgBox "Nous ne sommes pas dans un tableau" End If End Sub
Reste un problème spécifique des tableaux : ta méthode comme la mienne ne traitent pas le cas de tableaux imbriqués dans des tableaux. Un tableau imbriqué dans une cellule ne fait pas partie de la collection des tableaux du document ! Donc si on veut référencer précisément un tableau imbriqué, faut s'y prendre encore autrement... ;-) pfff
Anacoluthe « Il faudrait pouvoir montrer les tableaux qui sont sous le tableau. » - Pablo PICASSO
Bonjour !
'Geo' nous a écrit ...
Je ne suis pas très satisfait de la solution pour trouver l'indice du
tableau courant, il n'y a pas mieux ?
Ben tu peux aussi utiliser la technique classique du 'décompte depuis le début'
valable pour tout item de toute collection. Ça donne un truc comme ça
en ajoutant un collapse de sécurité (pour éviter une grosse sélection de
plusieurs tableaux d'un coup) et un test pour traiter le cas où on n'est
pas dans un tableau :
Public Sub QuelTableau()
Selection.Collapse
If Selection.Information(wdWithInTable) Then
i = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
MsgBox "Nous somme dans le tableau n° " & i
Else
MsgBox "Nous ne sommes pas dans un tableau"
End If
End Sub
Reste un problème spécifique des tableaux : ta méthode comme la mienne
ne traitent pas le cas de tableaux imbriqués dans des tableaux. Un
tableau imbriqué dans une cellule ne fait pas partie de la collection
des tableaux du document ! Donc si on veut référencer précisément
un tableau imbriqué, faut s'y prendre encore autrement... ;-) pfff
Anacoluthe
« Il faudrait pouvoir montrer les tableaux qui sont sous le tableau. »
- Pablo PICASSO
Je ne suis pas très satisfait de la solution pour trouver l'indice du tableau courant, il n'y a pas mieux ?
Ben tu peux aussi utiliser la technique classique du 'décompte depuis le début' valable pour tout item de toute collection. Ça donne un truc comme ça en ajoutant un collapse de sécurité (pour éviter une grosse sélection de plusieurs tableaux d'un coup) et un test pour traiter le cas où on n'est pas dans un tableau :
Public Sub QuelTableau() Selection.Collapse If Selection.Information(wdWithInTable) Then i = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count MsgBox "Nous somme dans le tableau n° " & i Else MsgBox "Nous ne sommes pas dans un tableau" End If End Sub
Reste un problème spécifique des tableaux : ta méthode comme la mienne ne traitent pas le cas de tableaux imbriqués dans des tableaux. Un tableau imbriqué dans une cellule ne fait pas partie de la collection des tableaux du document ! Donc si on veut référencer précisément un tableau imbriqué, faut s'y prendre encore autrement... ;-) pfff
Anacoluthe « Il faudrait pouvoir montrer les tableaux qui sont sous le tableau. » - Pablo PICASSO
Geo
i = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
Superbe !
« Il faudrait pouvoir montrer les tableaux qui sont sous le tableau. » - Pablo PICASSO
Il connaissait déjà les tableaux imbriqués dans Word !
-- A+
i = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
Superbe !
« Il faudrait pouvoir montrer les tableaux qui sont sous le tableau. »
- Pablo PICASSO
Il connaissait déjà les tableaux imbriqués dans Word !