Listes automatiques dans les feuilles

Bonjour,

Chaque année je dois produire des listes de classes dans un fichier Excel.

Composé de :

  • Classe
  • Nom de la personne
  • Identifiant
  • E-mail

Composition du fichier :

  • Feuille "Toutes" : contient toutes les données citées ci-dessus
  • 1 feuille par classe (A1, A2, A3,...)

Jusqu'à maintenant je faisais du copier-coller, en triant pas ordre alphabétique les classes, copier toutes les lignes de la classe A1, coller dans la feuille A1. Puis A2, A3,... C'est assez long et j'aimerai automatiser cela.

Ce qui fonctionne, c'est d'afficher la liste complète disponible dans la feuille Toutes, avec une formule du type :

=Toutes!A2

A adapter à chaque colonne/ligne, puis filtrer les résultats pour la colonne classe. Ca fonctionne, mais reste assez basique.

J'aimerai donc une fonction me permettant d'afficher que les personnes de la classe A1 dans la feuille A1, pareil pour les feuilles A2, A3,... En ne devant faire aucune modification/sélection dans les différentes feuilles. Pour ne devoir que coller la liste complète dans la feuille Toutes chaque année et....c'est tout.

Comment faire cela (si j'ai été assez clair) ?

Merci d'avance.

Bonjour,

Un fichier test, avec ta feuille "toutes" et une feuille vierge a1 serait le bienvenu !

pour que les personnes de a1 (toutes) se retrouvent en feuille A1

Crdmt

Voilà un fichier d'exemple :

9test.xlsx (116.68 Ko)

Cela fonctionne plus ou moins, avec des retouches à chaque changement, dans chaque feuille à cause des filtres.

Et le document et assez lourd à la fin, environ 20MB. Car la liste contient habituellement 700 noms et 45 feuilles.

Comme la liste complète est dans chaque feuille et qu'ensuite c'est un filtre qui tri, cela explique le poids.

Dans le fichier d'exemple, j'ai anonymisé les champs et réduit le nombre de lignes/feuilles.

bonjour

un essai au plus simple (hors VBA)

21fripix.xlsx (35.43 Ko)

cordialement

Bonjour,

Avec le meme resultat (heureusement)

il suffit de copier la feuille a1, de changer son nom, et elle se met a jour

21test-v-autre.xlsx (63.65 Ko)

Parfait, merci !

J'ai utilisé la formule de DjiDji59430.

Une question à ce sujet, mon fichier fonctionne bien, par contre lorsque je fais dans changements dans la feuille Toutes (changement de la classe, suppression de ligne ou simplement suppression de toutes les données de la feuille Toutes), les autres feuilles (qui ont la formule en question) ne se mettre pas à jour.

L'exemple le plus parlant est la suppression des données de la feuilles Toutes.

Les données dans les autres feuilles restent, Y a-t-il un moyen de forcer la mise à jour ?

re

non, ce n'est pas possible.

Mais peut etre n'attends tu pas assez longtemps .

D'autre part , des matricielles sur des colonnes, c'est penalisant au niveau du temps d'execution

Il vaudrait mieux remplacer le b:b, ou a:a par $b2:$b300, par exemple a:a par $a$1:$a$299

11test-v-autre-2.xlsx (66.24 Ko)

C'est effectivement ça le problème, la mise à jour prenait trop de temps. En limitant la plage comme tu le proposes, c'est bien plus rapide.

Dernier petite soucis, dans chaque liste il me manque une personne. Si je devrait avoir 25 personnes dans une liste, il n'y en a que 24.

La formule utilisée (pour la classe 1A) :

=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1A");"";DECALER(entete;EQUIV("1A";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1A")))

RE

Il fallait agrandir le tableau de toutes

18test-v-autre-3.xlsx (68.53 Ko)

Je viens de me rendre compte que j'ai utilisé la formule de tulipe_4, contrairement à ce que j'ai dit précédemment, mais tu as tout même répondu à mes questions.

Cependant le fait d'agrandir le tableau dans "Toutes" ne règle pas mon dernier problème. Le nombre de résultat affichés dans les listes est à chaque fois -1 (24 élèves au lieu de 25. 18 au lieu de 19). Je ne trouve pas quelle variable modifier pour avoir des listes complètes.

Bonjour,

Je reviens avec mon souci dans mes listes, n'ayant pas trouvé de solution.

J'ai donc une feuille Toutes qui contient la liste complète (toutes les personnes), puis 1 feuille par classe.

Les formules dans les feuilles des classes (1A, 1B, 1C,...):

=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1A");"";DECALER(entete;EQUIV("1A";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1A")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1B");"";DECALER(entete;EQUIV("1B";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1B")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1C");"";DECALER(entete;EQUIV("1C";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1C")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1D");"";DECALER(entete;EQUIV("1D";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1D")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1E");"";DECALER(entete;EQUIV("1E";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1E")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1F");"";DECALER(entete;EQUIV("1F";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1F")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1G");"";DECALER(entete;EQUIV("1G";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1G")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1H");"";DECALER(entete;EQUIV("1H";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1H")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1I");"";DECALER(entete;EQUIV("1I";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1I")))
=SI(LIGNE()>NB.SI(Toutes!$A$1:$A$650;"1J");"";DECALER(entete;EQUIV("1J";Toutes!$A$1:$A$650;0)-1;;NB.SI(Toutes!$A$1:$A$650;"1J")))

Cela fonctione bien à un détail prêt, dans chaque feuille, il me manque une personne. Pour la 1A je devrai en avoir 18 et il y en a que 17 dans la liste.

Pour la 1B il devrait y en avoir 22 et j'en ai 21. Et ainsi de suite.

Que modifier dans les formules pour que ça fonctionne ?

Bonjour,

pas trouvé l'erreur dans la formule mais si bcp de données tu peux passer par VBA

P.

5fripix.xlsm (24.41 Ko)

Merci, mais j'aimerai éviter les macros, pour en rester au formules

Je pense que l'erreur se situe vers le -1. Une autre variable de la fonction DECALER prend par défaut la valeur de la référence (pour la hauteur prise en compte. Je n'arrive malheureusement pas à faire en sorte de définir une autre valeur, comme +0 ou -0, pour que le -1 ne soit pas utilisé par défaut.

Pour illustrer mon problème, après anonymisation des données, voici le fichier :

12exemple.xlsx (214.80 Ko)

Par exemple pour la classe 1A je devrait avoir les personnes jusqu'à Dupont 25 et je n'ai que jusqu'à Dupont 24.

Bonjour,

toujours pas de solution de mon côté ( suis très moyen en VBA mais encore moins bon en formule), mais comme indiqué plus tôt, c'est très très lent et pénalisant ta manière de faire avec cette formule... et j'ai un PC très récent avec 24Gg de Ram

P.

Si cela fonctionne mais n'est pas très rapide (ce n'est pas aussi lent chez moi que cela semble être le cas chez toi), ce n'est pas un problème, cette liste est générée une fois par année, puis je fais un copier-coller du tout pour supprimer les formules avant de transmettre le fichier.

Perso, je suivrai le fil mais je ne sais pas corriger ta formule et je dois partir, dsl

Il y a bcp de spécialistes ici qui trouveront le pourquoi de la chose

P.

bonjour

ah ouai ...... ce n'est qu'une histoire d'intervale ( niveau cm2)

4fripixcorrige.xlsx (168.37 Ko)

cordialement

Rechercher des sujets similaires à "listes automatiques feuilles"