Créations de groupes en tableaux à partir d'une liste

Bonjour à tout !

Etant encadrant dans un club de ski, il m'est nécessaire, avant chaque sortie, de répartir les adhérents dans un, deux, voire trois bus différents en fonction du nombre d'inscrits à ladite sortie.

Le problème, c'est qu'il m'est nécessaire de créer à chaque fois des tableaux (que je fais sur word) afin de les afficher pour que chacun puisse connaître le bus dans le quel il doit monter. Or, en raison du grand nombre de personnes, cette tâche est assez fastidieuse et doit absolument être exempte de tout erreur.

D'où ma demande.

Dans l'idéal, je souhaiterais créer un classeur regroupant plusieurs feuilles de calcul.

  • La première, avec le nom des adhérents, leur âge, leur catégorie (adulte, ado, enfant), et une dernière colonne contenant une liste déroulante proposant 'Non inscrit' et 'Inscrit' (avec 'Non inscrit' en valeur par défaut). Jusqu'ici, tout va bien.
  • La deuxième feuille de calcul devrait être le tableau des membres inscrits uniquement. Ce tableau serait donc généré automatiquement avec les choix effectués sur a première feuille de calcul. Et c'est là que je coince. Je n'arrive pas à faire ça. Une formule ? Une macro peut-être ? Cette deuxième feuille de calcul servirait à triller les inscrits entre les différents bus.
  • Enfin, trois autres feuilles de calcul, une pour chaque bus potentiel, ne contenant chacune que la liste des adhérents inscrits dans le bus correspondant.
Merci par avance de votre aide !

Bonjour 1dri53 et

  • La deuxième feuille de calcul devrait être le tableau des membres inscrits uniquement. Ce tableau serait donc généré automatiquement avec les choix effectués sur a première feuille de calcul. Et c'est là que je coince. Je n'arrive pas à faire ça. Une formule ? Une macro peut-être ? Cette deuxième feuille de calcul servirait à triller les inscrits entre les différents bus.
  • Enfin, trois autres feuilles de calcul, une pour chaque bus potentiel, ne contenant chacune que la liste des adhérents inscrits dans le bus correspondant.

Une façon simple et rapide de le faire = filtres élaborés, que l'on peut automatiser avec une macro également très simple.

Je vais rechercher une exemple ... mais ce ne sera pas des bus !

Merci pour votre réponse rapide.

Oui, bien évidemment, peu importe le fait qu'il s'agisse où non de bus

Tout ce que je veux c'est comprendre comment ça marche

Mon exemple c'est bien sûr n'importe quoi !!

Mais aligne bien les en-têtes de colonnes pour avoir le résultat.

Le problème est l'initialisation, il faudrait neutraliser les macros en démasquant l' exit sub !

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' Exit Sub ' à démaquer le temps de la mise en place des onglets
    If Sh.Name <> "data" Then filtrer Sh
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' Exit Sub ' à démaquer le temps de la mise en place des onglets
    If Sh.Name <> "data" And Intersect(Target, Sh.Range("A1").CurrentRegion) Is Nothing Then filtrer Sh
End Sub

Private Sub filtrer(ByVal Sh As Object)
    Application.DisplayAlerts = False
    Sheets("data").Range("donnees[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sh.Range("A1").CurrentRegion, CopyToRange:=Sh.Range("A4").CurrentRegion, Unique:=False
    Application.DisplayAlerts = True
End Sub

Le fonctionnement est le suivant :

- l'onglet data contient les données de base modifiables

  • les autres onglets, peu importe leur nombre,
  • - contiennent les critères sur les 2 premières lignes .. ici j'en ai mis 2
  • - les résultats sont affichés à partir de la ligne 4

Nota important : les lignes 1 et 4 contiennent une partie (pas forcément toutes) des en-têtes des colonnes de l'onglet data ... il faut strictement respecter orthographe et les espaces éventuels

Lors de l'activation d'un onglet ou lors du changement des critères, les lignes à partir de la ligne 5 sont remises à jour automatiquement.

Merci beaucoup

Je vais essayer d'adapter ça à mon tableau.

Bonne journée^^

Une légère simplification du code

Private Sub filtrer(ByVal Sh As Object)
    Sheets("data").Range("donnees[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sh.Range("A1").CurrentRegion, _
        CopyToRange:=Sh.Range("A4").CurrentRegion.Resize(1), Unique:=False
End Sub

Ah oui, effectivement.

Merci encore !

Rechercher des sujets similaires à "creations groupes tableaux partir liste"