Création plusiseurs onglets avec report de données

Bonjour à tous,

Dans mon fichier ci-joint, je possède un tableau dans l'onglet Feuil1.

10storm28.xlsx (10.33 Ko)

Ce tableau est ma base et qui sera agrémenté au fur et à mesure de mes nouvelles données.

Ce que j'aimerai :

  • pouvoir créer un onglet par différents produits dans ma liste selon la colonne F dans mon tableau en Feuil1.
  • dans chaque onglet créé des produits, mettre la commande en ligne selon le produit de l'onglet.

Par exemple :

Si l'onglet est "Croissant", j'aimerai avoir toutes les commandes ayant pour article "Croissant".

Avez-vous des idées, s'il vous plaît ?

Merci à vous et par avance,

Storm28

Bonjour,

une proposition

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name <> "data" And Left(Sh.Name, 5) <> "Feuil" Then
        Sheets("data").Cells(Rows.Count, 1).End(xlUp).CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sh.Range("A1").CurrentRegion, CopyToRange:=Sh.Range("A6").CurrentRegion.Resize(1), Unique:=False
    End If
End Sub

tout est automatique selon le nom de l'onglet

13storm28.xlsm (22.54 Ko)

Merci à toi.

Pourrais-tu m'expliquer pas à pas car je n'arrive pas à ta solution.

Merci

Storm28

ok je le ferai demain

et je t'apporterai aussi une autre solution un peu différente

Ok pas de soucis.

Merci encore

Storm28

Voici les explications :

1-

Dans chaque onglet, j'ai masqué les lignes 1 à 3. Ce n'est pas indispensable, mais comme l'information est redondante avec le nom d'onglet, cela permet d'alléger la feuille à la lecture.

2-

En A2, sous le terme Article issu de ton tableau de données (important), une formule reprend le nom de l'onglet :

=DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))

3-

Ligne 6, je reprends les entête de colonne souhaitée (ici toutes) de l'onglet data.

4-

Enfin, j'ai une procédure événementielle qui se déclenche à l'activation de l'onglet Sub Workbook_SheetActivate. Il s'agit tout simplement d'un filtre avancé, avec :

- comme critère A1:A2 Sh.Range("A1").CurrentRegion, J'aurais pu mettre Rnge("A1:A2") dans ton cas, CurrentRegion n'est pas obligatoire ici mais me permet éventuellement de mettre un autre critère en B1:B2

- comme résultat les données de la ligne 6 Sh.Range("A6").CurrentRegion.Resize(1) ; j'aurais pu mettre Range("A6:G6") qui dans ton cas est la même chose

- comme données de base l'onglet data : comme les données ne sont pas dans un tableau, je ne sais pas où elles se trouvent et donc j'emploie Sheets("data").Cells(Rows.Count, 1).End(xlUp).CurrentRegion ; dans ce cas il ne faut rien en colonne A en dessous des données.

En fait, le code pour moi est quasi générique, c'est pour cela que j'emploie beaucoup CurrentRegion.

J'espère avoir répondu à ton interrogation.

Une autre version où le choix de l' "onglet" se fait dans la cellule sur fond jaune.

Avantages :

  • ne pas avoir à préparer de nouveaux onglets
  • pouvoir compléter les informations qui seront alors intégrées dans la base de données

7storm28-v2.xlsm (20.55 Ko)

Bonjour le forum

Pour ta demande,:

Ce que j'aimerai :

  • pouvoir créer un onglet par différents produits dans ma liste selon la colonne F dans mon tableau en Feuil1.
  • dans chaque onglet créé des produits, mettre la commande en ligne selon le produit de l'onglet.

Je passerai par un TCD, qui répond à ta demande, en plaçant en Filtre de rapport de Produits.

Ensuite dans l'onglet Analyse de TCD, à gauche , Option, Afficher les pages de filtre de rapport.

Il va te créer automatiquement tous les onglets pour chaque produits.

Bon courage.

Cordia5

Bonjour à vous deux,

Merci pour votre propositions.

Il faut savoir aussi que mon onglet principal est une marco qui prend des données d'un autre onglet et qui filtre les données ensuite selon une demande.

je vais testé vos propositions et essayer de trouver la bonne méthode.

Merci à vous

Steelson,

Pour ta proposition, je ne peux pas rajouter de commandes et rajouter d'autres articles.

De plus, je ne peux pas le nouvel article dans le menu déroulant ...

Pourrait-on faire cela ?

Merci

1ère version :

  • tu peux rajouter des commandes,
  • si rajoutes de nouveaux articles, il suffit de dupliquer le modèle, changer le nom de l'onglet, et faire un aller/retour.
  • dans cette version tu ne peux rajouter des articles que dans l'onglet data, je peux corriger cela, ça va être un peu plus complexe

2ème version v2 :

  • tu peux ajouter des commandes sans problème dans n'importe quel "onglet" (entre guillemets)
  • en effet, la liste déroulante ne prend pas en compte les nouveaux produits ... c'est rajouté ici :
8storm28-v2bis.xlsm (22.64 Ko)

Merci Steelson.

Dans ton code vba, je remplace ("data") par mon vrai nom d'onglet ?

Steelson,

J'ai mon code qui se met en erreur

capture123

Bonjour

Pour ta liste déroulante, insère un segment,il prendra en compte tous les nouveaux produits, après une actualisation du TCD.

Cordia5

D'accord mais un segment de quel type ? car j'essaie mais sans réponse ...

Pour ta liste déroulante, insère un segment,il prendra en compte tous les nouveaux produits, après une actualisation du TCD.

C'est pas mal, je vais essayer aussi ...

Steelson,

J'ai mon code qui se met en erreur

Capture123.PNG

Etant donné que tu as changé choix en liste_........., il faut aussi le changer dans la définition dim choix() ..........., idem pour iData

Reprends la macro de base, cela n'a aucun intérêt à changer ces paramètres internes à la macro.

La seule chose qui peut varier, c'est :

  • range("B4")
  • le nom de la colonne

Il faut aussi que les données soient en tableau

Bonsoir

beuh ce type de segment.

Bonne soirée, espérant ne pas être à côté de la plaque.

Cordia5

avec fichier

Pas mal, presque parfait, à un écart près ... je t'explique : Tempête28 demandait plusieurs onglets, alors, malin comme un singe, j'ai mis le nom de l'onglet en fonction du choix, mais c'est toujours le même !!

Comment pourrait-on récupérer le choix et le mettre dans le nom de l'onglet ? je sais cela ne sert à rien ...

Sinon tu as raison, c'est tellement plus simple et élégant !

Rechercher des sujets similaires à "creation plusiseurs onglets report donnees"