SUPPORT DE COURS EXCEL 2007 - MACROS · que vous avez séletionnée s’affihe dans la partie...

19
SUPPORT DE COURS EXCEL 2007 - MACROS Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78 E-mail: [email protected] www.activ-formations.com 1 S S O O M M M M A A I I R R E E A. ... PRESENTATION DES MACROS DANS EXCEL ........................................................................... 2 B..... ENREGISTRER UNE MACRO ................................................................................................... 2 1 PREPARATION............................................................................................................................... 2 2 ENREGISTRER UNE MACRO .......................................................................................................... 3 3 MODIFIER UNE MACRO ................................................................................................................ 3 4 AFFECTER UNE MACRO UN OBJET DE LA FEUILLE DE CALCUL ..................................................... 5 5 AFFECTER UNE MACRO A UN BOUTON DE LA BARRE D’ACCES RAPIDE ....................................... 5 C..... CREER UNE MACRO ............................................................................................................... 6 1 LES VARIABLES .............................................................................................................................. 7 2 IF ET SELECT CASE ......................................................................................................................... 7 3 LES BOUCLES ................................................................................................................................ 7 4 BOITES DE DIALOGUE ................................................................................................................... 8 5 EXEMPLES DE CODE...................................................................................................................... 9

Transcript of SUPPORT DE COURS EXCEL 2007 - MACROS · que vous avez séletionnée s’affihe dans la partie...

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 1

SSSOOOMMMMMMAAAIIIRRREEE

A. ... PRESENTATION DES MACROS DANS EXCEL ........................................................................... 2

B..... ENREGISTRER UNE MACRO ................................................................................................... 2 1 PREPARATION............................................................................................................................... 2 2 ENREGISTRER UNE MACRO .......................................................................................................... 3 3 MODIFIER UNE MACRO ................................................................................................................ 3 4 AFFECTER UNE MACRO UN OBJET DE LA FEUILLE DE CALCUL ..................................................... 5 5 AFFECTER UNE MACRO A UN BOUTON DE LA BARRE D’ACCES RAPIDE ....................................... 5

C. .... CREER UNE MACRO ............................................................................................................... 6 1 LES VARIABLES .............................................................................................................................. 7 2 IF ET SELECT CASE ......................................................................................................................... 7 3 LES BOUCLES ................................................................................................................................ 7 4 BOITES DE DIALOGUE ................................................................................................................... 8 5 EXEMPLES DE CODE ...................................................................................................................... 9

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 2

AAA... PPPRRREEESSSEEENNNTTTAAATTTIIIOOONNN DDDEEESSS MMMAAACCCRRROOOSSS

DDDAAANNNSSS EEEXXXCCCEEELLL

Pour automatiser des tâches répétitives dans Microsoft Office Excel, vous pouvez enregistrer rapidement une macro (macro : action ou ensemble d'actions que vous pouvez utiliser pour automatiser des tâches. Les macros sont enregistrées dans le langage de programmation Visual Basic pour Applications).

Vous pouvez également créer une macro à l'aide de Visual Basic Editor (Visual Basic Editor : environnement dans lequel vous écrivez du nouveau code et des nouvelles procédures Visual Basic pour Applications ou modifiez du code et des procédures existants).

Après avoir créé une macro, vous pouvez l'affecter à un objet (par exemple à un bouton de barre d'outils, un graphique ou un contrôle) pour pouvoir l'exécuter en cliquant sur l'objet. Lorsque vous n'avez plus besoin d'une macro, vous pouvez la supprimer.

BBB... EEENNNRRREEEGGGIIISSSTTTRRREEERRR UUUNNNEEE MMMAAACCCRRROOO

Lorsque vous enregistrez une macro, toutes les étapes nécessaire à la réalisation des opérations que vous souhaitez enregistrer sont enregistrées par l'enregistreur de macro (comme avec un magnétophone).

11 PPRREEPPAARRAATTIIOONN

Pour pouvoir enregistrer et gérer les macros, vous devez afficher l’onglet Développeur. Si l'onglet Développeur n'est pas disponible, affichez-le de la manière suivante :

