Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Statistiques sur un document Word
Avec cette nouvelle
astuce VBA Word , nous proposons de découvrir comment il est possible d'offrir des
statistiques sur le texte sélectionné par l'utilisateur.
Dans l'exemple illustré par la capture, une boîte de dialogue offre un résumé. Sont comptabilisés les mots inclus dans la sélection mais aussi les caractères, les phrases ou encore les paragraphes. Ces données sont intéressantes quand des restrictions sont émises sur la longueur de certaines rédactions, quel que soit le type de document. Il s'agit aussi d'une méthode efficace pour connaître rapidement la qualité et la clarté d'une présentation. Les phrases courtes sont préconisées. Moins le ratio qui est fourni en dernière position est faible, plus les phrases sont nombreuses. Enfin, vous notez qu'une indication est également fournie sur le premier et le dernier mot de la sélection.
Document source
Pour la mise en place de cette
astuce , vous pouvez opérer à partir de n'importe quel document mais vous pouvez aussi récupérer la source offerte au téléchargement.
Nous découvrons un texte relativement simple qui a été
inséré automatiquement dans le document grâce à la fonction Rand .
Procédure dans le modèle
Comme cet outil peut s'avérer précieux pour toute utilisation, nous suggérons de le créer dans le
modèle Word .
Nous pourrons donc l'attacher à un
bouton de macro depuis l'un des rubans et il sera ainsi disponible pour toutes les utilisations de
Word .
Réaliser le raccourci Alt + F11 pour basculer dans l'éditeur VBA Word ,
Dans l'explorateur de projet sur la gauche de l'écran, cliquer sur l'élément Normal ,
Il s'agit du
modèle de Word et ainsi nous le sélectionnons dans le but de l'enrichir.
En haut de la fenêtre, cliquer sur le menu Insertion puis choisir Module ,
Un nouvel élément apparaît effectivement dans le
dossier Modules du
projet normal . S'il n'est pas actif, vous devez cliquer dessus pour le sélectionner.
Dans la fenêtre Propriétés , le renommer Statistiques ,
Si elle n'est pas visible dans votre environnement, vous devez cliquer sur le
menu Affichage et choisir l'option
Fenêtre Propriétés .
Dans la feuille de code au centre de l'écran, créer la procédure CompterSelection :
Sub CompterSelection()
End Sub
La déclaration des variables
Maintenant, nous avons besoin de
variables notamment pour stocker les statistiques que le
code VBA Word est capable de nous fournir sur la sélection engagée.
Sub CompterSelection()
Dim retour As String
Dim premMot As String, derMot As String
Dim nbCar As Integer, nbParag As Integer
Dim nbMots As Integer, nbPhrases As Integer
Dim boite As Byte, pourcent As Double
End Sub
La
variable retour doit servir à afficher les informations de synthèse concaténées. C'est la raison pour laquelle nous la typons comme un texte (String). Les
variables premMot et derMot sont elles aussi typées comme des textes pour pouvoir restituer respectivement le
premier et le dernier mot de la sélection. Les
quatre variables qui suivent sont typées comme des entiers pour réceptionner les décomptes respectifs comme sur le
nombre de paragraphes ou le
nombre de mots . La
variable boite est typée comme un
entier court pour récupérer la valeur numérique de retour de la boîte de dialogue que nous afficherons. Enfin, la
variable pourcent est naturellement déclarée comme un
réel double précision . C'est elle qui doit calculer le
ratio entre le
nombre de phrases et le
nombre de mots pour donner une indication sur la
clarté de la rédaction .
Les statistiques sur la sélection
Maintenant, pour obtenir ces
statistiques par le
code VBA , nous allons le voir, c'est naturellement l'
objet Selection qui est à l'honneur. Il offre des propriétés et attributs dérivés fort riches. Et comme nous devons l'employer à plusieurs reprises, nous suggérons d'
optimiser le code avec un
bloc With . C'est ainsi que nous allons pouvoir regrouper les appels, comme nous l'avons appris.
A la suite du code VBA , construire le bloc With suivant :
Sub CompterSelection()
Dim retour As String
Dim premMot As String, derMot As String
Dim nbCar As Integer, nbParag As Integer
Dim nbMots As Integer, nbPhrases As Integer
Dim boite As Byte, pourcent As Double
With Selection
nbMots = .Words.Count
premMot = .Words.First
derMot = .Words.Last
nbCar = .Characters.Count
nbParag = .Paragraphs.Count
nbPhrases = .Sentences.Count
End With
End Sub
Tout d'abord, l'
objet Selection offre la
propriété Words . C'est un peu le même schéma que les attributs de Police. Une fois la propriété Font atteinte, faut-il encore préciser quel est précisément l'attribut de police à récolter ou à régler. Ici c'est le même principe. C'est pourquoi nous utilisons la
propriété dérivée Count pour retourner le
nombre de mots et les
attributs First et Last pour renseigner sur le
premier et le dernier mot .
De la même façon, nous exploitons les
propriétés Characters ,
Paragraphs et
Sentences avec la
propriété dérivée Count de nouveau pour renseigner respectivement sur le
nombre de caractères , le
nombre de paragraphes et le
nombre de phrases .
Le pourcentage sur le nombre de phrases
Puisque le nombre de phrases et le nombre de mots sont désormais connus, nous sommes en mesure de
calculer le ratio à stocker dans la
variable pourcent .
A la suite du code VBA , ajouter l'instruction suivante :
Sub CompterSelection()
Dim retour As String
Dim premMot As String, derMot As String
Dim nbCar As Integer, nbParag As Integer
Dim nbMots As Integer, nbPhrases As Integer
Dim boite As Byte, pourcent As Double
With Selection
nbMots = .Words.Count
premMot = .Words.First
derMot = .Words.Last
nbCar = .Characters.Count
nbParag = .Paragraphs.Count
nbPhrases = .Sentences.Count
End With
pourcent = Round((nbPhrases / nbMots) * 100,2)
End Sub
Nous divisons donc le
nombre de phrases par le
nombre de mots . Pour afficher ce résultat en pourcentage, nous multiplions ce score par cent. Et pour supprimer les décimales superflues, nous exploitons la
fonction VBA Round avec laquelle nous décidons de ne conserver que deux chiffres après la virgule, grâce à son second paramètre. Ce nombre réel est naturellement stocké dans la
variable pourcent .
L'assemblage des informations de synthèse
Il est temps donc d'assembler ces données avec des explications textuelles avant de les restituer à l'écran pour fournir la synthèse à l'utilisateur.
A la suite du code VBA , ajouter la construction suivante :
Sub CompterSelection()
Dim retour As String
Dim premMot As String, derMot As String
Dim nbCar As Integer, nbParag As Integer
Dim nbMots As Integer, nbPhrases As Integer
Dim boite As Byte, pourcent As Double
With Selection
nbMots = .Words.Count
premMot = .Words.First
derMot = .Words.Last
nbCar = .Characters.Count
nbParag = .Paragraphs.Count
nbPhrases = .Sentences.Count
End With
pourcent = Round((nbPhrases / nbMots) * 100, 2)
retour = "Vous avez sélectionné " & nbMots & " mots." & vbCr
retour = retour & "Le premier mot est : " & premMot & vbCr
retour = retour & "Le dernier mot est : " & derMot & vbCr & vbCr
retour = retour & "La sélection est composée de : " & vbCr
retour = retour & "- " & nbCar & " caractères" & vbCr
retour = retour & "- " & nbPhrases & " phrases" & vbCr
retour = retour & "- " & nbParag & "paragraphes" & vbCr
retour = retour & "- " & pourcent & " %phrases/Mots" & vbCr
End Sub
C'est naturellement le
caractère de concaténation (&) qui permet d'assembler ces informations bout à bout pour livrer la synthèse globale dans un même bloc. Notez l'emploi de la
constante vbCr qui est l'équivalent de la
fonction VBA Chr avec la
valeur 13 en paramètre pour réaliser un
retour chariot , donc pour repousser la suite des informations sur la
ligne du dessous .
La restitution des statistiques à l'écran
Il ne nous reste plus qu'à afficher ces statistiques à l'écran par le biais de la
fonction VBA MsgBox .
Pour terminer, Ã la fin du code VBA , ajouter l'instruction suivante :
Sub CompterSelection()
Dim retour As String
Dim premMot As String, derMot As String
Dim nbCar As Integer, nbParag As Integer
Dim nbMots As Integer, nbPhrases As Integer
Dim boite As Byte, pourcent As Double
With Selection
nbMots = .Words.Count
premMot = .Words.First
derMot = .Words.Last
nbCar = .Characters.Count
nbParag = .Paragraphs.Count
nbPhrases = .Sentences.Count
End With
pourcent = Round((nbPhrases / nbMots) * 100, 2)
retour = "Vous avez sélectionné " & nbMots & "mots." & vbCr
retour = retour & "Le premier mot est : " & premMot & vbCr
retour = retour & "Le dernier mot est : " & derMot & vbCr & vbCr
retour = retour & "La sélection est composée de : " & vbCr
retour = retour & "- " & nbCar & " caractères" & vbCr
retour = retour & "- " & nbPhrases & " phrases"& vbCr
retour = retour & "- " & nbParag & "paragraphes" & vbCr
retour = retour & "- " & pourcent & " %phrases/Mots" & vbCr
boite = MsgBox(retour, vbOKOnly + vbInformation, "Informations")
End Sub
Nous affichons la synthèse construite en premier argument. Nous personnalisons la
boîte de dialogue avec le bouton Ok et l'icône d'information et nous l'affublons d'un titre. Puis, nous stockons la valeur de retour dans la variable boite même si nous ne l'exploitons pas. Toute fonction retourne en effet une valeur.
Enregistrer les modifications (CTRL + S) et basculer sur le document Word ,
Sélectionner une portion de texte constituée de plusieurs paragraphes ,
Il est préférable de ne pas inclure la ponctuation de fin comme le point (.). Celui-ci est effectivement considéré comme un mot dans cette situation. Vous pouvez utiliser la
touche MAJ pour réaliser des sélections précises .
Revenir dans l'éditeur VBA Word ,
Puis, enfoncer la touche F5 du clavier pour exécuter le code ,
Comme vous pouvez l'apprécier, les
statistiques s'affichent à l'écran. Elles renseignement efficacement sur le contenu sélectionné. Bien sûr, il serait opportun d'associer cette procédure à un
bouton de macro à placer dans l'un des
rubans . Ce sont des techniques que nous connaissons bien désormais, donc nous n'insistons pas sur ce point.