Trouver un nom dans un tableau à 2 entrées

Fredgyver

XLDnaute Nouveau
J'ai cherché partout dans les archives du Forum, j'ai décortiqué plein d'exemples dans lesquels j'ai appris à manier INDEX et EQUIV, mais je n'arrive pas à trouver un NOM d'élève dans un tableau qui contient tous les noms d'élève rangés par classe ...
Ci-joint un fichier simplifié, merci d'avance,
Fred. [file name=Frequentation.zip size=16987]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Frequentation.zip[/file]
 

Pièces jointes

  • Frequentation.zip
    16.6 KB · Affichages: 32
  • Frequentation.zip
    16.6 KB · Affichages: 20
  • Frequentation.zip
    16.6 KB · Affichages: 21
N

nono

Guest
salut Fredgyver, le forum,

Bon en fait j'ai résolu ton problème via VB avec la macro suivante que tu mets dans ta feuille '2005-2006' :


Dim a As Byte
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Target.Value = '' Then
Exit Sub
End If
If a = 1 Then
a = 0
Exit Sub
End If
With ActiveCell
.Offset(0, 1).Select
End With

exitHandler:
Application.EnableEvents = True


Dim cel As Range
Dim nbrletr As Integer
'
nbrletr = Len(Range('B4').Value)
For Each cel In Sheets('Listes').Range('A1:AI30')
If Left(cel.Value, nbrletr) = Left(Sheets('2005-2006').Range('B4').Value, nbrletr) Then
a = 1
Sheets('2005-2006').Range('A4').Value = Sheets('Listes').Cells(1, cel.Column).Value
Exit Sub
End If
Next cel
End Sub


Je ne sais pas trop à quoi sert ton activecell.offset mais bon...

Ne te réjouie pas trop tôt, il y a 2 problèmes :
Le 1er est simple, si tu mets tes noms en minuscule, ça ne fonctionne pas donc soit tu les mets toujours en majuscule soit tu rajoute un code pour transformer automatiquement en mujuscule (attention tout de même aux accents)
Le 2ième est que tu as des homonymie !! Bin là, la sollution est qu'il faut que tu rajoutes forcement le prénom, d'une manière ou d'une autre !!!

Voilà, j'espère avoir été clair
A+
 

Monique

Nous a quitté
Repose en paix
Bonjour,

DECALER(Prim;0;SOMMEPROD((Table=A20)*COLONNE(Table))-COLONNE(Prim))

Prim, c'est la 1ère cellule à gauche de ta ligne de titres,
Table, c'est la plage entière contenant les noms, toutes classes confondues
[file name=FrequentationFredgyver.zip size=13494]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/FrequentationFredgyver.zip[/file]
 

Pièces jointes

  • FrequentationFredgyver.zip
    13.2 KB · Affichages: 28

Gael

XLDnaute Barbatruc
Bonsoir Fredgyver, bonsoir nono, bonsoir monique,

J'avais bien entendu oublié cette façon d'utiliser Sommeprod qui répond parfaitement à la question. Merci monique de me l'avoir rappelée mais il faudrait que ça devienne un réflexe.

Je te propose par contre une logique différente pour ton fichier:

J'ai créé une liste complète des étudiants sur une nouvelle feuille avec leur formation.

la feuille liste est toujours là mais le classement est fait automatiquement par formules à partir de la liste complète.

Pour la recherche 1ère méthode, les formations sont choisies à partir de la liste 'Classe' et j'ai créé une liste 'Eleves' qui donne la liste des élèves correspondant à la classe (j'ai supprimé toutes les autres listes par classes).

La recherche 2ème méthode (par élève) se résume à un simple index Equiv.

@+

Gael [file name=Frequentation_20051109200720.zip size=16987]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Frequentation_20051109200720.zip[/file]
 

Pièces jointes

  • Frequentation_20051109200720.zip
    16.6 KB · Affichages: 20

Fredgyver

XLDnaute Nouveau
Gael écrit:
Je te propose par contre une logique différente pour ton fichier:

J'ai créé une liste complète des étudiants sur une nouvelle feuille avec leur formation.

la feuille liste est toujours là mais le classement est fait automatiquement par formules à partir de la liste complète.

(...)

Ton approche me plait bcp, j'avais également pensé à cette solution, mais je n'étais pas allé jusqu'au bout !

Malheureusement, le fichier joint ne correspond pas à la description que tu en fais :eek:

Peux-tu vérifier et le reposter stp ?

Merci d'avance et encore merci Gael, Monique et Nono pour votre rapidité et votre efficacité ...

Fred
 

Gael

XLDnaute Barbatruc
Rebonsoir à tous,

Désolé, je t'ai renvoyé l'original.

Voici le nouveau fichier.

@+

Gael [file name=Frequentation_V1.zip size=37838]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Frequentation_V1.zip[/file]
 

Pièces jointes

  • Frequentation_V1.zip
    37 KB · Affichages: 25

Fredgyver

XLDnaute Nouveau
Cette fois c'est la bonne !

En-effet, ça fonctionne parfaitement ... je vais comparer avec la solution de Monique et voir à l'usage celle qui est la plus adaptée !

Gael écrit:
J'ai créé une liste complète des étudiants sur une nouvelle feuille avec leur formation.

la feuille liste est toujours là mais le classement est fait automatiquement par formules à partir de la liste complète.

