• Aucun résultat trouvé

TP VBA 1 Prise en main

N/A
N/A
Protected

Academic year: 2022

Partager "TP VBA 1 Prise en main"

Copied!
2
0
0

Texte intégral

(1)

TP VBA 1 Prise en main

Créer un classeur Excel vierge, et commencer par enregistrer le chier (prenant en charge les macros) sous le nom TP1_nom1_nom2. Chaque exercice doit être résolu dans une feuille diérente portant son nom. Quelques étapes préliminaires :

1. Une fois le chier Excel ouvert, appuyer sur "ALT"+"F11" (ou "Développeur" -> "Visual Basic") pour ouvrir la fenêtre de code VBA.

2. Une suite d'instructions est comprise dans une macro, que l'on place dans un module. Insérer un

"module" (on pourra lui donner un nom).

3. Dans le module, écrire sub nom_macro() (attention : pas d'accent, pas d'espace, pas de chire !) et le logiciel rajoute automatiquement End Sub (si non : le rajouter). C'est entre Sub et End Sub qu'il va falloir écrire les instructions de la macro "nom_macro".

4. Pour mettre des commentaires à l'intérieur du code (des lignes non lues par le programme), il faut précéder la ligne par une apostrophe '.

5. Les cellules sont accessibles en VBA avec la syntaxe "Cells(Ligne,Colonne)" où Ligne est le numéro de la ligne, et Colonne celui de la colonne.

Voici les syntaxes principales de VBA :

IF (CONDITION) THEN FORi= 1 TO (ARRIVEE) WHILE (CONDITION)

... ... ...

END IF NEXTi WEND

Pour déclarer une variableN dans une procédure, on écrit :

Dim N As Integer Dim s As String Dim b As Boolean ou bien à l'extérieur de toute procédure et accessible par toutes procédures :

Public N As. . . Exercice 1. Maximum.

1. Rentrer deux nombres dans deux cellules Excel. Ecrire une macro qui renvoie le max de ces nombres : on achera le résultat dans une 3e cellule. Pour concaténer des mots et une valeur dans une cellule Excel il faut utiliser le symbole&.

Insérer un bouton sur la feuille Excel pour lancer la macro.

2. Ecrire un algorithme similaire qui renvoie le max de trois nombres (donnés dans trois cellules).

Exercice 2. Remplissage d'un tableau.

1. Ecrire une macro qui remplit un tableau àn= 4lignes etm= 7 colonnes de la façon suivante :

Ajouter un bouton sur la feuille Excel pour lancer la macro.

2. On veut pouvoir modier le point de départ du tableau : on veut que la place du1soit en position (k, l)où ket l sont des valeurs rentrées respectivement dans les cellules L1 et M1. On veut aussi pouvoir choisir le nombre de ligne(s)net le nombre de colonne(s)mrentrées respectivement dans les cellulesL2et M2.

Modier l'algorithme précédent pour prendre en compte ces modications. On fera attention à tes- ter les valeurs dek, l, n, mqui peuvent générer des erreurs.

Remarque : pour eacer les données d'une plage Excel rectangulaire entre A1 et G4 on utilise la commande VBA :

Range(Cells(1, 1), Cells(4, 7)).Clear

1

(2)

Exercice 3. Moyenne pondérée. Dans Excel, remplir une liste en ligne de10notes, et écrire les coecients pour chaque note sur la ligne d'en-dessous. Ecrire une macro qui renvoie dans une cellule la moyenne (pondérée des coecients).

Ajouter un bouton sur la feuille Excel pour lancer la macro.

Exercice 4. Suite de Syracuse. Soit n un nombre entier plus grand que zéro. Le but de l'exercice est d'acher la suite de Syracuse à partir dendont le procédé est le suivant : sinest pair, on le divise par 2 ; s'il est impair, on le multiplie par 3 et on ajoute 1. En répétant l'opération au dernier nombre obtenu, on construit une suite d'entiers positifs.

Voici la suite de Syracuse à partir de 14:

14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,4,2. . .

On peut remarquer qu'une fois que le nombre1 a été atteint, le cycle(1,4,2)se répète indéniment.

Ecrire un algorithme qui construit la suite de Syracuse à partir d'un nombre (rentré à la main) dans la cellule A2, et ache la suite des nombres sur la ligne2. Bien évidemment l'algorithme devra s'arrêter au premier1 rencontré.

Conjecture : la conjecture (non démontrée à ce jour) proclame que le cycle(1,4,2)est toujours atteint à un moment donné quel que soit le nombre de départ n.

Aller plus loin :

1. Ecrire un algorithme qui ache la suite de Syracuse pour tous les nombres entiers entre2et noù nsera rentré par l'utilisateur : chaque suite doit être achée sur une ligne diérente de manière à la visualiser toutes en même temps.

2. Modier l'algorithme pour qu'il stocke dans une liste (Excel) l'ensemble des positions où appa- raissent pour la première fois le1. On achera la courbe de ces positions en fonction du nombre de départ.

Rappels : Soientaetb deux entiers relatifs. On a :

a modb= 0⇐⇒aest divisible parb En particulier :

a mod 2 = 0⇐⇒aest pair. a mod 2 = 1⇐⇒aest impair.

AIDE VBA

nb1 Modnb2 Renvoie le modulo de nb1 parnb2

2

Références

Documents relatifs

1°) Recopier et compléter le tableau suivant des termes de suites de Syracuse définies par des différents termes initiaux. 4°) Programmer l’algorithme précédent soit

Le programme devra dire si l’utilisateur a trouv´ e ou pas le nombre, si l’utilisateur ne le trouve pas, le programme devra indiquer si le nombre saisi est trop grand ou trop

Le second affiche en sortie la valeur de u n , la valeur de l’entier naturel n étant entrée par l’utilisateur. Suite numérique Page 2/2

[r]

[r]

[r]

La suite (u n ) est croissante majorée par v 0 donc, d’après théorème, elle est convergente.. La suite (v n ) est décroissante minorée par u 0 donc, d’après théorème, elle

[r]