Outils logiciels pour les cours Paris II

Cours Paris II

Stages/ Thèses/ Séminaires

Laboratoire

edit SideBar

TD 6

Valeurs aléatoires + Formulaire

Int((Maxi - Mini + 1) * Rnd + Mini) ' Renvoie un nombre entier au hasard compris entre Mini et Maxi

Exercice 1

  • Construire un générateur uniforme pour les valeurs {1,2,3,4,5}. On s'inspirera du programme t2() ci-dessous. Vérifier à l'aide de la macro t4(), que vous devez modifier, que le générateur est uniforme.

Fichier Excel avec les macros du cours 6

  • En savoir plus sur les UserForms

Introduction : UserForm Un objet UserForm est une fenêtre ou une boîte de dialogue entrant dans la composition d'une interface utilisateur personnalisée, qui permettra une interaction simple entre l'utilisateur et le programme. On le crée dans une feuille de Visual Basic Editor, par le menu Insertion --> UserForm. Par défaut, la feuille s'appelle UserForm1. La boîte à outils permet de placer dans le UserForm des contrôles tels que des zones de texte, des boutons, des cases à cocher . . . Un contrôle est un objet, possédant des propriétés - attribuées par la fenêtre Propriétés de la feuille -, des méthodes et des événements - codés dans la fenêtre Code associée à la feuille. Nota : Bien différencier le nom de la feuille - propriété Name - et son titre - propriété Caption. La propriété Name est le nom qui sera utilisé dans le code pour faire référence à la feuille. Un même nom ne peut-pas être utilisé pour plusieurs objets d'une même feuille. La propriété Caption correspond au libellé qui apparaît dans la barre de titre. La propriété Value détermine la valeur d'un contrôle. Par exemple, lorsqu'un utilisateur saisit une information dans un contrôle de type TextBox (zone de texte) de name Saisie, l'instruction var = Saisie.Value récupère l'information saisie dans la variable var.

Le UserForm à définir doit ressembler à celui donné en image :

  1. Dans Visual Basic insérez un nouveau UserForm (Insertion->UserForm).
  2. En utilisant la boîte à outil créez un intitulé (Icône ressemblant à un A majuscule). Modifiez son titre en Taille de la matrice pour cela vous devez utiliser la propriété caption
  3. En dessous de l'intitulé "Taille de la matrice" créez une zone de texte (Icône ab|) où l'utilisateur de votre userform pourra rentrer la valeur qu'il souhaite donner à la taille de la matrice. Puis changez le nom de la zone de texte (le champs name) par taille. Vous pourrez ainsi accéder à la valeur rentrée par l'utilisateur en utilisant l'instruction suivante Matrice.taille.value
  4. Créez un bouton (Icône ressemblant à carré, au bout de la ligne 2). Changez son intitulé en utilisant le champ caption par Créer Matrice et renommez l'objet bouton (champ name) par CreerMat
  5. Ouvrez Module1. Créez une nouvelle macro intitulé start. Ajoutez dedans le code pour afficher votre userform Matrice. Exécutez votre macro, l'userform doit apparaître. Cliquez sur le bouton Créer Matrice ', que se passe t-il ?
  6. Retournez dans VBA, dans la colonne de gauche, faites un clic droit sur l'userform et sélectionnez Code. Une nouvelle feuille apparaît. Dans cette feuille, il est possible d'associer des instructions VBA aux événements qui auront lieu avec l'userform. Un événement est une interaction entre la feuille et l'utilisateur comme le click de la souris.
  7. Créer la procédure qui permettra de lancer la macro creerMatrice lorsque l'utilisateur clique sur le bouton de l'userform de label Créer Matrice. Pour cela sélectionnez l'objet creerMat dans le premier menu déroulant et sélectionnez l'événement clic dans le deuxième menu déroulant. La macro creerMat_click doit apparaître avec un contenu vide. Ajouter l'instruction qui va appeler la macro creerMatrice définie dans Module1.
  8. Testez votre code en exécutant la macro start(), puis cliquez sur le bouton Créer Matrice , que se passe-t-il? Nettoyez la feuille en utilisant la macro effacertout, relancez start, modifiez la valeur de taille de la matrice. Que se passe t'il? Pourquoi?
  9. Modifiez le code de la macro creerMatrice() pour que la taille de la matrice ne soit plus de 10 mais contenue dans un paramètre que nous appellerons t.
  10. L'utilisation de la macro creerMatrice nécessite maintenant de donner une valeur au paramètre t. Modifiez le code de creerMat_click afin que lors de l'appel de la macro creerMatrice t soit égal à la valeur rentrée par l'utilisateur de l'userform Matrice(c'est-à-dire la valeur contenue dans Matrice.taille.value).
  11. On souhaite maintenant que la matrice contienne des valeurs aléatoires entières comprises entre 0 et maxValmaxVal est une valeur rentrée par l'utilisateur de votre userform.
  12. Ajoutez à votre userform un intitulé de label Entrer la borne supérieur des nombres de la matrice. ajoutez en dessous une zone de texte permettant à l'utilisateur d'indiquez la valeur de maxVal. Cette zone de texte aura pour non maxVal. Pour donner une valeur par défaut à maxVal modifiez la propriété value de l'objet maxVal.
  13. Modifiez la macro creerMatrice pour que celle ci prenne en paramètre une variable nommé borneMax de type entier. Utilisez ce paramètre pour que votre macro maintenant crée une matrice de nombres aléatoires compris entre 0 et borneMax. Puis modifiez l'appel de la macro creerMatrice dans la macro creerMat_click afin que borneMax prenne pour valeur la valeur entrée par l'utilisateur dans la zone de texte maxVal.
  14. Modifiez l'userform pour que celui-ci ressemble à l'image. Modifier le code de l'userform ainsi que le code des macros pour relier les macros aux click de l'utilisateur sur les différents boutons
  15. Testez-les.

Autres Exercices

  • Le formulaire Userform1 lit une entrée I et trie la colonne A entre 0 et I. Exécutez le formulaire à l'aide du programme principal. Concevoir un nouveau formulaire "Userform3" avec deux champs de texte qui lisent I et J. Si on active le bouton 1, le programme trie la colonne A entre les bornes I et J. Changez les couleurs de fond du formulaire.
UP2