Toutefois, comme la liste des élèves évolue en + ou en - au cours de l'année scoalire, il faudrait que la liste que tu as créé soit dynamique ... et comme je n'ai pas trouvé trace de la formule que tu as utilisé, je suis bloqué !
Peux-tu me donner des détails sur la procédure que tu as utilisé stp ?

Merci d'avance,
cordialement, Fred
 

Gael

XLDnaute Barbatruc
Bonjour FredGyver,

Ci-joint le fichier modifié avec des plages variables pour les noms et formations.

La plage Eleves s'ajuste automatiquement au nombre d'élves pour la formation demandée.

Elles sont définies comme suit:

Listnom =DECALER(Elèves!$A$2;;;NBVAL(Elèves!$A:$A)-1)
Listform =DECALER(Elèves!$B$2;;;NBVAL(Elèves!$B:$B)-1)
Eleves =DECALER(Listes!$A$1;1;EQUIV('2005-2006'!$A8;Classes;0)-1;NB.SI(Listform;'2005-2006'!$A8))

La plage Eleves remplace en fait toutes les plages que tu avais définies pour chaque formation, les listes de validation font toujours référence à la plage Eleves.

@+

Gael [file name=Frequentation_V2.zip size=38140]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Frequentation_V2.zip[/file]
 

Pièces jointes

  • Frequentation_V2.zip
    37.2 KB · Affichages: 24

Fredgyver

XLDnaute Nouveau
Bonjour Gael,

merci pour le super boulot ...

Il va me faloir du temps pour décomposer tes formules et comprendre qui fait quoi !

Gael écrit:
La plage Eleves s'ajuste automatiquement au nombre d'élèves pour la formation demandée.

Le problème est que si je rajoute un nom d'élève dans une des colonnes de mes classes, j'efface la formule de matrice ... comment je dois faire ?

Merci d'avance,
Fred
 

Gael

XLDnaute Barbatruc
Bonsoir Fred, le Forum,

Fred, en fait il ne faut pas toucher aux élèves dans la feuille 'Liste' qui contient les formules car ces formules sont destinées à réaliser un classement automatique à partir de la feuille Elèves.

Si tu dois rajouter un élève, tu le mets sur la nouvelle feuille ('Elèves') à la fin de la liste avec sa formation. Il sera automatiquement ajouté dans la feuille Liste et classé dans la formation correspondante.

De même, si dans la feuille '2005-2006' tu sélectionnes la formation de ce nouvel élève, il sera aussi présent dans la liste proposée dans la colonne Elève (la Plage 'Eleves' est aussi variable).

Si un élève change de formation (on ne sait jamais), il suffit de changer sa formation dans la feuille Elèves.

La liste de la feuille Elèves peut être triée sans problème par nom ou par formation sans que cela n'ait aucune incidence sur le reste (sauf que la liste complète des noms apparaîtra dans l'ordre du tri).

Améliorations à apporter:

* rendre la plage 'Classes' variable au cas où tu rajouterai une nouvelle formation.

* dans la feuille Elèves, il serait préférable de mettre la liste Classes comme validation de saisie pour éviter une faute de frappe dans la saisie d'une formation (au cas ou une erreur de saisie ait été faite dans la formation, l'élève concerné n'appraîtra pas dans la feuille 'liste').

Pour rajouter une nouvelle formation, il faut mettre l'en-tête de la formation dans une nouvelle colonne de la feuille 'Liste', faire un copier/coller des lignes 2 à 30 de la colonne précédente dans la nouvelle colonne (si des élèves ont déjà été affectés à cette nouvelle formation, ils apparaissent automatiquement) puis modifier la plage 'Classes' (si elle n'a pas été redéfinie en variable) pour intégrer la nouvelle colonne.

@+

Gael
 
C

Claude

Guest
Bonjour Gael,Fred le Forum,

Merci Gael pour ta formule sur la feuille liste tu me fais gagner 2 colonnes par catégorie sur un tableau similaire que j'utilise.
Pour que le tri sur le nom ou la formation de la feuille élèves en cas de rajout fonctionne correctement il faut que Fred insere une ligne vide entre l'intitulé et la liste des élèves.
Et dans les formules sur la feuille liste, transformé

ligne(listenom)-1) en ligne(listenom)-2)

Bonne journée
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Une variante.
Dans la feuille 'Listes',
une formule moins longue qui n'a pas besoin d'être mise au conditionnel.

La liste des classes peut aussi être obtenue par formule.

Les 2 formules sont nommées.
Une fois nommées, pas besoin de les valider par ctrl, maj et entrée.
[file name=FrequentationV3.zip size=24305]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/FrequentationV3.zip[/file]
 

Pièces jointes

  • FrequentationV3.zip
    23.7 KB · Affichages: 36
C

Claude

Guest
Bonjour Monique,le Forum,

Je te remercie pour ton complément de formule.
Cela m'amène à une autre question.Dans mon tableau j'utilise deux colonnes D et E, celle-ci me donne le nom des catégories classées.
Pour les retranscrire sur la ligne 1 en horizontale je le fait par un copier coller par si(.... Mais il faut bien se souvenir à changer les références de la ligne reporter dans chaque colonne, dans le cas d'agrandissement du tableau.
Il y a pas mal de temps que je cale sur la question.S'il y avait une autre façon d'opérer.

D'avance merci [file name=triliste.zip size=23007]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/triliste.zip[/file]
 

Pièces jointes

  • triliste.zip
    22.5 KB · Affichages: 21
  • triliste.zip
    22.5 KB · Affichages: 17
  • triliste.zip
    22.5 KB · Affichages: 21

Discussions similaires