Une aide pour débutant éclairé Visual Basic sur Excel Une aide pour débutant éclairé
Ouvrir l’interface Visual Basic d'Excel Aide Visual basic sur Excel Sommaire Ouvrir l’interface Visual Basic d'Excel Structure d’un algorithme (ou « macro ») Des boucles Des tests Quelques instructions utiles Permet de revenir au Sommaire Fait apparaître différents objets de la diapositive Diapositive suivante Diapositive précédente
On peut voir nom du classeur Excel (Classeur1) Aide Visual basic sur Excel L’interface Visual Basic d’Excel On ouvre l’interface Visual basic d’Excel à partir d’Excel par ALT + F11 On peut voir nom du classeur Excel (Classeur1)
Aide Visual basic sur Excel L’interface Visual Basic d’Excel Il faut créer l’espace ou mettre les macros: les modules. Après avoir sélectionné le VBAProject du classeur 1, faire Insertion module
L’espace Module est créé (Modules/Module1). Aide Visual basic sur Excel L’interface Visual Basic d’Excel L’espace Module est créé (Modules/Module1). Dans le dossier Modules, on peut créer plusieurs modules (Module1, Module2 …) Dans un module, on peut mettre plusieurs macros (fonction ou programme) Espace Module1 où on place les macros
Dans Excel, la fonction apparaît dans la liste des fonctions Excel Aide Visual basic sur Excel Structure d’un algorithme Une macro peut être une fonction ou un programme. Une fonction renvoie une valeur dépendant des valeurs d’entrées. Un programme réalise des tâches (modifier des attributs de cellules par ex.) et modifie des feuilles du classeur Excel. Fonction: Cette fonction qui s’appelle bidule a 2 arguments x et y. Elle renvoie le plus grand des deux. Dans Excel, la fonction apparaît dans la liste des fonctions Excel
Aide Visual basic sur Excel Structure d’un algorithme Une macro peut être une fonction ou un programme. Une fonction renvoie une valeur dépendant des valeurs d’entrées. Un programme réalise des tâches (modifier des attributs de cellules par ex.) et modifie des feuilles du classeur Excel. Ce programme se propose d’aller chercher le contenu de la cellule B3 et de le placer dans la cellule C5 Programme: La macro s’appelle truc Cells(3,2) est la cellule B3 (3ème ligne et 2ème colonne). Cells(3,2).value est AEP car c’est le contenu de la cellule B3. Cette valeur (AEP) est mis dans la cellule On lance la macro avec F5 (le curseur étant dans la macro) Il faudra se rappeler le moyen de récupérer le contenu de la cellule B3 (ou d’y mettre un contenu): De la feuille active du classeur actif: Cells(3,2).value (variable = … ou … = variable) De la feuille machin du classeur actif: Sheets("machin").Cells(3,2).value De la feuille machin du classeur bidule.xls (ouvert) Workbooks("bidule.xls").Sheets("machin").Cells(3,2).value
Exemple 1 : Construction d’une table des carrés (cf ci-dessous) Aide Visual basic sur Excel Des boucles Boucle For … Next Exemple 1 : Construction d’une table des carrés (cf ci-dessous) On écrit X et X² dans les cellules A1 et B1 Dans cette boucle, la variable i va prendre successivement les valeurs 1, 2, 3 … 10 On écrit dans les cellules A2, A3, A4 … A11 les valeurs 1, 2, 3,… 10. (Cellules de colonne 1 c’est-à-dire colonne A, de ligne 2, 3, …11) On écrit dans les cellules B2, B3, B4 … B11 les valeurs 1, 4, 9,… 100. (Cellules de colonne 2 c’est-à-dire colonne B, de ligne 2, 3, …11 et de valeur 1*1, 2*2, 3*3 … 10*10)
Exemple 2 : Construction d’une table de multiplication (cf ci-dessous) Aide Visual basic sur Excel Des boucles Boucle For … Next Exemple 2 : Construction d’une table de multiplication (cf ci-dessous) La variable i prend les valeurs de 1 à 10 Les cellules de lignes 2 à 11 et de colonne 1 (A2, A3, … A11) vont prendre les valeurs 1, 2, 3…10 Les cellules de ligne 1 et de colonnes 2 à 11 (B1, C1, … K1) vont prendre les valeurs 1, 2, 3…10
Exemple 2 : Construction d’une table de multiplication (cf ci-dessous) Aide Visual basic sur Excel Des boucles Boucle For … Next Exemple 2 : Construction d’une table de multiplication (cf ci-dessous) Les 2 variables lignes et colonnes varient entre 2 et 11. Donc les Cells(ligne,colonne) correspondent dans cette boucle à chaque cellule de la zone B2:K11. Le parcours de cette zone se fait ligne par ligne: B2:K2, puis B3:K3 … Par exemple, prenons le cas où ligne = 7 et colonne = 5 (E). Il faut mettre dans cette cellule E7 la valeur 6*4 (ligne-1 = 6 et colonne-1 = 4) Cela correspond à E1*A7.
La liste des noms commence à la ligne 3 Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 3 : Mise dans un tableau Visual Basic des noms d’une liste qui évolue sans cesse (dont on ne connaît pas la fin mais le nombre de ligne est inférieur à 1000) On déclare le tableau en dehors de la procédure. La taille du tableau est 1000, c’est-à-dire que les éléments du tableau sont: tablo(0), tablo(1), tablo(2) … jusqu’à tablo(1000) Ces éléments sont des « string » - des chaîne de caractères. La liste des noms commence à la ligne 3 On entre dans la boucle While si le contenu de la cellule(Ligne,2) est non vide. De cette façon on parcourra toute la liste jusqu’à avoir une cellule vide. Il ne faudra pas oublier d’incrémenter la variable ligne (augmenter ligne de 1) On place dans le tableau la valeur de la cellule(ligne,2) et on incrémente la variable ligne.
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs)
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 2 – couleur = 6 (jaune) Commentaires sur le codage des couleurs Le tableau A1:E200 est colorié en blanc. Les variables ligne et couleur sont initialisées
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 2 – couleur = 6 (jaune) Tant que la cellule A2 est différente du vide (c’est le cas: A2 = 1), on entre dans la boucle. La variable nom vaut « ABBAD » La variable prenom vaut « SALAH » La variable a vaut 2
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 2 – couleur = 6 (jaune) – a = 2 nom = ABBAD – prenom = SALAH Tant que : * la cellule A3 est différente du vide (c’est le cas: A3 = 2) * la cellule B3 (ANETAS) = nom (ABBAD) (pas le cas) * la cellule C3 (LAETITIA) = prenom (SALAH) (pas le cas) Ce n’est pas le cas, on n’entre pas dans la boucle…
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 2 – couleur = 6 (jaune) – a = 2 nom = ABBAD – prenom = SALAH Si a > ligne : (pas le cas a = ligne) On effectue le « ELSE »… On colorie en blanc la zone A2:E2 La variable ligne vaut 2+1
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 3 – couleur = 6 (jaune) – a = 2 nom = ABBAD – prenom = SALAH Tant que la cellule A3 est différente du vide (c’est le cas: A3 = 2), on entre dans la boucle. La variable nom vaut « ANETAS » La variable prenom vaut « LAETITIA » La variable a vaut 3
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 3 – couleur = 6 (jaune) – a = 3 nom = ANETAS – prenom = LAETITIA Tant que : * la cellule A4 est différente du vide (c’est le cas: A4 = 3) * la cellule B4 (ARBERET) = nom (ANETAS) (pas le cas) * la cellule C4 (CECILE) = prenom (LAETITIA) (pas le cas) Ce n’est pas le cas, on n’entre pas dans la boucle…
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 3 – couleur = 6 (jaune) – a = 3 nom = ANETAS – prenom = LAETITIA Si a > ligne : (pas le cas a = ligne) On effectue le « ELSE »… On colorie en blanc la zone A3:E3 La variable ligne vaut 3+1
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 4 – couleur = 6 (jaune) – a = 3 nom = ANETAS – prenom = LAETITIA Tant que la cellule A4 est différente du vide (c’est le cas: A4 = 3), on entre dans la boucle. La variable nom vaut « ARBERET » La variable prenom vaut « CECILE » La variable a vaut 4
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 4 – couleur = 6 (jaune) – a = 4 nom = ARBERET – prenom = CECILE Tant que : * la cellule A5 est différente du vide (c’est le cas: A5 = 4) * la cellule B5 (ARBERET) = nom (ARBERET) ( le cas) * la cellule C4 (CECILE) = prenom (CECILE) ( le cas) C’est le cas, on entre dans la boucle…
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 4 – couleur = 6 (jaune) – a = 4 nom = ARBERET – prenom = CECILE La variable a va s’incrémenter: a prend comme valeur 5, puis 6, puis 7… etc les conditions de la boucle sont vérifiées jusqu’à a = 8: Tant que : * la cellule A9 est différente du vide (c’est le cas: A9 = 8) * la cellule B9 (ARROYO) = nom (ARBERET) ( pas le cas) * la cellule C9 (KATIA) = prenom (CECILE) ( pas le cas) Ce n’est pas le cas, on sort de la boucle…
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 4 – couleur = 6 (jaune) – a = 8 nom = ARBERET – prenom = CECILE Si a > ligne : (c’est le cas, a = 8 et ligne = 4) On effectue le « IF »… On colorie en jaune la zone A4:E8 Couleur devient 8 (cyan) La variable ligne vaut 8+1
Aide Visual basic sur Excel Des boucles Boucle While … Wend Exemple 4 : Dans une liste A2:E181, il s’agit de colorer les doublons (même nom, même prénom) en 2 couleurs différentes (pour bien distinguer des doublons successifs) Ligne = 9 – couleur = 8 (cyan) – a = 8 nom = ARBERET – prenom = CECILE Tant que la cellule A9 est différente du vide (c’est le cas: A9 = 8), on entre dans la boucle. La variable nom vaut « ARROYO » La variable prenom vaut « KATIA » La variable a vaut 9 Et on continue ainsi jusqu’à la fin du tableau
Tiré de l’exemple précédent Aide Visual basic sur Excel Des tests IF… THEN … ELSE … END IF Structure: IF condition THEN instructions si le test est VRAI ELSE instructions si le test est FAUX END IF La partie « ELSE instructions » est facultative. Dans ce cas, rien ne se passe quand le test est faux. Les tests peuvent être imbriqués les uns dans les autres Exemples: Tiré de l’exemple précédent Suivant la note x, le commentaire est: Si 15 x: « Très bien » Si 10 x < 15: « Bien » Si 8 < x < 10: « Encourageant » Si x 8 : « Insuffisant »
Aide Visual basic sur Excel Des tests SELECT CASE Structure: SELECT CASE variable CASE valeur 1 instructions si la variable a la valeur 1 CASE valeur 2 instructions si la variable a la valeur 2 etc… autant de CASE qu’on veut CASE ELSE instructions si la variable a une autre valeur END SELECT Suivant le pays x, cette fonction « truc » retourne la capitale de ce pays ou la phrase adolescente « Chais pas » dans le cas d’un pays non prévu… Exemple:
Rows("12:14").Hidden = True Cache les lignes 12, 13 et 14 Aide Visual basic sur Excel Quelques instructions utiles Lignes et colonnes : Rows("12:14").Hidden = True Cache les lignes 12, 13 et 14 Columns("A:B").Hidden = False Affiche les colonnes A et B Columns("A:A").Interior.ColorIndex = 6 Colorie la colonne A en Jaune Rows("1:2").Delete Supprime les lignes 1 et 2 ColorIndex: Codage couleur de ColorIndex: Un nombre entier entre 0 et 56 correspond à une couleur…
Sur les chaînes de caractères : Aide Visual basic sur Excel Quelques instructions utiles Sur les chaînes de caractères : InStr(n,x,y) Recherche la position de la chaine y dans la chaine x à partir de la position n : La fonction bidule(x,y) recherche la position de y dans x à partir de la position 1. 1er cas : « sui » est en 4ème position 2ème cas: « suit » n’est pas dans x Len(x) Donne le nombre de caractère de la chaine x «TIM» & «BUKTU» Donne «TIMBUKTU»: & concatène Mid(x,a,b) Donne la partie de la chaine x à partir de la position a et de longueur b La fonction bidule donne la partie droite de la chaine x à partir du premier espace (« ») trouvé.
Avec les cellules ou des plages de cellules: Aide Visual basic sur Excel Quelques instructions utiles Avec les cellules ou des plages de cellules: a=Cells(2,3).value Met la valeur de la cellule ligne 2, colonne 3 (C2) dans a a=Range(«C2»).value Idem Cells(2,3).value=a Met la valeur de a dans la cellule ligne 2, colonne 3 (C2) Range(«C2»).value=a Idem Range(« A2:D10 »).Clear Efface tout (contenu et format) de la plage A2:D10 Range(Cells(2,1),Cells(10,4)).Clear Idem Range(«C2»).ClearContents Efface le contenu de la cellule C2 Cells(2,1).Interior.ColorIndex = 3 Colorie en rouge l’intérieur de la cellule A2 Range(«A2:D4»).Interior.ColorIndex = 3 Colorie en rouge l’intérieur de la plage A2:D4