Langage VBA boucles
kokola12
Messages postés
1
Statut
Membre
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -


Créer une macro-commande permettant
? de parcourir la feuille Absences afin d'extraire les absents de chacune des séances. Si l'étudiant est absent alors recopier son nom et son prénom sur la feuille de la séance correspondante en colonne A pour le nom et B pour le prénom à partir de la ligne 2
? de compter le nombre d'absents à la séance
? d'inscrire ce nombre et la séance en ligne 1 de chacune des feuilles séances
A noter :
Toutes les feuilles des séances correspondant aux différentes séances existent
Le nombre d'étudiants varie chaque année. La macro-commande doit en tenir compte
Le tableau des absences de la feuille Absences est une base de données au sens informatique du terme (aucune colonne et aucune ligne entièrement vide)
? Associer un bouton à cette macro-commande. Ce bouton doit être placé sur la feuille Absences en O10
Pour l'instant j'arrive à ça :
Sub absence()
Dim i, j
Sheets("S1").Cells(1, 1) = Nom
Sheets("S1").Cells(1, 2) = Prénom
Sheets("Absences").Select
j = 2
For i = 1 To 50
If Not IsEmpty(Cells(i, "C")) Then
j = j + 1
Sheets("S1").Cells(j, "A") = Sheets("Absences").Cells(i, "A")
Sheets("S1").Cells(j, "B") = Sheets("Absences").Cells(i, "B")
End If
Next i
End Sub
Si quelqu'un avait la gentillesse de m'aider :(
Merci beaucoup !
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
1 réponse
-
Bonjour,
1 - **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
2 - Le code devrait ressembler à un truc du genre je pense :Sub absence() Dim Absences As Worksheet Dim oSh As Worksheet Dim l As Long Dim c As Long Dim RowToCopy As Long Dim Seance As String Dim lastCol As Long Dim NbAbs As Long 'Nombre d'absents NbAbs = 0 Set Absences = ThisWorkbook.Sheets("Absences") 'Dernière ligne du tableau Absences LastR = Absences.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1 lastCol = Absences.Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column 'On boucle sur les colonnes de la feuille Absence For c = 3 To lastCol '(colonnes S1 S2 ...) Seance = Absences.Cells(1, c).Value Set oSh = ThisWorkbook.Sheets(Seance) 'On boucle sur les lignes de la feuille Absences For l = 2 To LastR ' On récupère le nom de la séance (ligne 1 colonne...x ) If Not IsEmpty(Absences.Cells(l, c).Value) Then 'premiere ligne vide de la feuille de séance RowsToCopy = oSh.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1 'on copie le nom / prenom oSh.Cells(RowToCopy, "A").Value = Absences.Cells(l, "A").Value oSh.Cells(RowToCopy, "B").Value = Absences.Cells(l, "B").Value NbAbs = NbAbs + 1 End If Next MsgBox "Il y a " & NbAbs & " absents dans la séance " & Seance Next End Sub