Liste des admis

koadima

XLDnaute Junior
Bonsoir chers tous
Je sollicite votre aide pour realiser la liste des admis de mes eleves.
Dans un classeur, soit 2feuilles. La premiere contient la liste des eleves et leurs notes de composition avec rang et mention(admis, non admis).
Je souhaite en feuille2 generer uniquement la liste de admis au fur et a mesure de la saisie.
Aidez moi.
Merci
 

job75

XLDnaute Barbatruc
Bonsoir koadima,

Une solution VBA dans le fichier joint.

Clic droit sur l'onglet de la 1ère feuille => Visualiser le code et collez cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim colAdmis, tablo, i&, n&
colAdmis = 7 'colonne G, à adapter
tablo = [A1].CurrentRegion.Resize(, colAdmis) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    If LCase(tablo(i, colAdmis)) = "admis" Then n = n + 1: tablo(n, 1) = tablo(i, 1)
Next
With Sheets("Admis").[A2] 'à adapter
    If n Then .Resize(n) = tablo
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
Bonne nuit.
 

Pièces jointes

  • Admis VBA(1).xlsm
    21.2 KB · Affichages: 16

job75

XLDnaute Barbatruc
Avant d'aller au lit, une solution par formules matricielles, entrez en A2 de la feuille "Admis" :
Code:
=SIERREUR(INDEX(Notes!A:A;PETITE.VALEUR(SI(Notes!G$2:G$100="Admis";LIGNE(Notes!G$2:G$100));LIGNES(A$2:A2)));"")
à valider par Ctrl+Maj+Entrée et tirer vers le bas.

La limite 100 est à augmenter si nécessaire.
 

Pièces jointes

  • Admis formules(1).xlsx
    17.9 KB · Affichages: 13

koadima

XLDnaute Junior
Merci
Bonsoir koadima,

Une solution VBA dans le fichier joint.

Clic droit sur l'onglet de la 1ère feuille => Visualiser le code et collez cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim colAdmis, tablo, i&, n&
colAdmis = 7 'colonne G, à adapter
tablo = [A1].CurrentRegion.Resize(, colAdmis) 'matrice, plus rapide
For i = 2 To UBound(tablo)
    If LCase(tablo(i, colAdmis)) = "admis" Then n = n + 1: tablo(n, 1) = tablo(i, 1)
Next
With Sheets("Admis").[A2] 'à adapter
    If n Then .Resize(n) = tablo
    .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
End Sub
Bonne nuit.

Bonsoir
J'ai tenté mais je n'y arrive pas. Ma connaissance en VBA est moyenâgeuse.
Comment le faire? Je souhaite que les colonnes en feuille2 se mettent a jour au cours de la saisie
Voici mon fichier
 

koadima

XLDnaute Junior
Avant d'aller au lit, une solution par formules matricielles, entrez en A2 de la feuille "Admis" :
Code:
=SIERREUR(INDEX(Notes!A:A;PETITE.VALEUR(SI(Notes!G$2:G$100="Admis";LIGNE(Notes!G$2:G$100));LIGNES(A$2:A2)));"")
à valider par Ctrl+Maj+Entrée et tirer vers le bas.

La limite 100 est à augmenter si nécessaire.
Bonsoir
J'ai fait une adaptation qui donne mais je n'arrive pas a renseigner les autres colonnes
Aidez moi avec mon fichier afin que toutes les colonnes soient automatiquement renseignés
 
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Bonsoir koadima,

Vous vous êtes enfin décidé à joindre un fichier pour préciser le problème.

Il suffit d'utiliser le filtre avancé avec cette macro dans le code de la 2ème feuille :
VB:
Private Sub Worksheet_Activate()
[I6] = "Mention": [I7] = "Admis" 'critère
Feuil1.ListObjects(1).Range.AdvancedFilter xlFilterCopy, [I6:I7], [A7:G7] 'filtre avancé
End Sub
Elle s'exécute quand on active la feuille.

A+
 

Discussions similaires

Réponses
18
Affichages
663

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll