Convertisseur de devises dans Excel VBA
Ci-dessous, nous examinerons un programme dans Excel VBA qui crée une Userform qui convertit tout montant d’une devise dans une autre.
Le Userform nous allons créer se présente comme suit:
Pour créer cette Userform, exécutez les étapes suivantes.
-
Ouvrez le Visual Basic Editor. Si l’Explorateur de projets n’est pas visible, cliquez sur Afficher, Project Explorer.
-
Cliquez sur Insérer, Userform. Si la boîte à outils n’apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran doit être configuré comme ci-dessous.
-
Ajoutez les étiquettes, zones de liste (première à gauche, la deuxième à droite), les zones de texte (première à gauche, la deuxième à droite) et le bouton de commande. Une fois cet exercice terminé, le résultat devrait être compatible avec l’image du Userform indiqué précédemment. Par exemple, créez un contrôle de zone de liste en cliquant sur ListBox de la boîte à outils. Ensuite, vous pouvez faire glisser une zone de liste sur la Userform.
-
Vous pouvez modifier les noms et les légendes des contrôles. Les noms sont utilisés dans le code VBA Excel. Les légendes sont celles qui apparaissent sur votre écran. Il est bon de changer les noms des contrôles, mais il est pas nécessaire ici parce que nous avons seulement quelques contrôles dans cet exemple. Pour changer la légende du Userform, bouton de commande et les étiquettes, cliquez sur Affichage, fenêtre Propriétés et cliquez sur chaque contrôle.
-
Pour afficher le Userform, placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Nous allons maintenant créer la sous UserForm_Initialize. Lorsque vous utilisez la méthode Show pour la Userform, ce sous sera exécuté automatiquement.
-
Ouvrez Visual Basic Editor.
-
Dans l’Explorateur de projets, cliquez droit sur UserForm1 puis cliquez sur Afficher le code.
-
Choisissez Userform dans la liste déroulante de gauche. Choisissez Initialiser de la droite liste déroulante.
-
Ajoutez les lignes de code suivantes:
Private Sub UserForm_Initialize() With ListBox1 .AddItem "Euro" .AddItem "Us Dollar" .AddItem "British Pound" End With With ListBox2 .AddItem "Euro" .AddItem "Us Dollar" .AddItem "British Pound" End With ListBox1.ListIndex = 1 ListBox2.ListIndex = 0 TextBox1.Value = 1 TextBox2.Value = 0.722152 End Sub
Explication: d’abord, les deux zones de liste sont remplies. Ensuite, la devise Dollar US est définie par défaut dans la première zone de liste et l’EURO currencyis définie par défaut dans la deuxième zone de liste. Enfin, la valeur 1 est entrée dans la première zone de texte et la valeur 0,722152 est entré dans la deuxième zone de texte.
Nous avons créé la première partie de la Userform. Bien qu’il semble déjà soignée, rien ne se passera encore lorsque l’on clique sur le bouton Go.
-
Dans l’Explorateur de projets, double-cliquez sur UserForm1.
-
Double-cliquez sur le bouton Go.
-
Ajoutez les lignes de code suivantes:
Private Sub CommandButton1_Click() Dim rates(0 To 2, 0 To 2) As Double, i As Integer, j As Integer rates(0, 0) = 1 rates(0, 1) = 1.38475 rates(0, 2) = 0.87452 rates(1, 0) = 0.722152 rates(1, 1) = 1 rates(1, 2) = 0.63161 rates(2, 0) = 1.143484 rates(2, 1) = 1.583255 rates(2, 2) = 1 For i = 0 To 2 For j = 0 To 2 If ListBox1.ListIndex = i And ListBox2.ListIndex = j Then TextBox2.Value = TextBox1.Value rates(i, j) Next j Next i End Sub
Explication: Tout d’abord, nous déclarons un tableau. Le tableau a deux dimensions.
Il se compose de 3 lignes et 3 colonnes. Ensuite, nous initialize chaque élément du tableau. Par exemple, les taux (1,0) est le taux de change du dollar américain à l’euro. Ensuite, nous commençons une double boucle. En fonction des monnaies sélectionnées dans les zones de liste, Excel VBA convertit le montant inscrit dans la première zone de texte et affiche le résultat dans la deuxième zone de texte.
Exemple: si i = 2 et j = 1 et nous entrons dans la valeur 2 dans la première zone de texte, Excel VBA met la valeur 2 taux (2,1) = 2 * 1,583255 = 3,16651 dans la deuxième zone de texte.
-
Testez la Userform.
Résultat: