Tri et report sur une autre feuille

Bonsoir à tous,

8fichier-test.xlsx (10.34 Ko)

Enseignant utilisateur basique d'Excel, je suis confronté au problème suivant:

En fonction d'un fichier élève d'environ 200 lignes et de 24 colonnes (j'ai créé un fichier test simplifié), j'aimerai que selon la valeur de la colonne "Dys"(soit vide soit 1), toute la ligne soit recopiée dans une deuxième feuille du même classeur, les enregistrements les uns au dessus des autres dans l'ordre d'origine, en sachant que dans la 1° feuille, la valeur 1 peut se trouver dans des enregistrements non contigus....

Ce fichier étant destiné à des personnes qui potentiellement n'utilisent pas excel, le tri puis la copie des enregistrements n'est pas envisageable...

J'ai regardé du coté des TCD mais la manière de structurer le tableau ne pas "sauter aux yeux"

L'idéal serait une (des) formule(s) qui permettrait de pouvoir ré utiliser directement la nouvelle liste des enregistrements...J'ai mis dans la feuille 2 le résultat que je souhaiterai obtenir...

Merci par avance de votre aide, de vos conseils pour une ou des formules que j'essaierai de mettre en application ou de la bonne façon de structurer un TCD ou d'un lien traitant du problème qui aurait échappé à ma recherche

Bonjour à tous,

a part en VBA, tu devras toujours actualiser ton tableau en Feuil2 pour une entrée en feuil1

15fichier-test.xlsx (134.92 Ko)

Crdlmt

Bonjour Phil, bonjour le forum,

Si une solution par VBA t'intéresse :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable Tl (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
OD.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface les aciennes valeurs de l'onglet destination
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 8) = 1 Then 'condition : si la donnée ligne I colonne 8 de TV est égale à 1
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 8, 1 To K) 'redimensionne le tableau des lignes TL (8 lignes, K colonnes)
        For J = 1 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la donnée en colonne J de TV (=> Transposition)
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine liggne de la boucle 1
'si K est supérieure à 1, renvoie le tableau TL transposé dans la cellue A2 redimensionnée de l'onglet OD
If K > 0 Then OD.Range("A2").Resize(K, 8) = Application.Transpose(TL)
End Sub

[Édition]
Bonjour DjiDji, nos posts se sont croisés...

bonjour

une proposition au plus simple sans VBA

tu peux rajouter pléthore d'éleves , fichier pret pour 130 résultats (duplicable pour +)

cordialement

14philsavoie.xlsx (23.15 Ko)

Re,

Génial Tulipe ! Encore un post avec deux solutions avec et sans VBA...

Merci à vous trois pour la rapidité et l'efficacité!

A ThauThème,je dois avouer que le VBA m'est plutôt indigeste ms je vais essayer de le faire fonctionner pour voir si mon allergie est toujours aussi vivace...mais merci

A DjiDji ça va m'aider dans la compréhension des TCD et je vais probablement l'utiliser dans une autre analyse du fichier du coup...

A Tulipe c'est tout à fait ça!! je vais me pencher sur la formule et sa syntaxe en espérant réussir la transposition dans le vrai fichier où j'ai plus de colonnes...

Il se pourrait que je puisse avoir besoin d'un petit coup de pouce supplémentaire... mais merci encore!!!

Bonne soirée et bon weekend.

bonsoir

tu n'as jusqu' a aller dans gestionnaire de nom et modifier source en l'adaptant au nb reel de colonnes

ensuite dans la feuille du resultat tu

saisi en A2 la formule ,tu la valides en Matriciel (Ctrl Maj Entrée en simultané ,,, les{} se mettent (ne pas les saisir ;ça ne marche pas )

tu tires vers la droite sur x colonnes

tu tires vers le bas sur le nb de lignes estimé nessécaire (à la louche)

cordialement

Bonjour à tous,
Une solution Power Query.
La requête est actualisée automatiquement à l'activation de la feuille Dys.
Les données sont sous forme de tableaux structurés (dynamiques).
Cdlt.

7philsavoie.xlsm (26.61 Ko)

Bonsoir à tous

Pour compléter l'offre déjà bien opérationnelle, une solution Power Query.

Bonne soirée !

6fichier-test-2.xlsx (142.64 Ko)

Bonsoir tout le monde,

Juste au cas si aucune autre proposition ne convient

Par formule sans matricielle

Y'a plus cas

Cordialement.

Rechercher des sujets similaires à "tri report feuille"