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 28/04/2011, 10h47   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Par défaut Récupérer un tableau (Table) dans une forme (Shape)

Bonjour à tous,
voila mon problème,

mon client (adoré) crée des documents Word 2007.
Dans ces documents, il crée des shape (rectangle à bord arrondi) dans lesquels il met des tableaux

je n'arrive pas à accéder par VBA à ces tableaux,
ces tableaux n'apparaissent pas dans
Code :
Documents(monFichier).Tables
Quelqu'un a t-il une idée de Comment faire ?
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 00h16   #2
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Si tu sais trouver les shapes en question, tu peux arriver au tableau avec
Code :
MyShape.TextFrame.TextRange.Tables(1)
Par exemple, pour scruter les shapes de premier niveau :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub toto()
Dim oShp As Word.Shape, oTbl As Word.Table, iFlag As Boolean
 
For Each oShp In ThisDocument.Shapes
    On Error Resume Next
        Set oTbl = oShp.TextFrame.TextRange.Tables(1)
        iFlag = (Err.Number = 0)
    On Error GoTo 0
        If iFlag Then
            'ici, on a un tableau dans shape
            MsgBox oTbl.Cell(1, 1)
        Else
            'ici on a shape sans Tab
            MsgBox "pas de tableau dans " & oShp.Name & "."
        End If
Next oShp
 
 
Set oTbl = Nothing
Set oShp = Nothing
End Sub
EN espérant que cela t'aide,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h17   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
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 321
Points : 29 220
Points : 29 220
Salut,

Peut-être un peu plus court.

Code :
1
2
3
4
5
6
7
8
Sub TestOli002()
Dim Sh As Shape
 
For Each Sh In ActiveDocument.Shapes
Debug.Print Sh.TextFrame.TextRange.Tables.Count
Next Sh
 
End Sub
__________________
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 14/09/2011, 09h27   #4
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Un grand merci avec énormément de retard (désolé)
merci pour les solutions proposées, elles me conviennent
Australia 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 08h30.


 
 
 
 
Partenaires

Hébergement Web