Tableaux Croisés Dynamique (CA par Chauffeurs)

Bonjour,

N'étant pas du tout calé dans le codage, je cherche quelqu'un qui m'expliquerait comment me faciliter la vie :)

Voici mon tableau. Il s'agit d'un tableau que je remplie avec les tickets de pesées de mes chauffeurs à fil des jours. J'ai plusieurs colonnes et sous-titres, car j'ai plusieurs clients et matières.

Dans l'idéal, j'aimerais que la 1ère page me permette de classer mes tickets et que dans ma 2e page, je retrouve le chiffre d'affaires par chauffeur et par matières.

J'ai essayé avec des règles de mises en forme conditionnelles, tableaux croisés dynamiques et ça fonctionne pas..

31tableau-excel.xlsx (26.94 Ko)

Bonjour,

Pour faire ce genre de chose, il n'y a pas besoin de "coder", pourquoi penser tout de suite à VBA

En revanche, il faut savoir organiser ses données et le moins que je puisse dire en voyant votre fichier... c'est le foutoir

Je ne comprends pas pourquoi toutes ces pseudos tableaux à droite et à gauche !?

Bonjour marion3103 et bienvenue sur XLP ,

Bonsoir JExceL2fr,

Je plussoie aux propos de JExceL2fr. Vos tableaux ne permettent pas une exploitation "facile et logique" de leurs données. Il y a des formules de sommation dans vos tableaux qui sont erronées (et qui ont été révélées quand j'ai fait le contrôle du résultat de ma macro).

La macro que j'ai faite reconstruit un tableau structuré (TS) sur la feuille "Base" qui est plus exploitable que vos tableaux. A partir de ce TS, on peut notamment créer des TCD. Pour lancer la macro, cliquer sur le bouton "MàJ Base" au sein de la feuille "Base".

Le code est dans le module"Module1" :

Sub CreerBase()
Dim derlig&, dercol&, t, i&, j&, n&, refSit, refMat
   With Sheets("(11) Novembre")
      derlig = .UsedRange.Row + .UsedRange.Rows.Count - 1
      dercol = .UsedRange.Column + .UsedRange.Columns.Count - 1
      t = .Range("a1").Resize(derlig, dercol).Value
      ReDim r(1 To 4 * Int(dercol / 4) * UBound(t), 1 To 6)
      r(1, 1) = "Site": r(1, 2) = "Matière": r(1, 3) = "Date": r(1, 4) = "Chauffeur"
      r(1, 5) = "Tonnage": r(1, 6) = "Nbre Tonnage"
      n = 1
      For j = 1 To UBound(t, 2) Step 5
         refSit = t(2, j): refMat = t(3, j)
         For i = 4 To UBound(t)
            If Not t(i, j) = "" Then
               If IsDate(t(i, j)) Then
                  n = n + 1
                  r(n, 1) = refSit: r(n, 2) = refMat: r(n, 3) = t(i, j): r(n, 4) = t(i, j + 1)
                  r(n, 5) = t(i, j + 2): r(n, 6) = t(i, j + 3)
               Else
                  refMat = t(i, j)
               End If
            End If
         Next i
      Next j
      If Sheets("base").ListObjects(1).ListRows.Count > 1 Then Sheets("base").ListObjects(1).DataBodyRange.Delete
      Sheets("base").ListObjects(1).ListRows.Add
      Sheets("base").ListObjects(1).DataBodyRange.Resize(n, 6) = r
      Sheets("base").ListObjects(1).ListRows(1).Delete
   End With
End Sub

Re,

Un exemple de quelques statistiques par Chauffeur et par site à partir du tableau de la feuille "Base"

Bonjour

L'organisation de ta source rend très difficile l'exploitation. En plus il y a un formule erronée en I44

Pour exploiter facilement il faudrait

  • un tableau structuré avec les colonnes
    Type (Encombrant, Gravats...), Date, Lieu (BARBENTANE, CHATEAURENARD), Chauffeur, Tonnage, Nombre
  • un tableau des tarifs reprenant les mêmes libellés que dans le 1er tableau pour le type (ce n'est pas le cas dans ton classeur)
  • la règle de calcul du CA : on ne sait trop par quoi on multiplie le tarif

Et là avec un 2 TCD on fait des statistiques sans souci

Exemple (la valorisation dépend de la règle de calcul que je n'ai pas) :

image image
Rechercher des sujets similaires à "tableaux croises dynamique chauffeurs"