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 06/02/2007, 12h18   #1
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Par défaut [VBA - W] parcourir toutes les zones de texte d'un document

Bonjour à tous,

Je travaille sur un traitement parcourant plusieurs documents word dans lesquels plusieurs zones de texte sont insérées (leur nombre varie suivant les docs).
J'aimerais savoir comment récupérer leur contenu (texte ou image ... etc).

j'ai déjà essayé avec :
For Each obj In ActiveDocument.InlineShapes
For Each obj In ActiveDocument.Shapes

mais ça ne rentre même pas dans la boucle...

Si je sélectionne la zone de texte, j'arrive à récupérer son nom (ou ID) en passant par Selection.ShapeRange.Name (ou .ID)

mais je n'arrive pas à en faire une boucle.. le but étant d'automatiser le traitement ^^

Merci pour aide !!
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 15h14   #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
Tu crées un tableau des noms
Code :
1
2
3
4
5
6
7
8
9
10
Sub Test()
Dim LeTableau()
Dim LeShape As Shape
    For Each LeShape In ActiveDocument.Shapes
         i = i + 1
         Redim Preserve LeTableau(i)
         LeTableau(i) = LeShape.Name
         MsgBox LeShape.Name
    Next
End Sub
A+

Edit
pour utiliser le 2ème objet, par exemple, tu peux simplifier en mettant
Pour écrire
Code :
1
2
3
4
    Set LeTab = ActiveDocument.Shapes(2)
        MsgBox LeTab.Name
        LeTab.Select
        Selection.TypeText Text:="Coucou"
Pour lire
Code :
1
2
3
4
5
    Set LeTab = ActiveDocument.Shapes(1)
        LeTab.Select
        Selection.WholeStory
        LeTexte = Selection
        MsgBox LeTexte
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2007, 09h16   #3
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Merci pour ces indications, mais j'ai oublié de préciser un élément essentiel

les zones de texte se situe dans l'entête et pied de page du document

du coup

Code :
1
2
3
For Each LeShape In ActiveDocument.Shapes
     MsgBox LeShape.Name
Next
ne renvoie rien du tout...

Edit:

il me faut utiliser
Code :
1
2
3
4
5
6
7
8
9
Dim sec As Section
Dim obj As Shape
On Error Resume Next
For Each sec In ActiveDocument.Sections
    For Each obj In sec.Footers(wdHeaderFooterEvenPages).Shapes
        obj.Select
        'traitement voulu ... etc
    Next
Next

Edit 2:

Ok, c'est résolu je pense, vous pouvez classer l'affaire !!
Merci
Speedrman 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 20h54.


 
 
 
 
Partenaires

Hébergement Web