XL 2016 Tableau de fournisseur et triage par onglet

Dominic74

XLDnaute Nouveau
Bonjour à tous, je suis à la recherche d'une solution simple pour me faire des tableau d'inventaire selon des catégories de produit. j'ai mon fichier excel joint.

Pour débuter, j'ai dans un onglet ma liste de fournisseurs avec tous mes produits, prix, catégorie etc. et j'aimerais être capable que ce tableau se répartisse automatiquement dans chaque onglet selon leurs catégories. Je sais que je pourrais sans doute faire un tableau dynamique pour chaque onglet, mais existe t'il une autre méthode pour copier se produit et le modifier si je fais une modification dans la liste du produit ?

merci pour votre collaboration :)
 

Pièces jointes

  • InventaireCuisine2020.xlsx
    54.8 KB · Affichages: 15

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Dominic74 , le Forum

Une approche en boucles simples et faciles à comprendre, mais tout dépend de la quantité de données à traiter, car si c'est simple, ce n'est pas pour autant très optimisé pour de grandes quantités.

Une modi à ta base de données toute fois,
Classe 02: PRODUITS LAITIERS
Au lieu de :
Classe: 02: PRODUITS LAITIERS
Sinon ça complique les choses pour rien, ou bien ce sont les noms d'onglets qu'il faut changer...

Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_Dominic74_InventaireCuisine2020_v00.xlsm
    66.7 KB · Affichages: 4

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Avec le filtre élaboré

VB:
Sub Extrait()
  Set f = Sheets("fournisseursliste")
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
  f.[L1] = f.[C1]     ' colonne critère (adapter)
  Nlig = f.[A1].CurrentRegion.Rows.Count
  Ncol = f.[A1].CurrentRegion.Columns.Count
  '--- Liste des ID
  f.[A1].Resize(Nlig, Ncol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=f.[L1], Unique:=True
  For Each c In f.Range("L2:L" & f.[L65000].End(xlUp).Row)   ' pour chaque service
     f.[L2] = c.Value
     On Error Resume Next
     Sheets(CStr(c.Value)).Delete
     On Error GoTo 0
     Sheets.Add After:=Sheets(Sheets.Count)   ' création
     nom = Replace(Left(c.Value, 10), ":", "_")
     ActiveSheet.Name = nom
     '-- extraction
     f.[A1].Resize(Nlig, Ncol).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=f.[L1:L2], CopyToRange:=[A1]
   Next c
   f.Select
End Sub


Boisgontier
 

Pièces jointes

  • Copie de InventaireCuisine2020.xlsm
    85.8 KB · Affichages: 11

Dominic74

XLDnaute Nouveau
Bonsoir @Dominic74 , le Forum

Une approche en boucles simples et faciles à comprendre, mais tout dépend de la quantité de données à traiter, car si c'est simple, ce n'est pas pour autant très optimisé pour de grandes quantités.

Une modi à ta base de données toute fois,
Classe 02: PRODUITS LAITIERS
Au lieu de :
Classe: 02: PRODUITS LAITIERS
Sinon ça complique les choses pour rien, ou bien ce sont les noms d'onglets qu'il faut changer...

Bien à toi, à vous
@+Thierry
Merci en effet, ainsi ca fonctionne bien, mais ma liste devrait augmenter considérablement, ca sera alors probablement trop lent. mais pour le moment ca m'aide beaucoup merci beaucoup! :)
 

Dominic74

XLDnaute Nouveau
Bonsoir,

Avec le filtre élaboré

VB:
Sub Extrait()
  Set f = Sheets("fournisseursliste")
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
  f.[L1] = f.[C1]     ' colonne critère (adapter)
  Nlig = f.[A1].CurrentRegion.Rows.Count
  Ncol = f.[A1].CurrentRegion.Columns.Count
  '--- Liste des ID
  f.[A1].Resize(Nlig, Ncol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=f.[L1], Unique:=True
  For Each c In f.Range("L2:L" & f.[L65000].End(xlUp).Row)   ' pour chaque service
     f.[L2] = c.Value
     On Error Resume Next
     Sheets(CStr(c.Value)).Delete
     On Error GoTo 0
     Sheets.Add After:=Sheets(Sheets.Count)   ' création
     nom = Replace(Left(c.Value, 10), ":", "_")
     ActiveSheet.Name = nom
     '-- extraction
     f.[A1].Resize(Nlig, Ncol).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=f.[L1:L2], CopyToRange:=[A1]
   Next c
   f.Select
End Sub


Boisgontier
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2