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 module1) 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
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