Aide Excel
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Aide Excel

Forum d'aide et d'entraide sur Excel : cours, astuces, tutoriaux...
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Google Pixel 7 5G – Smartphone 6,3″ OLED FHD+ 8 Go + 128 Go
316 €
Voir le deal

 

 Créer un compteur de caractères

Aller en bas 
AuteurMessage
KiWin
Administrateur
KiWin


Nombre de messages : 155
Localisation : Isère - France
Date d'inscription : 16/08/2005

Créer un compteur de caractères Empty
MessageSujet: Créer un compteur de caractères   Créer un compteur de caractères EmptySam 3 Sep à 19:40

Créer un compteur de caractères


Auteur(s) : KiWin
Première publication le : 03/09/05
Dernière modification le : 03/09/05
Fichier associé : compteur2caracteres.zip
Testé et réalisé sous Excel 2002



Elements abordés : TextBox / Label / Width / Height / Top / Left /
BackColor / ForeColor / Value / Change / If / Len / RGB / IsNumeric



Dans ce tutorial nous allons voir qu'il est possible de définir le contenu et l'aspect d'un contrôle par rapport à un autre contrôle. Nous allons pour cela créer un compteur de caractères, c'est à dire compter le nombre de caractères entrés dans une zone de texte.

C'est utile par exemple lorsque pour remplir un formulaire vous êtes limités à certain nombre de caractères mais que le formulaire ne vous indique pas combien de caractères vous avez tapé avant la limite. C'est aussi le cas par exemple sur certains forums, où le message que vous envoyez ne doit pas dépasser un nombre défini de caractères.

Pour réaliser ce compteur, nous allons avoir besoin de trois zones de texte. Les zones de textes sont des contrôles dans lesquels ont peut taper des textes plus ou moins longs. Après avoir mis en place ces zones de texte, nous leurs affecterons des macros afin d'automatiser le comptage.


1) Mise en place des contrôles

La première zone de texte, la plus grande, va nous servir à entrer le texte à compter, la seconde vous nous permettre d'indiquer le nombre de caractères autorisés, et la troisième nous donnera le nombre de caractères tapés dans la première.

Nous allons placer nos zones de texte sur une feuille. Avant de faire cela il faut que la Boîte à outils Contrôles soit affichée. Si ce n'est pas le cas sélectionnez-la dans le menu Affichage > Barre d'outils.

Créer un compteur de caractères Boite_outils_controles


Pour placer une zone de texte, il faut cliquer sur le bouton Créer un compteur de caractères 016_05 . Vous allez tracer trois rectangles de façon à obtenir un résultat similaire à la capture ci-dessous (1).

Ensuite vous cliquez sur le bouton Créer un compteur de caractères 016_13 afin de placer deux étiquettes rappelant le rôle des deux petites zones de texte à gauche de chacune de celles-ci, comme ci-dessous (2).

Créer un compteur de caractères Compteur_zones_texte_pt
(cliquez sur ici pour afficher la capture en taille réelle)



2) Modification des propriétés des contrôles

A savoir : avant toute modification des contrôles, il vaut activer le mode création en cliquant sur le bouton Créer un compteur de caractères 016_01

Nous allons personnaliser nos contrôles en modifiant leurs propriétés. Il faut pour cela cliquer sur le bouton Créer un compteur de caractères 016_02 après avoir sélectionné le contrôle à modifier. La fenêtre des propriétés du contrôle va s'affiche :

Créer un compteur de caractères Proprietes_ctrl



Dans la colonne de gauche se trouve les noms des propriétés, et dans la colonne de droite leurs valeurs.

Les contrôles disposent tous des propriétés Width, Height, Top et Left qui sont respectivement la largeur, la hauteur, la distance horizontale en pixels entre le bord supérieur de la feuille, et le coin supérieur gauche du contrôle, et la distance verticale en pixels entre le bord gauche de la feuille, et le coin supérieur gauche du contrôle.

Vous pouvez modifier la valeur de ces propriétés afin d'affiner les dimensions et le positionnement de vos contrôles.


- Pour l'étiquette la plus à gauche, nous allons modifier le texte qu'elle affiche : en face de la propriété Caption, à la place de "Label1" on tape "Limite :".

- Pour l'étiquette la plus à droite, même opération, à la place de "Label2", on tape : "Total :".

- Pour les deux étiquettes, si vous le souhaitez vous pouvez modifier leur couleur de fond, propriété BackColor, et le style (police, gras, taille) et la couleur du texte qu'elles contiennent, propriétés Font et ForeColor. Lorsque vous cliquez sur la valeur de ces propriétés, un bouton fléché s'affiche sur la droite, sur lequel vous devez cliquer afin de définir votre choix :

Créer un compteur de caractères Color Créer un compteur de caractères Font


Je vous suggère de mettre la police en gras et souligné mais vous pouvez bien sur faire à votre convenance.

Vous pouvez maintenant refermer la fenêtre des propriétés.


3) Automatisation et mise à jour automatique des zones de texte

Nous allons taper quelques lignes de code afin de rendre nos zones de texte interactives. Le but recherché c'est que lorsque du texte est tapé dans la grande zone de texte, la petite en bas à droite indique le nombre de caractères tapés, et que son contenu passe en rouge lorsque la limite est atteinte.

Double-cliquez sur la plus grande zone de texte, vous arriver alors directement dans l'éditeur Visual Basic. Si rien ne se passe, cliquez sur le bouton Mode création de la Boîte à outils Contrôles.

Vous constaterez que deux lignes sont déjà écrites :

Code:
Private Sub TextBox1_Change()

