Langage VBA boucles

Fermé
kokola12 Messages postés 1 Date d'inscription mercredi 6 mai 2015 Statut Membre Dernière intervention 6 mai 2015 - Modifié par jordane45 le 6/05/2015 à 13:03
jordane45 Messages postés 38393 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 janvier 2025 - 6 mai 2015 à 13:06
Bonjour, je révise pour mon partiel d'info, et j'ai énormément de mal à faire cet exercice. Voici la consigne :

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.
.
A voir également:

1 réponse

jordane45 Messages postés 38393 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 janvier 2025 4 731
6 mai 2015 à 13:06
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

0