Pages - Menu

Pages

Manipulation des objets Excel dans VBA - TD 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 
   
 

2 commentaires:

  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
  2. Je suis dans le commerce binaire depuis un certain temps maintenant, et je dois dire que cela va vraiment avec une perte sans la bonne approche et stratégie. J'en suis arrivé au point où je les comprends. Ma plus grande gratitude va à Carlos pour son incroyable stratégie de classe de maître. Je dois dire que cela m'a donné une plate-forme stable, équilibrée et digne de confiance pour mener à bien mon commerce, me donnant ainsi l'opportunité de profiter au maximum du marché. si vous êtes fatigué de la perte, contactez-le (carlose78910@gmail.com) via whatsapp: (+12166263236)

    RépondreSupprimer