Cliquez sur le Bouton Microsoft Office , puis sur Options Excel.

Dans la catégorie Standard, sous Meilleures options pour travailler avec Excel, activez la case à cocher Afficher l'onglet Développeur dans le ruban, puis cliquez sur OK.

Pour définir temporairement le niveau de sécurité de manière à activer toutes les macros :

Sous l'onglet Développeur, dans le groupe Code, cliquez sur Sécurité des macros.

Sous Paramètres des macros, cliquez sur Activer toutes les macros (non recommandé ; risque d'exécution de code potentiellement dangereux), puis cliquez sur OK.

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 3

Remarque : Pour empêcher du code potentiellement dangereux de s'exécuter, il est recommandé de revenir aux paramètres qui désactivent toutes les macros une fois que vous avez fini d'utiliser des macros.

22 EENNRREEGGIISSTTRREERR UUNNEE MMAACCRROO

Sous l'onglet Développeur, dans le groupe Code, cliquez sur Enregistrer une macro.

Donnez un nom clair pour votre macro, elle sera reconnaissable plus facilement par la suite.

Il est possible d’affecter une touche de raccourci à votre macro. Attention : Cette fonctionnalité est à éviter si vous voulez conserver les raccourcis existant par défaut dans Excel (ex : CTRL+C pour copier).

Donnez l’emplacement pour l’enregistrement de votre macro : Si vous voulez que la macro soit disponible chaque

fois que vous utilisez Excel, dans tous vos classeurs, sélectionnez Classeur de macros personnelles.

Renseignez la rubrique description pour définir en quelques mots le but de cette macro.

Cliquez sur OK pour commencer à enregistrer.

Effectuez les opérations que vous souhaitez enregistrer.

Sous l'onglet Développeur, dans le groupe Code, cliquez sur Arrêter l'enregistrement lorsque toutes les opérations à enregistrer sont réalisées.

(Vous pouvez également cliquer sur Arrêter l'enregistrement à gauche de la barre d'état, en bas de la fenêtre).

Quand vous enregistrez une macro, vous avez la possibilité de choisir d’utiliser les références relatives (pour que la macro agisse à partir de la cellule selectionnée)

33 MMOODDIIFFIIEERR UUNNEE MMAACCRROO

Quand vous enregistrer une macro, Excel crée automatiquement le code qui correspond en VBA. Ce code est consultable et modifiable dans l’éditeur VB intégré.

Pour modifier une macro, cliquez sur macro dans le groupe Code de l’onglet Développeur.

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 4

Choisissez la macro à modifier dans la liste, puis cliquez sur le bouton Modifier. (vous pouvez aussi supprimer une macro si besoin)

A partir de là , vous entrez dans l’éditeur de code Visual Basic intégré dans Microsoft Excel. La macro que vous avez sélectionnée s’affiche dans la partie principale de l’éditeur.

Des notions de VBA sont requises pour pouvoir agir correctement sur le code.

Enregistrer les macros vous permet de découvrir la syntaxe utilisée pour chaque commande. En utilisant le « Copier Coller », vous pouvez importer le code correspondant à une commande dans celui de la macro que vous modifiez.

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 5

44 AAFFFFEECCTTEERR UUNNEE MMAACCRROO UUNN OOBBJJEETT DDEE LLAA FFEEUUIILLLLEE DDEE

CCAALLCCUULL

Dans une feuille de calcul, cliquez avec le bouton droit de la souris sur l'objet, le graphique ou le contrôle auquel vous souhaitez affecter une macro existante, puis cliquez sur Affecter une macro dans le menu contextuel.

Dans la zone Nom de la macro, cliquez sur la macro à affecter, puis sur OK pour valider.

55 AAFFFFEECCTTEERR UUNNEE MMAACCRROO AA UUNN BBOOUUTTOONN DDEE LLAA BBAARRRREE

DD’’AACCCCEESS RRAAPPIIDDEE

Faites un clic droit dans la barre d'outils accès rapide. Choisissez "Personnaliser la barre d'outils accès rapide". Sélectionnez "Macros" dans le menu déroulant "Choisir les commandes dans les catégories suivantes:".

Pour que le bouton ajouté soit spécifique à un classeur, sélectionnez le nom de votre classeur dans le menu déroulant "Personnaliser la barre d'outils rapide".

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 6

Sélectionnez votre macro dans la liste puis cliquez sur le bouton "Ajouter". Le nom de la macro est transféré dans la liste de droite. Vous pouvez personnaliser l'icône en sélectionnant le nom, puis en cliquant sur le bouton "Modifier". Cliquez sur le bouton OK pour valider. Vous pouvez désormais lancer votre macro en cliquant sur l'icône dans la barre d'outils accès rapide.

CCC... CCCRRREEEEEERRR UUUNNNEEE MMMAAACCCRRROOO

Pour créer une macro, vous devez accéder à l’éditeur Visual Basic intégré dans Excel.

Cliquez sur Visual Basic dans le groupe Code de l’onglet Développeur.

Pour naviguer facilement dans cet éditeur, vous devez afficher l’explorateur de projets (Menu Affichage).

Pour consulter ou modifier les propriétés des objets utilisés dans votre macro, il est conseillé d’afficher la fenêtre des propriétés (Menu Affichage).

L’explorateur affiche l’ensemble des projets. Un projet contient des modules de code, c’est donc dans ces modules que vous allez créer vos macros.

Pour créer un module, choisissez Module dans le menu Insertion de l’éditeur VB.

Une macro commande est une procédure pour VB, donc pour créer une nouvelle macro, dans le menu insertion, choisissez procédure.

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 7

Le nom de la macro doit être simple (pas d’espace ou de caractère spécial).

Choisissez le type de procédure que vous souhaité (une fonction est une procédure qui revoie un résultat, comme les fonctions déjà intégrées dans Excel).

La portée de la procédure indique si elle sera utilisée n’importe où dans le classeur, ou seulement dans un boîte de dialogue par exemple.

Il est conseillé de commenter vos macros, elles seront bien plus claires pour les futurs lecteurs (vous en serez un !). Pour insérer des commentaires, il suffit de taper le texte après une apostrophe (il sera vert).

11 LLEESS VVAARRIIAABBLLEESS

Il est fortement conseillé de déclarer les variables dans VBA pour Excel, même si ce n’est pas obligatoire.

Ex :

Dim age As integer

Dim Prenom As String

22 IIFF EETT SSEELLEECCTT CCAASSEE

a) IF…THEN…ELSE

