Pages

Pages - Menu

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 »
3)    Ouvrez l’éditeur de VBA, insérez un nouveau module
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
-------------------------------------------------------------------------------------------------------

Lancez MS Excel 2007 puis Nommer la feuille 1 puis lancer Visual Basic pour créer les procédures : 
  



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

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
       

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 
   
 

1 commentaire:

  1. Il y a une erreur dans la solution.
    Ce n'est pas :
    Feuille.Range("B2:B32").Clear
    Mais
    Feuille.Range("B2:I32").Clear

    RépondreSupprimer