Comment calculer en VBA en créant une calculette

8
14829

Dans ce tutoriel Excel nous allons voir comment calculer en VBA tout en créant une calculatrice.
ce qui peut nous servir plus tard dans nos template ou pourquoi pas crée notre propre calculatrice personnalisé

1. Création du userform (formulaire)

la création du formulaire se fait dans l’onglet développeur il faut ouvrir la page VBA (VIsual Basic)

sur cette page nous allons cliquer sur l’icone Ajouter Userform

voila nous avons notre formulaire vide.
Nous allons bien sûre renommé notre formulaire ma calculette. Pour cela nous allons dans propriété.

et dans Caption on change UserForm1 en ma calculette.

2. Création des boutons

voila désormais il est temps d’ajouter nos touche qui permettront d’afficher les chiffres dans la zone prévue

donc nous allons choisir dans la boite à outil un bouton.

et lui donner une bonne taille pour notre besoin. ici je vais vous indiquer les dimension que j’ai utiliser dans la vidéo pour les chiffre et symbole de calcule :

Hauteur : 42
Largeur :  60

le bouton 0 : 

Hauteur : 42
Largeur : 132

et pour le CE (tous effacer) et la touche retour : 

Hauteur : 42
Largeur : 96

il ne reste plus qu’a changer les textes des boutons en changeant le nom dans caption pour chaque bouton.
pour agrandir la taille du texte.
Sélectionner tous les boutons et dans les propriété dans fond. ici nous allons pouvoir changer la taille et le mettre en gras.

3. Ajouter les textboxes pour afficher les entrées calculé

Afin d’afficher les touche appuyer il nous faudra 2 Textbox.
Le premier qui affiche les touches appuyer et le résultat des calcule, et un autre qui montre se que nous avons en mémoire.

les deux textbox ont une taille de  270 de large et 45 de haut.
Bien sûr pour le moment nos textbox ne ressemble pas trop à une calculatrice.

dans les propriétés chercher Specialeffect et sélectionner 0-fmSpecialeefectFlat. voila ça ressemble un peux plus a une calculatrice.
sauf que pour l’instant les utilisateurs savent modifier les données du Textbox et ça nous ne voulons pas.
L’objectif c’est qu’il affiche uniquement les touches que nous allons appuyer.

à nouveau dans les propriétés chercher Enable et sélectionner False.

une dernière chose de base tous se qui s’affiche dans une zone de Textboxe se trouve à la gauche mais nous voulons qu’il s’affiche à la droite.
dan les propriétés chercher Textalign et sélectionner 3-fmTextAlignRight

désormais nous pouvons ajusté notre formulaire à la taille voulu et changer la couleurs de fond dans les propriétés Backcolor.

4. Afficher les touche appuyer dans la zone de texte.

la notre objectif est que quand nous appuyons sur la touche 1 qu’il s’affiche dans la zone de texte 1.
pour cela nous allons faire une double clic sur la touche 1 de notre calculette.

puis en placent le code suivant nous allons afficher le chiffre 1 dans notre textbox1

Privat Sub CommandButton1_Click()
me.TextBox1 = me.CommandButton1.Caption
End Sub

aller y tester le !

par contre il y a une petit problème ici c’est que si nous voulons afficher 11 ben ça ne marche pas, donc nous allons devoir ajouter le code suivant.

Privat Sub CommandButton1_Click()
me.TextBox1 = Me.Textbox1 + me.CommandButton1.Caption
End Sub

avent de continuer nous allons éviter une petite erreur d’affichage.
je m’explique si dans notre zone de Text il y a que le chiffre 0 et ben nous voulons qu’il effacer et place le chiffre 1 à la place et non 01.

et ça nous pouvons le faire avec le code suivant

Privat Sub CommandButton1_Click()
If me.Textbox1 = 0 Then
me.TextBox1 = me.CommandButton1.Caption
Else
me.TextBox1 = Me.Textbox1 + me.CommandButton1.Caption
End If
End Sub

Il ne reste plus que recopier ce code et le coller dans tous les bouton de calcule (chiffre 1-9).
Il ne faut pas oublier de changer le nr du TextBox

contrôler que tous fonctionner

5. Personnalisé la touche 0

pour la touche 0 nous allons utiliser le code suivant :

Privte Sub CommandButton16_Click()
me.TextBox1 = me.Textbox1 + me.CommandButton16.Caption
End Sub

6. Limité le nombre d’entrée possible a 10

Ici nous allons limité le nombre de chiffre afficher possible et donner un message d’erreur si c’est le cas. et effacer le dernier chiffre ajouter.

Private Sub Textbox1_Change()
If textbox1.TextLength > 10 Then
MsgBox « Le nombre de chiffre est trop long »
Textbox1 Left(textbox1, 10)
End If
End Sub

7. Configuré les touches de calcule

désormais nous allons configuré nos touches de calcule et pour cela nous allons commencer par la touche divisé (/).
par contre ici nous allons faire un contrôle avant de commencer car il faut savoir que si nous divisons un chiffre par 0 et ben ce n’est pas possible, et Excel risque de faire des drôle de truc. c’est pourquoi nous allons limité cela avec le code suivant.

Private Sub CommandButton13_Click()
If
 TextBox1 <>0 Then

TextBox2=TextBox1
TextBox1 = 0
memoire= « C1 »
End If
End Sub

comme on peut le voir dans la formule nous avons ajouter memoire = « C1 ».
ceci est un peux spécial nous allons dire à Excel de garder le code C1 en mémoire que nous allons utiliser plus tard afin de calculer quand nous allons appuyer sur la touche =

pour les autres touche de calcule nous allons ajouter le code suivant en changeant le code à mettre en mémoire pour chaque touche.
dans mon exemple j’ai pris le code suivant en mémoire :

/ = C1
X = C2
– = C3
+ = C4

le code est :

Private Sub CommandButton12_Click()
me.TextBox2 = me.TextBox1
me.TextBox1 = 0
memoire = « C2 » ‘—> ici nous somme en train de travailler sur la touche X
End Sub

8. Configuré la touche effacer tous

cette touche est trés facile à faire il suffit de placer le code suivant.

Private Sub CommandButton17_Click()
me.TextBox2 = Empty
me.TextBox1 = 0
End Sub

9. Configuré la touche retour

la touche retour c’est plus au moins que la même chose que le contrôle de 10 chiffre avec le code suivant.

Private Sub CommandButton18_Click()
If me.TextBox1 <>0 Or me.TextBox1 <> » » Then
me.Textbox1 = left(me.TextBox1, len(me.TextBox1)-1)
End If
End Sub

10. Configuré la touche .

Private Sub CommandButton15_Click()
me.TextBox1 = me.CommandButton15.Caption
End Sub

11. Commencer à Calculé

Ha enfin nous allons pouvoir calculé le tous et afficher les résultat dans nos Textbox.
mais avant de faire ça nous allons devoir dire à Excel de garder en mémoire les code que nous voulons au moment de cliquer sur les symbole de calcule.

pour cela nous allons dans général et créons la variable suivante :

Public memoire As string

désormais nous allons pouvoir sauvegarder un code dans memoire et en faire appel au moment que nous le voulons.

c’est a dire que si je mentionne memoire = 5 alors il garde le 5 dans cette variable memoire.

Exemple 1 :
si dans une formule j’indique textbox1 = memoire alors dans ce textbox le chiffre 5 apparaît.

Exemple 2:
si je fait un calcule comme suite 3 + memoire alors le résultat et 8 car Excel sais qu’il doit faire 3 + 5

alé c’est parti pour le code sur la touche =

Private Sub CommandButton14_Click()
On Error Resume Next ‘–> ici nous indiquons que s’il y a une erreur alors il fait saute a la ligne de code suivante 

If me.TextBox1 = « nous ne pouvons pas diviser par zéro! » Then ‘–> un message d’erreur que nous voulons afficher si nous divisons par 0
me.TextBox1=0
End If

If me.TextBox1 <> » » and memoire <> » » Then ‘–> ici nous allons contrôler s’il y a bien une information dans Textbox 1 et si nous avons choisi un symbole de calcule

Nombre 1 = Val(me.TextBox1)
Nombre 2 = Val(me.TextBox2)

Select Case memoire ‘–> notre fonction memoire va servir ici car nous allons demander à excel de comparé la sélection si dessous par rapport a ce qui se trouve sauvegarder dans la fonction memoire

Case « C1 »
textbox 1 = Nombre1 / Nombre2
If Nombre1=0 Then
textbox1 =”nous ne pouvons pas diviser par zéro”
Else
textbox1= Nombre2 / Nombre1
End If

Case « C2 »
me.TextBox1 = nombre1 * nombre2

Case « C3 »
me.TextBox1 = nombre2 – nombre1

Case « C4 »
me.TextBox1 = nombre1 + nombre2

Case Else
End Select

End If

il nous reste plus qu’a contrôler si tous fonctionner.

voila désormais vous avez vu comment calculer en VBA en Créant une calculette

surtout n’hésite pas de poser des question et de vous abonnez à la chaine youtube.

8 Commentaires

  1. Bonsoir
    Ton article m’a tellement aidé, merci beaucoup
    maintenant concernant le « Public memoire As string » on me dit que ça réinitialisera le programme, du coup je sais pas quoi faire par peur de devoir tout recommencer par la suite

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.