Le jeu d’instruction If…then…else permet de réaliser des expressions sous condition (si…alors…sinon…).

Pour plusieurs conditions il est possible d’utiliser elseif.

b) SELECT CASE

Ce jeu d’instruction permet aussi de faire plusieurs tests (suivant le cas…).

33 LLEESS BBOOUUCCLLEESS

En programmation, une boucle, aussi appelée itération, permet d'effectuer une série d'actions de façon répétitive.

Il existe plusieurs solutions pour créer une boucle:

For Each Next: Boucle sur chaque objet d'une collection.

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 8

For Next: Répète une action le nombre de fois spécifié par un compteur.

Do Loop: Itération pendant ou jusqu'à ce qu'une condition soit remplie.

While Wend: Répète une action tant qu'une condition est vraie.

Boucle récursive: Crée une procédure qui s'appelle elle-même pendant ou jusqu'à ce qu'une condition soit

remplie.

a) FOR EACH NEXT

Le principe de fonctionnement de l'instruction For Each Next consiste à boucler sur tous les objets d'une collection spécifique.

Si la collection ne contient par d'objet ou quand tous les objets ont été parcourus, la boucle est fermée et l'exécution continue sur la ligne de code, juste après l'instruction Next.

b) FOR NEXT

L'instruction For Next permet de répéter des actions un nombre de fois prédéfini.

Vous devez spécifier une valeur de début [Numéro de départ] et une valeur de fin [Numéro d'arrivée]. La variable [compteur] va ensuite être incrémentée ou décrémentée à chaque itération (augmentée ou diminuée de 1 à chaque tour).

c) DO LOOP

Les boucles Do Loop, associées aux mots clés While et Until permettent de répéter une ou plusieurs actions pendant ou jusqu'à ce qu'une condition soit remplie.

(« Faire … tant que… » ou « Faire… Jusqu’à… »)

Do Loop peut exécuter des blocs d'instructions un nombre de fois indéfini. Il est donc important de s'assurer qu'une condition de sortie pourra être remplie et que la boucle ne tournera pas sans fin.

En cas d'urgence, si une macro de veut plus s'arrêter, utilisez simultanément les touches clavier: Ctrl + Pause.

d) WHILE WEND

L'instruction While Wend répète une action tant qu'une condition est vraie.

Si la condition est vraie, les actions indiquées dans la procédure sont effectuées.

Quand l'instruction Wend est atteinte, la procédure revient sur l'instruction While et la condition est de nouveau vérifiée.

Si condition est toujours vraie, le processus est répété. Si la condition est fausse, l'exécution passe directement à la première ligne de code qui suit l'instruction Wend.

44 BBOOIITTEESS DDEE DDIIAALLOOGGUUEE

Les UserForm sont des boites de dialogues personnalisées, offrant une interface intuitive entre l'application et l'utilisateur.

Les UserForm sont créés par le menu Insertion UserForm.

L'affichage des UserForm s'effectue par la méthode "Show" de l'UserForm. Cette instruction doit être placée à l'intérieur d'une procédure dans un module.

Sub AfficheUF() MaBoite.Show

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 9

End Sub

L'instruction Load charge le UserForm en mémoire sans l'afficher.

L'instruction Unload ferme le UserForm en le déchargeant de la mémoire. La syntaxe de cette instruction est : Unload UserForm.

Il est également possible de fermer un UserForm en gardant en mémoire la valeur de ses contrôles par la méthode Hide. La syntaxe devient : UserForm.Hide.

Chaque UserForm possède son propre module.

Pour y accéder, cliquez sur le UserForm ou sur un contrôle puis tapez "F7" ou faîtes un double-clic sur l'objet. Par défaut, le module s'affichera avec une procédure évènementielle de type privée de l'objet sélectionné.

Il est possible d’ajouter des contrôles et de les personnaliser.

55 EEXXEEMMPPLLEESS DDEE CCOODDEE

a) BOUCLES ET CONDITIONS -

Les conditions :

Les conditions sont très courantes dans les applications VB. Elles peuvent déterminer la valeur que prennent les variables, arrêter une procédure, appeler une procédure, quitter une boucle, atteindre une étiquette.

Les exemples suivants vont déterminer la valeur que prendra la variable Mention par rapport à des notes. Le tableau des notes est :

Notes : Mention :

0 Nul

1 à 5 Moyen

6 à 10 Passable

11 à 15 Bien

16 à 19 Très bien

20 Excellent

L'instruction la plus courante dans VB est la condition If condition Then valeur vrai :

'La Note se trouve dans la cellule "A1", la mention est à mettre dans la cellule "B1"

'Pour trouver la valeur de la mention, on pourrait écrire :

Dim Note As Integer

Dim Mention As String

Note = Range("A1")

If Note = 0 Then Mention = "Nul"

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 10

If Note >= 1 And Note <6 Then Mention = "Moyen"

If Note >= 6 And Note <11 Then Mention = "Passable"

If Note >= 11 And Note <16 Then Mention = "Bien"

If Note >= 16 And Note <20 Then Mention = "Très Bien"

If Note = 20 Then Mention = "Excellent"

Range("B1") = Mention

Si la valeur vraie possède plusieurs lignes d'instructions, la syntaxe devient If Condition Then Valeur vraie End If.

'Si la note est égale à 0, la mention prend comme valeur "Nul" et la couleur de la police devient Rouge:

Dim Note As Integer

Dim Mention As String

Note = Range("A1")

If Note = 0 Then

Mention = "Nul"

Range("B1").Font.Color = RGB(255, 0, 0)

End If

Range("B1") = Mention

Dans notre exemple, l'instruction peut être mieux structurée. La couleur de la police de la mention est rouge si la note est inférieure à 10 et verte si la note est supérieure à 10 en utilisant la syntaxe If condition Then valeur vrai Else valeur fausse End If.

If Note < 10 Then

Range("B1").Font.Color = RGB(255, 0, 0)

Else

Range("B1").Font.Color = RGB(255, 0, 0)

End If

Pour calculer la valeur de la mention, on utilisera plus facilement la syntaxe If condition Then valeur vraie ElseIf condition Then valeur vrai Else valeur vraie End If en ajoutant autant de fois que nécessaire l'instruction ElseIf.

Dim Note As Integer

Dim Mention As String

Note = Range("A1")

If Note = 0 Then

Mention = "Nul"

ElseIf Note >= 1 And Note <6 Then

Mention = "Moyen"

ElseIf Note >= 6 And Note <11 Then

Mention = "Passable"

ElseIf Note >= 11 And Note <16 Then

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 11

Mention = "Bien"

ElseIf Note >= 16 And Note <20 Then

Mention = "Très Bien"

Else

Mention = "Excellent"

End If

Range("B1") = Mention

Dans le cas de conditions multiples, comme dans notre exemple, on préférera le bloc d'instruction Select Case expression Case valeur expression Case Else End Select.

Dim Note As Integer

Dim Mention As String

Note = Range("A1")

Select Case Note

Case 0

Mention = "Nul"

Case 1 To 5

Mention = "Moyen"

Case 6 To 10

Mention = "Passable"

Case 11 To 15

Mention = "Bien"

Case 16 To 19

Mention = "Très Bien"

Case Else

Mention = "Excellent"

End Select

Range("B1") = Mention

Une condition peut appeler une étiquette. Une étiquette représente un endroit de la procédure. Elle se déclare par un nom suivi du signe ":". Dans l'exemple suivant, si i prend la valeur 10, la procédure va directement à la ligne Msgbox "Fin du programme".

Dim i As Integer

instructions

If i = 10 Then GoTo Fin

instructions

Fin:

Msgbox "Fin du programme"

Les boucles :

Les boucles le plus souvent utilisés sont les boucles For ... Next. Elles permettent de répéter un nombre de fois défini un bloc d'instructions. Elles utilisent une variable qui est incrémentée ou décrémentée à chaque

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 12

répétition.

Dim i As Integer

'La boucle suivante va écrire les chiffres de 1 à 10 'dans la plage de cellule "A1:A10". La variable i 's'incrémente de 1 à chaque fois

For i = 1 To 10

Range("A1").Offset(i - 1) = i

Next i

La variable peut être incrémentée d'une valeur différente de 1 par le mot Step.

Dim i As Integer, j As Integer

'La boucle suivante va écrire les chiffres pairs

'dans la plage de cellule "A1:A10". La variable i 's'incrémente de 2 à chaque fois

j = 0

For i = 2 To 20 Step 2

Range("A1").Offset(j) = i

j = j + 1

Next i

La variable peut également être décrémentée. Dans ce cas, le mot Step est obligatoire.

Dim i As Integer, j As Integer

'La boucle suivante va écrire les chiffres de 20 à 10

'dans la plage de cellule "A1:A10". La variable i

'se décrémente de 1 à chaque fois

j = 0

For i = 20 To 10 Step -1

Range("A1").Offset(j) = i

j = j + 1

Next i

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 13

A l'intérieur d'un bloc d'instruction For Next, l'instruction Exit For, peut quitter la boucle avant que la variable n'est atteint sa dernière valeur. Dans le tableau suivant se trouve une liste d'élèves avec leurs notes.

Pour connaître la note de Paul, on pourrait utiliser :

Dim i As Integer

Dim NbreEleve As Integer, NoteEleve As integer

Dim Cel As Range

'On affecte la cellule "A1" à la variable Cel

Set Cel = Range("A1")

'La dernière ligne - 1 correspond au nombre d'élèves

NbreEleve = Cel.End(Xldown).Row - 1

For i = 1 To NbreEleve

If Cel.Offset(i) = "PAUL" Then

'On récupère la note

NoteEleve = Cel.Offset(i, 1)

'puis on sort de la boucle

Exit For

End If

Next i

Msgbox "La note de Paul est " & NoteEleve

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 14

Pour répéter un bloc d'instructions pour chaque objet d'une collection ou pour chaque élément d'un tableau, on utilisera le bloc d'instruction For Each Objet In Collection Next.

L'exemple suivant mettra la police de couleur rouge si les notes sont inférieures à 10 et de couleur verte si les notes sont supérieures à10.

Dim Cel As Range, Cel2 As Range

'On affecte la plage de cellules "B2:B15"

'à la variable Cel

Set Cel = Range("B2:B15")

'Pour chaque cellule de la plage de cellule

For Each Cel2 In Cel

If Cel2 < 10 Then

'Police de couleur rouge

Cel2.Font.Color = RGB(0, 255, 0)

Else

'Police de couleur verte

Cel2.Font.Color = RGB(255, 0, 0)

End If

Next

On peut également utiliser l'instruction Exit For pour sortir d'un bloc d'instruction For Each ... Next.

Les boucles conditionnelles:

Les boucles While condition Wend exécutent un bloc d'instruction tout pendant que la condition est vraie.

Dim Calcul As Integer, Compteur As Integer

Compteur = 1

'Le bloc d'instruction suivant va additionner les

' nombres de 1 à 10 (1+2+3+4+5+6+7+8+9+10).

'Tant que la valeur de Compteur est inférieur 11

While Compteur < 11

Calcul = Calcul + Compteur

'Ne pas oublier d'incrémenter le compteur sinon

'la boucle ne pourra pas s'arrêter.

Compteur = Compteur + 1

Wend

Msgbox Calcul

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 15

Les boucles Do Loop sont mieux structurées que les boucles While Wend. On peut à tout moment sortir d'une boucle Do Loop par l'instruction Exit Do.

La boucle Do While condition Loop exécute un bloc d'instruction tout pendant que la condition est vraie. Dans l'exemple suivant, on veut ajouter l'élève Annie à la liste des élèves.

Dim Compteur As Integer

Dim Cel As Range

'On affecte la cellule "A1" à la variable Cel

Set Cel = Range("A1")

Compteur = 1

'Le bloc d'instruction suivant va se répéter

'tant que la cellule n'est pas vide

Do While Cel.Offset(Compteur) <> ""

'Ne pas oublier d'incrémenter le compteur sinon

'la boucle ne pourra pas s'arrêter.

Compteur = Compteur + 1

Loop

Cel.Offset(Compteur) = "ANNIE"

Dans l'exemple précédent, la condition est testée à l'entrée de la boucle. Dans la boucle Do Loop While condition, le bloc d'instruction est exécuté une fois avant que la condition soit testée.

Dim Compteur As Integer

Dim Cel As Range

'On affecte la cellule "A1" à la variable Cel

Set Cel = Range("A1")

Compteur = 1

'Le bloc d'instruction suivant va se répéter

'tant que la cellule n'est pas vide

Do

'Ne pas oublier d'incrémenter le compteur sinon

'la boucle ne pourra pas s'arrêter.

Compteur = Compteur + 1

Loop While Cel.Offset(Compteur) <> ""

Cel.Offset(Compteur) = "ANNIE"

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 16

Pour sortir d'une boucle, on utilise l'instruction Exit Do. Pour recherche la note de André :

Dim Compteur As Integer, NoteEleve As integer

Dim Cel As Range

'On affecte la cellule "A1" à la variable Cel

Set Cel = Range("A1")

Compteur = 1

'Le bloc d'instruction suivant va se répéter

'tant que la cellule n'est pas vide

Do While Cel.Offset(Compteur) <> ""

'Si la valeur de la cellule est "ANDRE", on sort

'de la boucle

If Cel.Offset(Compteur) = "ANDRE" Then

Exit Do

End If

'Ne pas oublier d'incrémenter le compteur sinon

'la boucle ne pourra pas s'arrêter.

Compteur = Compteur + 1

Loop

NoteEleve = Cel.Offset(Compteur, 1)

Msgbox "La note de André est " & NoteEleve

Les boucles Do Until sont identiques aux boucles Do While, seulement le bloc d'instruction est répété tout pendant que la condition n'est pas vraie. La syntaxe est exactement la même, il y a juste le mot Until qui remplace le mot While. Si on reprend l'exemple précédent, la procédure deviendrait :

Dim Compteur As Integer, NoteEleve As integer

Dim Cel As Range

'On affecte la cellule "A1" à la variable Cel

Set Cel = Range("A1")

Compteur = 1

'Le bloc d'instruction suivant va se répéter

'tant que la cellule n'est pas vide

Do Until Cel.Offset(Compteur) = "ANDRE"

'Ne pas oublier d'incrémenter le compteur sinon

'la boucle ne pourra pas s'arrêter.

Compteur = Compteur + 1

Loop

NoteEleve = Cel.Offset(Compteur, 1)

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 17

Msgbox "La note de André est " & NoteEleve

b) AUTRES EXEMPLES – MACROS SUR CELLULES

Ecrire une phrase à l’envers

Sub Inverse()

Dim Phrase1 As String, Phrase2 As String

Dim i As Integer

Phrase1 = Range("A1")

For i = 0 To Len(Phrase1) - 1

Phrase2 = Phrase2 & Mid(Phrase1, Len(Phrase1) - i, 1)

Next i

Range("A2") = Phrase2

End Sub

Obliger l’écriture en majuscule

'La procédure évènementielle suivante met en majuscule le contenu des

'cellules. La ligne d'instructions On Error Resume Next permet d'éviter

'le message d'erreur lorsque plusieurs cellules sont sélectionnées.

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next

Target = UCase(Target)

End Sub

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 18

Affiche aléatoirement un nombre compris entre 1 et 10

'Cette procédure place dans la cellule A1 un chiffre aléatoire compris

'entre 0 et 10

Sub Aleatoire()

Dim NbreAlea As Integer

Randomize

NbreAlea = Int((10 * Rnd) + 1)

Range("A1") = NbreAlea

End Sub

Somme des nombres écrits en rouge

'Cette procédure place dans la cellule A1 la somme des nombres écrits

'en rouge

Sub Somme_Rouge()

Dim Cel As Range

Dim SomRoug As Integer

For Each Cel In Selection

If Cel.Font.ColorIndex = 3 Then

SomRoug = SomRoug + Cel

End If

Next

Range("A1") = SomRoug

End Sub

SUPPORT DE COURS EXCEL 2007 - MACROS

Parc des Bois de Grasse -1 avenue Louison Bobet - 06130 GRASSE Tél. 04 92 42 00 20 - Fax. 04 92 42 02 78

E-mail: [email protected]

www.activ-formations.com 19

Numéro de la semaine

'Cette procédure place dans la cellule A1 le numéro de la semaine de la

'date en cours

Sub Numero_Semaine()

Dim MaDate As Date

Dim Numero As Byte

MaDate = Date

Numero = Format(MaDate, "ww", vbMonday)

Range("A1") = Numero

End Sub

Extraire les consonnes et les voyelles d'une chaîne de caractères

Sub Cons_Voy()

Dim i As Integer

Dim Chaine As String

Dim Caract As String * 1

Dim Conson As String, Voyel As String

Chaine = Range("A1")

For i = 1 To Len(Chaine)

Caract = Mid(Chaine, i, 1)

Select Case LCase(Caract)

Case "a", "e", "i", "o", "u", "y"

Voyel = Voyel & Caract

Case Else

Conson = Conson + Caract

End Select

Next i

Range("A2") = Conson

Range("A3") = Voyel

End Sub