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

dom -  
gbinforme Messages postés 14930 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.
Configuration: Windows 2000
Firefox 2.0.0.1

3 réponses

  1. 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
    1. 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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Pas de nouvelles pour ma solution ?
    0