Langage VBA boucles
kokola12
Messages postés
1
Statut
Membre
-
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40050 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.
.
A voir également:
- Langage VBA boucles
- Langage ascii - Guide
- Langage binaire - Guide
- Excel compter cellule couleur sans vba - Guide
- Langage visual basic - Télécharger - Langages
- Find vba - Astuces et Solutions
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 :
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