XL 2016 Génération de Listes

Matalex

XLDnaute Nouveau
Bonjour,

Je ne sais pas comment programmer une macro qui pourrait, à partir d'un feuille qui regroupe plusieurs informations, générer des listes d'élèves présent et selon leur affectation.
Je vous laisse voir le fichier joint.

Il serait formidable si ces listes pouvaient se mettre à jour à chaque modification de la feuille "datas"

J'ai pense à "For Each Cell..." mais je ne vois pas comment m'y prendre...

Merci d'avance pour votre aide et vos conseils éclairés!
 

Pièces jointes

  • liste et affectations.xlsx
    12.4 KB · Affichages: 5
Solution
Bonjour Matalex, Djidji,
En VBA avec :
VB:
Sub Worksheet_Activate()
    Dim tablo, Lcap%, Ldnb%, Lbac%, Langlais%, i%, Ligne%, Colonne%, Matière
    [A3:L1000].ClearContents
    Application.ScreenUpdating = False
    tablo = Sheets("Datas").[A1].CurrentRegion
    Lcap = 2: Ldnb = 2: Lbac = 2: Langlais = 2 ' Init des pointeur d'écriture pour chaque matière
    For i = 2 To UBound(tablo)
        If tablo(i, 1) = "O" Then   ' Si présent
            Matière = UCase(Right(Trim(tablo(i, 7)), 3))
            Select Case Matière
                Case "CAP": Colonne = 1: Lcap = Lcap + 1: Ligne = Lcap
                Case "DNB": Colonne = 4: Ldnb = Ldnb + 1: Ligne = Ldnb
                Case "BAC": Colonne = 7: Lbac = Lbac + 1: Ligne = Lbac...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Matalex, Djidji,
En VBA avec :
VB:
Sub Worksheet_Activate()
    Dim tablo, Lcap%, Ldnb%, Lbac%, Langlais%, i%, Ligne%, Colonne%, Matière
    [A3:L1000].ClearContents
    Application.ScreenUpdating = False
    tablo = Sheets("Datas").[A1].CurrentRegion
    Lcap = 2: Ldnb = 2: Lbac = 2: Langlais = 2 ' Init des pointeur d'écriture pour chaque matière
    For i = 2 To UBound(tablo)
        If tablo(i, 1) = "O" Then   ' Si présent
            Matière = UCase(Right(Trim(tablo(i, 7)), 3))
            Select Case Matière
                Case "CAP": Colonne = 1: Lcap = Lcap + 1: Ligne = Lcap
                Case "DNB": Colonne = 4: Ldnb = Ldnb + 1: Ligne = Ldnb
                Case "BAC": Colonne = 7: Lbac = Lbac + 1: Ligne = Lbac
                Case "AIS": Colonne = 10: Langlais = Langlais + 1: Ligne = Langlais
                Case Else: Colonne = 0
            End Select
            If Colonne <> 0 Then
                Cells(Ligne, Colonne + 0) = tablo(i, 4)
                Cells(Ligne, Colonne + 1) = tablo(i, 5)
                Cells(Ligne, Colonne + 2) = tablo(i, 6)
            End If
        End If
    Next i
End Sub
C'est automatique quand on sélectionne la feuille "Listes"
Comme ça vous avez le choix.:)
 

Pièces jointes

  • liste et affectations.xlsm
    20.9 KB · Affichages: 5

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 185
dernier inscrit
salhit