XL 2016 Génération de Listes

  • Initiateur de la discussion Initiateur de la discussion Matalex
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
812
Retour