Multiplication d'un tableau en plusieurs tableaux

Bonjour,

J'aimerai savoir s'il est possible de créer plusieurs tableaux à partir d'un tableau générale.

Je m'explique, mon premier tableau est un tableau générale.

J'aimerai, à partir de mon tableau générale, créer une multitude de tableaux selon des filtres bien précis.

L' exemple est avec un filtre de la colonne "Plats"

17classeur1.xlsx (9.71 Ko)

Cela est-il possible ?

Je vous mets un exemple dans le poste.

Merci par avance,

Storm28.

Bonjour,

il faut utiliser la fonction filtre avancé

cela peut s'automatiser par une procédure événementielle à chaque activation de l'onglet si tu le souhaites

capture d ecran 283
8classeur1.xlsx (11.32 Ko)

Bonjour,

Une proposition à étudier.

Cdlt.

17storm28.xlsm (38.39 Ko)

Bonjour Jean-Eric,

@Storm, version automatique

et si tu veux ajouter de nouvelles feuilles, il suffit de copier une feuille existante et lui ajouter le code :

Private Sub Worksheet_Activate()
    Filtrer
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A2")) Is Nothing Then Exit Sub
    Filtrer
End Sub
12classeur1.xlsm (18.64 Ko)

Bonjour à tous,

Merci pour vos propositions.

L'idée de Jean-Eric est plutôt bonne

Sachant que j'ai plus de 100 plats , cela voudrai dire plus de 100 onglets . Mon fichier de base est déjà énorme.

Pourrait-on mettre les tableaux les uns à côtés des autres et faire qu'un seul onglet, avec la partie automatique, s'il vous plaît ?

Merci encore à vous,

Bonjour,

J'ai une solution à te proposer mais il faudrait que tu envoies des données plus consistantes.

Un fichier représentatif de tes vraies données !...

A te relire.

Cdlt.

Sachant que j'ai plus de 100 plats , cela voudrai dire plus de 100 onglets . Mon fichier de base est déjà énorme.

je comprends en effet !

Pourrait-on mettre les tableaux les uns à côtés des autres et faire qu'un seul onglet, avec la partie automatique, s'il vous plaît ?

wahou, donc 100 tableaux les uns à côté des autres!!

Mais pourquoi vouloir afficher les 100 tableaux ? Quel est l'usage qui en fait derrière ?

Jean-Eric,

Voici mon fichier de base de donnée.

Certaines cellules peuvent avoir des astérisques avec un chiffre. Cela a pour but de créer autres chose qui est déjà réalisé.

En attente de ta proposition.

Storm28

15classeur1-test.xlsx (523.69 Ko)

Bonjour à tous

Mais pourquoi vouloir afficher les 100 tableaux ? Quel est l'usage qui en fait derrière ?

Et la réponse est ??????

la réponse est juste une question d'impression où je veux voir et contrôler mes données.

La multiplication des onglets peut être sources d'erreurs lors de la relecture.

Après, je suis assez ouvert sur la question. Je ne dis pas que c'est la meilleur façon de procéder.

RE

Et tu imprimes combien de produits à la fois ?

Le fond de la question est de comprendre ton besoin opérationnel pas juste Excel

Mon fichier de base possède 80 plats (Colonnes) et peut aller à 100 plats.

De plus, il peut posséder 600 commandes (Lignes)

Soit 6000 données au max.

Lorsque je saisie des informations dans mon fichier de base , j'ai un récap de commande avec les plats.

Le but est de faire 100 tableaux = 100 plats avec les commandes par plats.

Ces tableaux seront envoyés dans mon laboratoire pour préparer les commandes.

RE

Donc il faudrait partir de la solution de Jean-Eric mais le code peut créer les onglets, les imprimer puis les supprimer.

Le TCD lui te permet de contrôler l'ensemble...

Je suis d'accord avec l'idée de Jean-Eric comme cité précédemment.

Ce qui me gène, c'est la génération des 80 onglets à mimima ...

Bonjour à tous,

Tu peux le faire comme ça :

Ici l'item associé aux clés du dictionnaire est un objet range, on aurait pu choisir une variable tableau à 2 dimensions.

Option Explicit
Sub test()
Dim dico As Object, i As Long, n As Long, e
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    With Sheets("Tableau_générale").Range("a3").CurrentRegion
        For i = 2 To .Rows.Count
            If Not dico.exists(.Cells(i, 6).Value) Then
                Set dico(.Cells(i, 6).Value) = .Rows(1)
            End If
            Set dico(.Cells(i, 6).Value) = Union(dico(.Cells(i, 6).Value), .Rows(i))
        Next
    End With
    Application.ScreenUpdating = False
    'restitution et mise en forme
    With Sheets("Feuil3")
        .Cells.Clear
        n = 1
        For Each e In dico
            dico(e).Copy .Cells(n, 1)
            With .Cells(n, 1).CurrentRegion
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .Font.Size = 12
                    .Interior.ColorIndex = 43
                    .BorderAround Weight:=xlThin
                End With
            End With
            n = n + dico(e).Cells.Count / 6 + 1
        Next
    End With
    Application.ScreenUpdating = True
    Set dico = Nothing
End Sub

J'en suis resté au 1er fichier joint

klin89

Bonjour Klin89,

Merci pour ton aide sur le post.

Serait-il possible de le mettre les tableaux les uns à côté des autres dans le sens suivant : Tableau 1 // Tableau 2 ...

Re,

Une nouvelle proposition à étudier.

Cdlt.

9storm28-1.xlsm (40.97 Ko)

@Jean-Eric

J'essaie d'utiliser tes fichiers mais impossible de les reproduire ...

Pourrais-tu m'expliquer, s'il te plaît ?

Merci à toi,

Re Storm28,

C'est moins lisible et cela ne tiendra pas sur la largeur

Option Explicit
Sub test()
Dim dico As Object, i As Long, n As Long, e
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    With Sheets("Tableau_générale").Range("a3").CurrentRegion
        For i = 2 To .Rows.Count
            If Not dico.exists(.Cells(i, 6).Value) Then
                Set dico(.Cells(i, 6).Value) = .Rows(1)
            End If
            Set dico(.Cells(i, 6).Value) = Union(dico(.Cells(i, 6).Value), .Rows(i))
        Next
    End With
    Application.ScreenUpdating = False
    'restitution et mise en forme
    With Sheets("Feuil3")
        .Cells.Clear
        n = 1
        For Each e In dico
            dico(e).Copy .Cells(1, n)
            With .Cells(1, n).CurrentRegion
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                With .Rows(1)
                    .Font.Size = 12
                    .Interior.ColorIndex = 43
                    .BorderAround Weight:=xlThin
                End With
                .Columns(6).AutoFit
            End With
            n = n + 7
        Next
        .Activate
    End With
    Application.ScreenUpdating = True
    Set dico = Nothing
End Sub

klin89

Je me disais qu'il était aussi possible de reprendre la solution filtre en mettant les tableaux cote à cote ...

Rechercher des sujets similaires à "multiplication tableau tableaux"