End Sub

Cela signifie que cette macro va être exécutée à chaque fois que le contenu de notre zone de texte, appelée TextBox1, va changer, il s'agit alors de l'événement Change. C'est exactement c'est qu'il nous faut.
Vous remarquerez que notre grande zone de texte s'appelle TextBox1. Cela signifie donc que notre seconde zone de texte, la petite à gauche, s'appelle TextBox2, et celle de gauche s'appelle TextBox3. Cela va nous être pour pouvoir interagir avec leur contenu.

La première chose qu'il nous importe de savoir, c'est le nombre de caractères que contient cette grande zone de texte. Le texte contenu dans celle-ci se trouve dans sa propriété Value. Nous allons donc créer une variable qui va contenir le nombre de caractères du texte qu'elle contient :

Code:
Dim Total As Integer
Total = Len(TextBox1.Value)

La fonction Len compte le nombre de caractères d'une chaîne de texte, on lui donne donc à compter le contenu de notre zone de texte (TextBox1.Value).

Comme on veut que ce nombre de caractères soit affiché dans notre petite zone de texte en bas à droite, on va définit le contenu de celle-ci à l'aide de la valeur Total :

Code:
TextBox3.Value = Total

Pour finir, il nous reste à comparer le nombre contenu dans cette dernière (TextBox3), au nombre contenu dans notre zone de texte de gauche (TextBox2), et si le nombre dans TextBox3 est plus élevé que celui dans TextBox2, le nombre dans TextBox3 doit devenir rouge.

Nous allons pour cela définir une condition :

Code:
If TextBox3.Value > TextBox2.Value Then

End If

If indique que le code contenu jusqu'a End If ne sera exécuté que si une condition est remplie, à savoir si Total > TextBox2.Value c'est à dire uniquement si le total est supérieur à la valeur de TextBox2.

Comme c'est à cette condition que le texte de TextBox3 doit devenir rouge. Rappelez-vous que tout à l'heure pour modifier la couleur du texte de nos étiquettes ("Limite" et "Total"), nous avons utilisé la propriété ForeColor. C'est donc la propriété ForeColor de TextBox3 qu'il faut changer :

Code:
If Total > TextBox2.Value Then
   TextBox3.ForeColor = RGB(255, 0, 0)
End If

RGB est une fonction qui définit une couleur selon ses trois composantes rouge / vert / bleu (RVB en français). Ici on indique qu'on ne veut que du rouge.

Il faut maintenant penser que si la valeur de TextBox3 repasse en dessous de la valeur de TextBox2, le texte de TextBox3 ne va pas redevenir noir tout seul. Il faut donc ajouter une nouvelle condition, si TextBox3 <= TextBox2, qui va venir s'ajouter comme alternative possible à notre première condition :

Code:
If Total > TextBox2.Value Then
    TextBox3.ForeColor = RGB(255, 0, 0)
ElseIf TextBox3.Value <= TextBox2.Value Then
    TextBox3.ForeColor = RGB(255, 255, 255)
End If

Voilà pour l'essentiel. Vous pouvez dors et déjà tester votre code, en le sauvegardant puis en fermant l'éditeur Visual Basic, sans oublier de cliquer sur le bouton Mode Création pour le désactiver.

Tapez une limite de caractères dans votre zone de texte de gauche (TextBox2), par exemple 20, puis tapez du texte dans la grande zone de texte, vous constaterez que TextBox3 augmente au fur et à mesure et lorsque qu'elle atteint le nombre 20 son texte devient rouge.

Pour faire du bon code, il faut toujours imaginer ce que pourrait faire celui qui s'en sert pour provoquer une erreur. Qu'est-ce qui se passerait si dans TextBox2 on entrait du texte à la place d'un nombre. Cela afficherait une erreur car notre code va essayer de comparer le texte de TxtBox3 au nombre de TxtBox3.
Il faut donc s'assurer que lorsque le contenu de TxtBox2 change, il soit bien un nombre. On réactive donc le Mode Création et l'on double-clique sur TxtBox2 pour arriver dans l'éditeur Visual Basic, dans lequel nous allons taper :

Code:
Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) = False Then
    TextBox2.Value = ""
End If
End Sub

IsNumeric est une fonction qui vérifie si la valeur indiquée entre parenthèses est un nombre, ici la valeur de TxtBox2, et si c'est faux (= False), la valeur de TextBox2 est supprimée.

Voilà votre compteur de caractères est terminé et opérationnel.
Revenir en haut Aller en bas
https://aide-excel.forumactif.com
KiWin
Administrateur
KiWin


Nombre de messages : 155
Localisation : Isère - France
Date d'inscription : 16/08/2005

Créer un compteur de caractères Empty
MessageSujet: Re: Créer un compteur de caractères   Créer un compteur de caractères EmptySam 3 Sep à 19:58

J'oubliait : le code complet. Smile

Code:
Private Sub TextBox1_Change()

Dim Total As Integer
Total = Len(TextBox1.Value)
TextBox3.Value = Total

If Total > TextBox2.Value Then
    TextBox3.ForeColor = RGB(255, 0, 0)
ElseIf TextBox3.Value <= TextBox2.Value Then
    TextBox3.ForeColor = RGB(0, 0, 0)
End If

End Sub


Private Sub TextBox2_Change()
If IsNumeric(TextBox2.Value) = False Then
    TextBox2.Value = ""
End If
End Sub
Revenir en haut Aller en bas
https://aide-excel.forumactif.com
 
Créer un compteur de caractères
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Creer un tableau

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Aide Excel :: Entraide & apprentissage :: Tutoriaux-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser