Tableau croisé dynamique multi-onglets ?

Bonjour,

J'ai besoin de votre aide car je ne trouve pas la solution.

Je joins le fichier pour que ce soit plus compréhensible. Il s'agit d'un fichier utilisé par des opérateurs de productions. Chaque onglet liste pour une matière première donnée l'ensemble des chariots présents dans l'entreprise ainsi que les informations de traçabilité, poids, lieu de stockage... par palette (chaque ligne = 1 palette). Chaque onglet est dédié à une matière première, ici j'ai simplifié le fichier mais en réalité il y a une 60aine d'onglets différents.

En fin de mois nous devons faire un inventaire global des palettes. Je souhaiterais pouvoir sortir sur support papier un récap de tous ces onglets. Une solution pourrait être de lancer une impression groupée de tous les onglets. Mais j'aimerai quelque chose de plus condensé pour que les opérateurs puissent réaliser des inventaires physiques sans manipuler 60 feuilles papier.

Un tableau croisé dynamique est-il faisable (il faut que je garde toutes les information de chaque palette code matière, poids, lieu, lot, DLC...) ?

Merci pour vos pistes.

1615122022.xlsm (39.74 Ko)

Bonjour

Il serait bien d'indiquer ta version Excel dans ton profil : le solutions ne sont pas les mêmes

Alors qu'il existent depuis bientôt 20 ans dans Excel il serait bien d'utiliser les tableaux structurés et c'est obligatoire pour les TCD et les outils Power (PowerPivot et PowerQuery)

Un tableau croisé dynamique sert à établir des calculs statistiques, pas à lister les détails

Tu peux obtenir une synthèse par PowerQuery (intégré à Excel 2016 et +),

Bonjour,

Une version plus récente m'aurait aidé dans bien des cas mais c'est ici une version Excel 2013 et un changement de version n'est pas envisageable.

Merci quand même pour votre aide

Bonjour FNLM,

Dans ce cas, si j'ai bien compris : une feuille inventaire, un petit code VBA... ne reste plus qu'à l'imprimer

15fnlm-15122022.xlsm (49.70 Ko)

A+

Bonjour à tous

Une version plus récente m'aurait aidé dans bien des cas mais c'est ici une version Excel 2013 et un changement de version n'est pas envisageable.

D'où l'intérêt d'indiquer sa version Excel dans son profil, ce que tu n'as toujours pas fait ...

A noter qu'il est possible de télécharger chez Microsoft PowerQuery sous forme d'add on PowerQuery pour les versions 2010 et 2013...

Bonjour Bruno M45,

Merci pour le code VBA qui fonctionne parfaitement. Par contre j'ai 2 soucis que je ne sais résoudre car je n'ai que de très très faibles notions de code...

1- au début du code VBA comment ajouter une fonction qui efface toutes les lignes précédemment inventoriées de la page ? (Le but étant de ne pas inventorier tout l'un sous l'autre et doubler les lignes)

2- dans le véritable classeur j'ai d'autres onglets que 'Inventaire" à exclure du processus. Comment créer une liste d'onglets à exclure du processus ?

Merci beaucoup !!

Bonjour FNLM

Voici le code modifié en fonction de vos 2 demandes supplémentaires

Sub MàJ_Inventaire()
  Dim Sht As Worksheet, ShtInv As Worksheet
  Dim dLig As Long
  Dim LShtNo As String
  ' Liste des feuilles à ne pas traiter
  LShtNo = "Toto,Inventaire,Machin"
  ' Définir la feuill d'inventaire
  Set ShtInv = ThisWorkbook.Sheets("Inventaire")
  ' Effacer la feuille avant de commencer
  dLig = ShtInv.Range("A" & Rows.Count).End(xlUp).Row
  ' Si la feuille contient déjà des données
  If dLig > 7 Then
    ShtInv.Range("A8:L" & dLig).ClearContents
  End If
  ' désactiver les évènements et le calcul auto
  Application.EnableEvents = False
  Application.Calculation = xlCalculationManual
  ' Parcourir toutes les feuilles
  For Each Sht In ThisWorkbook.Sheets
    ' Si la feuille ne fait pas partie de l aliste
    If InStr(1, LShtNo, Sht.Name, vbTextCompare) = 0 Then
      ' Denière ligne remplie de la feuille
      dLig = Sht.Range("B" & Rows.Count).End(xlUp).Row
      ' Copier/coller les lignes
      nlig = ShtInv.Range("A" & Rows.Count).End(xlUp).Row + 1
      If nlig = 7 Then nlig = 8
      Sht.Range("A8:L" & dLig).Copy Destination:=ShtInv.Range("A" & nlig)
    End If
  Next Sht
    ' Réactiver les évènements et le calcul
  Application.EnableEvents = True
  Application.Calculation = xlCalculationAutomatic
End Sub

A+

Bonjour,

Merci pour votre aide, je viens de tester. On est ok sauf dans le cas où l'onglet ne répertorie pas de valeurs (pas de palettes). J'ai remis le fichier en exemple ainsi que la vision de ce que j'obtiens en réel pour l'inventaire.

En fait j'ai trouvé en ajoutant des lignes de code. Un grand merci pour votre aide !!

Rechercher des sujets similaires à "tableau croise dynamique multi onglets"