[EXCEL] trier vers des tableaux (création)

dom -  
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je vous expose mon petit soucis. J'ai un tableau excel (encore un) de la forme :

NOM | Prénom | inscrit truc1 | inscrit truc2 |......|inscrit truc150
toto | roger | Vrai | | |Vrai

Bref, avec une cellule vide par truc où la personne n'est pas inscrite, et non vide si elle est inscrite.

Il faut que je crée un fichier pour chaque truc, avec les noms et prénoms de chaque personne inscrite dedans.

Là, je crois qu'il faudra passer par une macro...

Si vous avez une idée ou un début de macro fait pour ca, ca m'aiderait beaucoup

merci beaucoup.
A voir également:

3 réponses

xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
ton tableau est une feuille Excel ???????
ou déjà un tableau croisé dynamique ?
0
dom
 
Une simple feuille dans laquelle tout a été saisi par le secrétariat.

Simplement quend je récupère ca, j'en ai à chaque fois pour la journée à faire des filtre/copier/collé pour récupérer les listes des inscrits aux 150 trucs...
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

Voici une macro qui devrait te donner satisfaction.

Pour chaque colonne d'inscription, elle crée une feuille,
du nom de ta colonne et tu peux relancer
car après elle fonctionne aussi en mise à jour.

Tu copies la macro ci-dessous dans le code VBA de ta feuille,
puis tu l'exécutes et tu as tes sélections dans chaque feuille crée.

Public i As Integer 'inscrit
Public k As Integer 'colonne
Public f As Integer 'feuille
Public l As Integer 'ligne
Public p As Integer 'present
Option Explicit
Public Sub extrac()
For k = Cells(1, 256).End(xlToLeft).Column To 3 Step -1
p = 0
For f = 1 To Sheets.Count
If Cells(1, k).Value = Sheets(f).Name Then
p = 1 'la feuille existe
Exit For
End If
Next f
If p = 0 Then 'création feuille
Sheets.Add(, Sheets(1)).Name = Cells(1, k).Value
Sheets(1).Activate
Else 'initialisation feuille
Sheets(f).Cells(1, 1).Resize(65356, 2).ClearContents
End If
i = 0 'sélection d'une colonne
For l = 2 To Cells(65356, 1).End(xlUp).Row
If Not Cells(l, k).Value = "" Then
i = i + 1
Sheets(Cells(1, k).Value).Cells(i, 1).Value = Cells(l, 1).Value
Sheets(Cells(1, k).Value).Cells(i, 2).Value = Cells(l, 2).Value
End If
Next l
Next k
End Sub


un classeur de test est ici : https://www.cjoint.com/?bxjdgDOZRG

Si c'est vraiment un classeur à créer, c'est possible aussi,
il suffit de demander...
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

Pas de nouvelles pour ma solution ?
0