Corrections des exercices
Corrections des exercices
Dans ce chapitre, vous retrouvez les corrections des exercices qui vous ont été proposés dans cet ouvrage.
Chaque exercice est repris et commenté pour vous permettre de mieux comprendre les instructions et approches.
Vous pouvez également télécharger le fichier Exercices_corriges qui contient le code de chaque exercice directement depuis l’onglet Compléments.
Les instructions de création de module vous sont données à titre indicatif durant les premiers chapitres, elles seront omises pour simplifier la lecture par la suite.
Communiquer avec l’utilisateur
Exercice 1 : Fonction MsgBox
Réalisez un clic droit dans l’Explorateur de projets puis choisissez Insertion - Module.
Sélectionnez le module créé Module1 puis dans la fenêtre Propriétés modifiez sa propriété Name à Chap_05_MsgBox_InputBox.
'Fonctions MsgBox et InputBox
Option Explicit
'-----------------------------
'Exercice 1 - Fonction Msgbox
'-----------------------------
'A-Que la Force soit avec vous
'Dans une structure
Public Sub MsgBox_InputBox_Exercice1A()
'Écrivez une instruction qui va afficher à l'utilisateur dans une
boîte de dialogue
'le texte simple "Que la Force soit avec vous"
MsgBox "Que la Force soit avec vous"
End Sub
'B-Yes, No, Maybe, I don't know
'Dans une structure
Public Sub MsgBox_InputBox_Exercice1B()
'Écrivez une instruction qui va afficher à l'utilisateur dans une
boîte de dialogue
'la question "Avez-vous terminé la saisie du document ?"
'et proposer les boutons Oui, Non et Annuler
MsgBox...Les variables, les constantes
Exercice 1 : Déclaration simple de variables
Réalisez un clic droit dans l’Explorateur de projets puis choisissez Insertion - Module.
Sélectionnez le module créé Module1 puis dans la fenêtre Propriétés modifiez sa propriété Name à Chap_06_Variables_Constantes.
'Variables et constantes
Option Explicit
'-----------------------------
' Exercice 1 - Déclaration simple de variables
'-----------------------------
Private Sub Variables_Constantes_Exercice1()
'A-Déclarez une variable pouvant accueillir un nom d'étudiant,
qui s'appellera NomEtudiant.
Dim NomEtudiant As String
'B-Déclarez une variable qui accepte des valeurs entières et qui
s'appellera NumeroCarteEtudiant.
Dim NumeroCarteEtudiant As Integer 'est également possible As Long
'C-Déclarez une variable qui pourra contenir Vrai ou Faux, que vous
nommerez Boursier.
Dim Boursier As Boolean
'D-Déclarez une constante qui contiendra le 1er septembre 2025,
que vous nommerez DATE_LIMITE_INSCRIPTION.
Const...Les procédures, les fonctions, les macros
Exercice 1 : Écriture de macros
Réalisez un clic droit dans l’Explorateur de projets puis choisissez Insertion - Module.
Sélectionnez le module créé Module1 puis dans la fenêtre Propriétés modifiez sa propriété Name à Chap_07_Procedures_Fonctions.
'Procédures, fonctions et macros
Option Explicit
'-----------------------------
' Exercice 1 - Écriture de macros
'-----------------------------
'a. Macro privée
'Écrivez une macro MacroPrivee, de portée privée.
Private Sub MacroPrivee()
'Cette macro affichera à l'utilisateur la valeur 42.
MsgBox 42
End Sub
'b. Macro publique
'Écrivez une macro MacroPublique, de portée publique.
Public Sub MacroPublique()
'Cette macro fera appel à la macro MacroPrivee créée précédemment.
MacroPrivee
End Sub
Exercice 2 : Écriture de procédures
'-----------------------------
' Exercice 2 - Écriture de procédures
'-----------------------------
'a. Procédure d'affichage ...Les conditions
Exercice 1 : Si Alors
'Conditions
Option Explicit
'-----------------------------
' Exercice 1 - Si Alors
'-----------------------------
'Écrivez une procédure AfficheSiPositif, de portée publique nécessitant un
paramètre numérique entier nommé ValeurDuDeclencheur.
Public Sub AfficheSiPositif(ValeurDuDeclencheur As Integer)
'Cette procédure devra afficher OK si la valeur de la variable
ValeurDuDeclencheur est strictement supérieure à 0.
If ValeurDuDeclencheur > 0 Then
MsgBox "OK"
End If
End Sub
'Créez une macro SiAlors.
Sub SiAlors()
'Cette macro appellera dans un premier temps AfficheSiPositif
en lui passant la valeur 35
AfficheSiPositif 35
'puis dans un second temps AfficheSiPositif en lui passant la valeur -5.
AfficheSiPositif -5
End Sub
Exercice 2 : Si Sinon
'-----------------------------
' Exercice 2 - Si Sinon
'-----------------------------
'Écrivez une fonction RetourneTripleOuTiers de portée privée.
'Elle prendra en paramètre d'entrée une valeur numérique entière
inférieure à 255, nommée ValeurEntree
'et retournera une valeur possiblement décimale.
Private Function RetourneTripleOuTiers(ValeurEntree As Integer) As
Double
'Cette fonction retournera...Les boucles
Exercice 1 : Boucles For Next
'Boucles
Option Explicit
'-----------------------------
' Exercice 1 - Boucles For Next
'-----------------------------
'a. 1 pas à la fois
'Créez une macro AfficherDe5a15.
Sub AfficherDe5a15()
'Cette macro devra afficher les valeurs allant de 5 à 15.
Dim i As Integer
For i = 5 To 15
MsgBox i
Next i
End Sub
'b. De 2 en 2
'Créez une macro AfficherDe50a60.
Sub AfficherDe50a60()
'Cette macro devra afficher les valeurs allant de 50 à 60,
en allant de 2 en 2.
Dim i As Integer
For i = 50 To 60 Step 2
MsgBox i
Next i
End Sub
'c. À reculons
'Créez une macro Afficher30a10PasDeMoins5.
Sub Afficher30a10PasDeMoins5()
'Cette macro devra afficher les valeurs allant de 30 à 10, avec
un pas décroissant de 5.
Dim i As Integer
For i = 30 To 10 Step -5
MsgBox...Les opérateurs
Exercice 1 : Opérateurs arithmétiques
'Opérateurs
Option Explicit
'-----------------------------
' Exercice 1 - Opérateurs arithmétiques
'-----------------------------
'a. Opérations de base
'Écrivez une fonction Addition, de portée publique, de type numérique
entier.
'Cette fonction prend deux paramètres de type numérique entier,
nommés A et B.
Public Function Addition(A As Integer, B As Integer) As Integer
'La fonction retourne la somme des valeurs A et B.
Addition = A + B
End Function
'Écrivez ensuite une fonction Soustraction, de portée publique,
de type numérique entier.
'Cette fonction prend deux paramètres de type numérique entier,
nommés A et B.
Function Soustraction(A As Integer, B As Integer) As Integer
'La fonction retourne la différence entre les valeurs A et B.
Soustraction = A - B
End Function
'Créez une macro AfficherAdditionPuisSoustraction.
Sub AfficherAdditionPuisSoustraction()
'Dans cette macro, déclarez deux variables de type numérique
entier, nommées valeur1 et valeur2
Dim valeur1 As Integer, valeur2 As Integer
' et affectez à ces variables les valeurs respectives 15 et 18.
valeur1 = 15
valeur2 = 18
'La macro devra ensuite afficher le résultat renvoyé par la
fonction Addition,
'en lui passant les valeurs valeur1 et valeur2.
MsgBox Addition(valeur1, valeur2)
'La macro devra également afficher le résultat renvoyé par la
fonction Soustraction,
'en lui passant les valeurs valeurs1 et valeurs 2.
MsgBox...Les chaînes de caractères
Exercice 1 : Concaténation de chaînes
'Chaînes de caractères
Option Explicit
'-----------------------------
' Exercice 1 - Concaténation de chaînes
'-----------------------------
'a. Symbole au choix
'Écrivez une fonction, nommée Concatenation, de portée publique.
'Cette fonction prend en paramètres deux chaînes de caractères,
nommées ChaineA et ChaineB.
Public Function Concatenation(ChaineA As String, ChaineB As String)
As String
'Cette fonction retournera une chaîne de caractère contenant
ChaineA et ChaineB séparées par le caractère espace " ".
Concatenation = ChaineA & " " & ChaineB
End Function
'Créez une macro AfficherConcatenation.
Sub AfficherConcatenation()
'Cette macro affichera le retour de la fonction Concatenation,
'en lui passant les valeurs "Bonjour" et "bienvenue".
MsgBox Concatenation("Bonjour", "bienvenue")
End Sub
'b. Un seul symbole possible
'Écrivez une fonction, nommée ConcatenationNombres, de portée
publique.
'Cette fonction prend en paramètres deux valeurs numériques entières,
nommées NombreA et NombreB.
Public Function ConcatenationNombres(NombreA As Integer, NombreB As
Integer) As String
'Cette fonction retournera une chaîne de caractère contenant NombreA
et NombreB sans caractère de séparation.
ConcatenationNombres...Les dates et les heures
Exercice 1 : Afficher la date et l’heure système
'Dates et Heures
Option Explicit
'-----------------------------
' Exercice 1 - Afficher la date et l'heure système
'-----------------------------
'a. Heure du système
'Créez une macro AfficherDateHeureMaintenant.
Sub AfficherDateHeureMaintenant()
'Cette macro affichera à l'utilisateur la date et l'heure du système.
MsgBox Now
End Sub
'b. Date du jour
'Créez une macro AfficherDateDuJour.
Sub AfficherDateDuJour()
'Cette macro affichera à l'utilisateur la date du jour.
MsgBox Date
End Sub
Exercice 2 : Créer une date et une heure
'-----------------------------
' Exercice 2 - Créer une date et une heure
'-----------------------------
'a. Utilisation de DateSerial
'Écrivez une fonction PremierDeLAn, de portée publique, qui retourne
une date.
'Cette fonction prend en paramètre une valeur numérique entière iAnnee.
Public Function PremierDeLAn(iAnnee As Integer) As Date
'Cette fonction doit retourner le 1er janvier de l'année iAnnee fournie
en paramètre.
PremierDeLAn...Les cellules
Exercice 1 : Valeur dans une cellule
'Cellules Excel
Option Explicit
'-----------------------------
' Exercice 1 - Valeur dans une cellule
'-----------------------------
'a. Avec activation
'Créez une macro ActiverCelluleA1PuisBonjourDansCelluleActive.
Sub ActiverCelluleA1PuisBonjourDansCelluleActive()
'Cette macro activera la cellule A1
Range("A1").Activate
'puis mettra dans la cellule active la valeur Bonjour
ActiveCell.Value = "Bonjour"
End Sub
'b. Sans activation
'Créez une macro EcrireDansCelluleA2.
Sub EcrireDansCelluleA2()
'Cette macro écrira directement dans la cellule A2 la valeur
Manipulation OK, sans activer au préalable la cellule A2.
Range("A2").Value = "Manipulation OK"
End Sub
Exercice 2 : Un peu de couleurs
'-----------------------------
' Exercice 2 - Un peu de couleurs
'-----------------------------
'Créez une macro ColorierCelluleEnJaune.
Sub ColorierCelluleEnJaune()
'Cette macro demandera à l'utilisateur de rentrer une adresse de
cellule (vous ferez en sorte...Les feuilles
Exercice 1 : Feuille active
'Feuilles Excel
Option Explicit
'-----------------------------
' Exercice 1 - Feuille active
'-----------------------------
' Dans le module Chap_14_Feuilles, créez une macro
AfficherNomFeuilleActive.
Sub AfficherNomFeuilleActive()
'Cette macro affichera le nom de la feuille active.
MsgBox ActiveSheet.Name
End Sub
Exercice 2 : Copie d’une feuille à l’autre
'-----------------------------
' Exercice 2 - Copie d'une feuille à l'autre
'-----------------------------
'Alors que cette manipulation fait partie des plus courantes, voici
un exercice fort simple.
'l'objectif est de créer une nouvelle feuille, d'y recopier les données
que vous avez créées
'dans les exercices du chapitre précédent et de renommer cette feuille
Feuille_Temporaire.
'Créez une macro CreerRemplirEtNommerFeuille dans le module Chap_14_Feuilles.
Sub CreerRemplirEtNommerFeuille()
'Dans cette macro vous commencerez donc par déclarer une variable
de type feuille (Worksheet), que vous nommerez wsh.
Dim wsh As Worksheet
'La macro ajoutera une nouvelle feuille...Les classeurs
Exercice 1 : Utiliser ThisWorkbook
'Classeurs Excel
Option Explicit
'-----------------------------
' Exercice 1 - Utiliser ThisWorkbook
'-----------------------------
'a. Emplacement du classeur
'Créez une macro AfficherEmplacementClasseur.
Sub AfficherEmplacementClasseur()
'Cette macro affichera l'emplacement du classeur.
MsgBox ThisWorkbook.Path
End Sub
'b. Nom de la feuille active
'Créez une macro AfficherNomFeuilleActiveDansClasseur.
Sub AfficherNomFeuilleActiveDansClasseur()
'Cette macro affichera le nom de la feuille active du classeur.
MsgBox ThisWorkbook.ActiveSheet.Name
End Sub
Exercice 2 : Créer, enregistrer et fermer un classeur
'-----------------------------
' Exercice 2 - Créer, enregistrer et fermer un classeur
'-----------------------------
'a. Création d'un nouveau classeur
'Créez une macro CreerClasseurEtAfficherNombreFeuilles.
Sub CreerClasseurEtAfficherNombreFeuilles()
'Cette macro devra créer un nouveau classeur
Dim wbk As Workbook
Set wbk = Workbooks.Add
'puis...L’application Excel
Exercice 1 : Lancer une nouvelle application Excel
'Applications Excel
Option Explicit
'-----------------------------
' Exercice 1 - Lancer une nouvelle application Excel
'-----------------------------
'Créez une macro LancerNouvelleApplicationExcel.
Sub LancerNouvelleApplicationExcel()
'Cette macro devra déclarer une variable de type Excel.Application
et ouvrir une nouvelle application.
Dim xlapp As Excel.Application
Set xlapp = New Excel.Application
Dim xlwbk As Workbook
'Un nouveau classeur devra également y être créé
Set xlwbk = xlapp.Workbooks.Add
xlapp.Visible = True
End Sub
'Vous prendrez soin de fermer manuellement cette application. Libre à
vous de créer une procédure dédiée à la fermeture d'application Excel,
passée en paramètre.
Sub FermerApplication(xlapp As Excel.Application)
xlapp.DisplayAlerts = False
xlapp.Quit
End Sub
Exercice 2 : Obtenir les objets actifs
'-----------------------------
' Exercice 2 - Obtenir les objets actifs
'----------------------------- ...Les formules
Exercice 1 : Écriture de formules en français
'Formules Excel
Option Explicit
'-----------------------------
' Exercice 1 - Écriture de formules en français
'-----------------------------
'a. Moyenne des notes
'Créez une macro FormuleMoyenneNotes.
Sub FormuleMoyenneNotes()
'Cette macro écrira dans la cellule F8 une formule MOYENNE des
volumes. Vous devrez utiliser la formule en français (FormulaLocal).
Worksheets("Exercices_Chap_17_Formules").Range("F8")
.FormulaLocal = "=MOYENNE(F2:F7)"
End Sub
'b. Meilleure Note
'Créez une macro FormuleMaximumNotes.
Sub FormuleMaximumNotes()
'Cette macro écrira dans la cellule F9 une formule MAX sur les
notes des étudiants. Vous utiliserez de nouveau la formule en
français (FormulaLocal).
Worksheets("Exercices_Chap_17_Formules").Range("F9").
FormulaLocal = "=MAX(F2:F7)"
End Sub
Exercice 2 : Écriture de formules en anglais
'-----------------------------
' Exercice 2 - Écriture de formules en anglais
'-----------------------------
'a. Nombre de rattrapage
'Créez une macro...Les graphiques
Exercice 1 : Création simple de graphique
'Graphiques Excel
Option Explicit
'-----------------------------
' Exercice 1 - Création simple de graphique
'-----------------------------
'a. Stock mensuel de feuilles
'Créez une macro GraphiqueStocksFeuilles.
Sub GraphiqueStocksFeuilles()
'Cette macro devra créer un nouveau graphique, de type Courbe,
en se basant sur les données situées dans la plage de cellules A1:B5.
'Le graphique doit représenter l'évolution du stock de feuilles
sur la période de janvier 2025 à avril 2025.
Dim cht As Chart
Set cht = Charts.Add
With cht
.ChartType = xlLine 'Type courbe
.SetSourceData Source:=Worksheets
("Exercices_Chap_18_Graphiques").Range("A1:B5") 'source A1:B5
'Le titre du graphique sera Stock mensuel de Feuilles
.HasTitle = True
.ChartTitle.Caption = "Stock mensuel de Feuilles"
'Il...Les formulaires utilisateurs
Cliquez sur le menu Insertion - UserForm.
Dans le volet Propriétés du formulaire, changez la propriété Name à UsfExercice1.
Dans la Boîte à outils sélectionnez l’outil Intitulé puis tracez-le dans le formulaire. Complétez la propriété Caption pour saisir Taille Police de caractères.
Dans la Boîte à outils sélectionnez l’outil Zone de Liste puis tracez-le dans le formulaire.
Dans la Boîte à outils sélectionnez l’outil Case à cocher puis tracez-le dans le formulaire. Dans la propriété Caption saisissez la valeur Appliquer Police.
Dans la Boîte à outils, sélectionnez l’outil Bouton de commande puis tracez-le dans le formulaire.
Modifiez sa propriété Caption à Cliquez-moi.
Double cliquez sur le bouton de commande pour accéder au code associé :
'Formulaires Utilisateurs
Option Explicit
'-----------------------------
' Exercice 1 - Formulaire élémentaire
'-----------------------------
'Créez un formulaire nommé FormulaireExercice1.
'Lorsque l'utilisateur cliquera sur le bouton,
Private Sub CommandButton1_Click()
'le texte contenu dans...Gestion des erreurs et débogage
Exercice 1 : Renforcer vos précédents exercices
'Gestion Erreurs
Option Explicit
'-----------------------------
' Exercice 1 - Renforcer vos précédents exercices
'-----------------------------
'a. Chapitre 5 MsgBox Inputbox Exercice 2a BoiteElementaire :
assurez-vous que l'utilisateur ne saisit pas une valeur numérique
ni une date.
Public Sub MsgBox_InputBox_Exercice2A_Blinde()
'Écrivez une instruction qui va afficher à l'utilisateur le texte
'"Bonjour, comment vous appelez-vous ?" et l'inviter à saisir
son nom.
Dim Reponse As String
Reponse = Application.InputBox("Bonjour, comment vous appelez-vous ?")
If IsNumeric(Reponse) Or IsDate(Reponse) Then
MsgBox "Vous avez saisi une valeur numérique ou une date",
vbCritical + vbOKOnly
Else
MsgBox Reponse
End If
End Sub
'b. Chapitre 11 Chaînes de caractères Exercice TexteEnDate : assurez-vous
que les caractères passés en paramètres permettent une récupération sous
forme de date valide.
'Si ce n'est pas le cas, renvoyer la date du jour
Public Function TexteEnDate_Blinde(ByVal strEntree As String) As Date
'Cette fonction prend en paramètre une chaîne de caractères strEntree,
passée...