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 31/05/2007, 16h11   #1
Invité de passage
 
Inscription : mai 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 7
Points : 0
Points : 0
Par défaut Compter les mots d'un document en tenant compte des textboxes

J'ai rédigé une macro pour compter le nombre de mots d'un document word en prenant en compte le texte inclus dans les zones de texte. L'outils "Statistiques" de word ne compte pas les mots à l'intérieur des zones de texte.

Je cherche maintenant un moyen d'ajouter au décompte le nombre de mots à l'intérieur de zones de texte se trouvant elles-mêmes à l'intérieur d'une zone de texte.

Voici le texte de ma macro, peut-être quelqu'un peut m'aider à le compléter pour qu'il prenne en compte ce nombre de mots?

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub Wordcount()
Dim Wordcount As Long
Wordcount = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)
For Each ashape In ActiveDocument.Shapes
    If ashape.TextFrame.HasText Then
        Wordcount = Wordcount + ashape.TextFrame. _
        TextRange.ComputeStatistics(Statistic:=wdStatisticWords)
    End If
Next ashape
MsgBox ("The document has " & Wordcount & " words")
End Sub
Sinon j'essaie de rédiger une macro qui supprime automatiquement toutes les images inclues dans un word. Quelqu'un a une idée?

Merci!
aguirre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 10h47   #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
Bonjour aguirre, bienvenue sur le forum.
Un conseil ? Lis les règles du forum, c'est plein de trucs intéressant qui pourront t'aider dans tes recherches. Par exemple, pour que ton code soit lisible, tu dois le placer entre balises CODE et /CODE. Facile ! En mode édition, tu sélectionnes ton code, tu fais un clic sur l'icône #, et c'est tout. Pour corriger, un clic sur le bouton "Editer" en bas de ton message.
Là, je corrige pour toi, tu sauras faire la prochaine fois
Bon dev
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 11h14   #3
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
C'est bon, testé et tout... mais testé seulement si tu as pris ta zone de texte dans la barre d'outils Dessin
Code :
1
2
3
4
5
6
7
8
'   Pour la longueur du texte
    For Each LeShape In ActiveDocument.Shapes
        Longueur = Longueur + Len(LeShape.TextFrame.TextRange.Text)
    Next
    'pour supprimer les images placées dans un contrôle Image de la barre d'outils formulaire
    For Each LeShape In ActiveDocument.InlineShapes
        LeShape.Delete
    Next
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 11h19   #4
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
pour les images insérées directement dans le doc
Code :
1
2
3
4
5
6
7
8
9
Dim locInlineShape As InlineShape
Dim nType As Integer
 
For Each locInlineShape In ActiveDocument.InlineShapes
    nType = locInlineShape.Type
    If nType = wdInlineShapePicture Or nType = wdInlineShapeEmbeddedOLEObject Then
        locInlineShape.Delete
    End If
Next

et pour les images insérées dans les zones de texte, il faut faire pareil pour chaqu'une de ces zones

Edit:
J'avais pas vu que t'avais déjà répondu ouskel'n'or..
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 11h29   #5
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
Mieux vaut deux réponses que pas du tout épi toi tu as déclaré les variables étou étou...
Pour le type InlineShapes des images dans contrôle image, c'est 17, sinon c'est 3, on peut donc réduire "ton" test à
Code :
1
2
3
4
5
For Each locInlineShape In ActiveDocument.InlineShapes
    If locInlineShape.Type = 17 or locInlineShape.type = 3 Then _
        locInlineShape.Delete
    End If
Next
Je n'étais pas aussi exhaustif
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 16h15   #6
Invité de passage
 
Inscription : mai 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 7
Points : 0
Points : 0
Merci beaucoup à vous deux pour vos réponses si utiles.
Où est-ce que je pourrais trouver un tutorial sur ce type d'objet word (ashape, Leshape etc.)? j'ai cherché un peu sur le site mais je n'ai pas trouvé.

La macro pour supprimer les images marche très bient!

Par contre, pour le comptage de mots dans les zones de texte se trouvant elles-mêmes dans une grande zone de texte, je n'ai pas compris comment faire pour corriger le code que j'avais mis...

Merci encore de votre aide!
aguirre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 13h38   #7
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
Précise déjà où tu prends tes zones de texte
A+

Edit
Pour répondre à ta question que j'avais shuntée
Citation:
Où est-ce que je pourrais trouver un tutorial sur ce type d'objet word
Je ne sais pas s'il y a quelque chose dans le FAQ, où tu peux déjà jeter un oeil, mais dans l'aide à Shape, Shapes, inlineShapes, ainsi qu'à OLEObjects, tu as déjà plein de choses
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 13h39   #8
Invité de passage
 
Inscription : mai 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 7
Points : 0
Points : 0
J'ai mis en pièce jointe deux exemples de ces "zones de texte dans une grande zone de texte".
La macro du décompte de mots indique 0 mots.
Je ne sais pas comment faire pour compter le nombre de mots à l'intérieur de toutes ces zones sans détériorier l'image.

Merci encore de votre aide!
Fichiers attachés
Type de fichier : doc exemple.doc (57,5 Ko, 4 affichages)
aguirre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2007, 21h30   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
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 351
Points : 29 264
Points : 29 264
je ne vais pas te donner de réponse, mais juste poser une question.

Pourquoi n'as tu pas fait un simple tableau ?
__________________
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 06/06/2007, 23h03   #10
Invité de passage
 
Inscription : mai 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 7
Points : 0
Points : 0
Ce n'est pas moi qui ai créé ces tableaux en zone de texte. Ce sont des éléments avec lesquels je suis amené à travailler dans mon activité. Les fichiers me parviennent dans cet état.

Quelqu'un a une idée?
Merci
aguirre49 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 11h15.


 
 
 
 
Partenaires

Hébergement Web