TP 8 : parcours de liste et cas pratique EXCEL / VBA TP 8 : parcours de liste et cas pratique
La boucle Do … Loop Une généralisation de la boucle FOR. On boucle, et on indique juste la condition d’arrêt. Do (Instructions) Loop Until (condition) Do (Instructions) Loop While (condition) Répète les instructions jusqu’à ce que (tant que) la condition est vrai
Parcours de liste Une variable est utilisée pour indiquer la ligne de travail. On descend jusqu’à arriver à la fin de la liste / à la ligne désirée, on peut réaliser un traitement sur toutes (ou certaines) lignes parcourues. Ex : mettre en gras tous les noms d’une liste
Exemple : feuille étudiants.xls B C D 1 Code Nom Prénom Note 2 2001002 Ernjaz Maude 10 3 2001003 Faimal Emma 12 4 2001004 Faire Michel 14 5 2001005 Hornot-Toby Tobbie 8 6 2001006 Huilda Rachid 13 7 2001007 Illiait Thérèse 2001008 Iboura Habib 11 9 2001009 Imal Anne
Parcourir toute la liste Sub parcours() y = 2 Do (traitement sur la ligne ‘y’) y = y + 1 Loop until cells(y,1) = “” (après la parcours de liste, y “pointe” vers la première ligne blanche) End sub Ligne de départ On passe à la ligne suivante On s’arrête lorsqu’on arrive sur une ligne vide
Parcours de liste : ajouter en fin de liste Sub parcours() y = 1 Do y = y + 1 Loop until cells(y,1) = “” ‘on est à la fin, on peut ajouter un étudiant Cells(y,1) = “20012003” cells(y,2) = “Dupont” cells(y,3) = “Jean” cells(y,4) = “10” End sub
Parcours de liste : mettre en rouge les noms des mauvais étudiants Sub mise_en_rouge() y = 1 Do if (cells(y,4) < 10) then cells(y,2).font.colorIndex = 3 end if y = y + 1 Loop until cells(y,1) = “” End sub
Parcours de liste : retrouver code étudiant à partir de son nom Sub code() nom = inputbox(“Quel nom ?”) y = 1 Do y = y + 1 Loop until (cells(y,2) = nom) ‘on a trouvé le nom, on affiche le code msgbox Cells(y,1) End sub
Recherche, sans dépasser Sub code() nom = inputbox(“Quel nom ?”) y = 1 Do y = y + 1 Loop until (cells(y,2) = nom) or (cells(y,1) = “”) if (cells(y,1) = “”) then msgbox “Erreur !” else msgbox Cells(y,1) end if End sub
Copier les bonnes notes Sub code() y1 = 1 Y2 = 1 Do if (cells(y,4) > 12) then sheets(“bonnes notes”).cells(y2,1) = cells(y1,1) y2 = y2 +1 end if y1 = y1 + 1 Loop until (cells(y1,1) = “”) End sub
Exercice TP 8