TP VBA Objet Excel 2007 Exercice Corrigé VBA EXCEL 2007
Classeur : NOTEELEVE.XLSX
1) Ouvrez un nouveau classeur et enregistrez le sous le nom NOTEELEVE.XLSX
2) Nommez la feuille Feuil1 en « Notes »
1) Ouvrez un nouveau classeur et enregistrez le sous le nom NOTEELEVE.XLSX
2) Nommez la feuille Feuil1 en « Notes »
4) Créez une procédure VBA nommé TitreColonne dont l’objectif est d’obtenir ceci :
Les titres de colonnes sont en gras
1) On veut maintenant générer des notes aléatoires (fonction Rnd) comprises entre 1 et 20. L’utilisateur est invité à saisir un nombre d’élèves compris entre 1 et 30. Le programme doit par ailleurs contrôler le nombre saisi par l’utilisateur.
L’algorithme est le suivant :
VARIABLES :
Classeur : Objet Classeur
Feuille : Objet Feuille
NbNotes : Entier
i,j : Entier
PROCEDURE GénérerNotes()
Classeur<-Classeur actif
Feuille<-Feuille « Notes »
NbNotes<-0
Effacer Plage de cellules B2 :I31
TANT QUE NbNotes <1 OU NbNotes>30
SAISIR(« Combien de notes voulez vous ? saisissez un nombre entre 1 et 30 »,NbNotes)
FIN TANT QUE
POUR I :=1 JUSQU'A NbNotes
POUR J :=2 TO 9
Cellule(i,j) <- ENT(RND*20)
FIN POUR
FIN POUR
FIN PROCEDURE
Activité :
a) Créez en VBA la procédure correspondant à cet algorithme.
b) Dans la cellule A1 de la feuille Notes, créez un bouton de commande et affectez-lui la macro « GénérerNotes ». Tester la macro en saisissant successivement différentes valeurs (par exemple 0, 20 ou 40)
Correction
-------------------------------------------------------------------------------------------------------
Insérer ces deux procédures :
Procédure pour insérer l'entête du tableau :
Public Sub TitreColonne()
Dim Classeur As Workbook
Dim Feuille As Worksheet
Set Classeur = Application.ActiveWorkbook
Set Feuille = Classeur.Sheets("Notes")
For i = 1 To 8
Feuille.Range(Cells(1, i + 1), Cells(1, i + 1)).Value = "Note " & CStr(i)
Next
Feuille.Range("B1:I1").Font.Bold = True
End Sub
Dim Classeur As Workbook
Dim Feuille As Worksheet
Set Classeur = Application.ActiveWorkbook
Set Feuille = Classeur.Sheets("Notes")
For i = 1 To 8
Feuille.Range(Cells(1, i + 1), Cells(1, i + 1)).Value = "Note " & CStr(i)
Next
Feuille.Range("B1:I1").Font.Bold = True
End Sub
Procédure pour Générer les notes :
Public Sub GénérerNotes()
Dim Classeur As Workbook
Dim Feuille As Worksheet
Dim NbNotes As Integer
Dim i, j As Integer
Set Classeur = Application.ActiveWorkbook
Set Feuille = Classeur.Sheets("Notes")
NbNotes = 0
Feuille.Range("B2:B32").Clear
While NbNotes < 1 Or NbNotes > 31
NbNotes = InputBox("Combien de notes voulez vous ? saisissez un nombre entre 1 et 30")
Wend
For i = 1 To NbNotes
For j = 2 To 9
Feuille.Cells(i + 1, j) = Int(Rnd * 20)
Next j
Next i
End Sub
Dim Classeur As Workbook
Dim Feuille As Worksheet
Dim NbNotes As Integer
Dim i, j As Integer
Set Classeur = Application.ActiveWorkbook
Set Feuille = Classeur.Sheets("Notes")
NbNotes = 0
Feuille.Range("B2:B32").Clear
While NbNotes < 1 Or NbNotes > 31
NbNotes = InputBox("Combien de notes voulez vous ? saisissez un nombre entre 1 et 30")
Wend
For i = 1 To NbNotes
For j = 2 To 9
Feuille.Cells(i + 1, j) = Int(Rnd * 20)
Next j
Next i
End Sub
a) Dans la cellule A1 de la feuille Notes, créez un bouton de commande et affectez-lui la macro « GénérerNotes ». Tester la macro en saisissant successivement différentes valeurs (par exemple 0, 20 ou 40)
Résultat Final après click sur les deux boutons
Il y a une erreur dans la solution.
RépondreSupprimerCe n'est pas :
Feuille.Range("B2:B32").Clear
Mais
Feuille.Range("B2:I32").Clear