formateur informatique

Statistiques sur les textes sélectionnés en VBA Word

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Statistiques sur les textes sélectionnés en VBA Word
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
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.

Compter les mots, phrases et paragraphes dans une sélection Word

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,
Compter le nombre de mots, de paragraphes et de phrases dans une sélection en VBA Word

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.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn