Upload
nguyenkien
View
214
Download
0
Embed Size (px)
Citation preview
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