Modifier affichage tableau 4 champs- Style TCD

Bonjour,

Jen souhaite passe du tableau 1 au 2 du fichier joint. Colonne champs1 triée décroissant, colonne champs2 triée croissant, matrice de valeurs associée.

J'ai pompé un code de Patrick du forum que j'essaie d'adapter..... sans réel succès à cause d'une contrainte de taille: afficher pour chaque élément trié décroissant du champs 1, un nombre constant des éléments trié croissant du champs2 ( Le tout avec l'affichage matricel du champs4 en fonction du champs3 du tableau 1).

Ci-joint le bout de code de Patrick du forum. Il fonctionne très bien, seulement il ne garde pas un nombre constant par élément de champs1. (Je voulais relever le défi seul, et voilà c'est tellement réussi. I need help please )

Merci d'avance.

    Option Explicit

    Sub InverserData()      ' Inspiré par le code de Boisgontier
                           ' <!-- m --><a class="postlink" href="http://boisgontierjacques.free.fr/">http://boisgontierjacques.free.fr/</a><!-- m -->
    Dim d1, d2
    Dim Lig&, Col&, Mlig&, Mcol, NbLignes&, I&
    Dim F1, F2 As Worksheet
    Dim c, Tmp1, Tmp2
    Dim AA, BB
    Set d1 = CreateObject("Scripting.Dictionary")
    Set d2 = CreateObject("Scripting.Dictionary")
    Set F1 = Sheets("feuil1"): Set F2 = Sheets("Feuil2")
    NbLignes = F1.Range("A1").End(xlDown).Row
    F2.[A1].CurrentRegion.ClearContents
    Dim A(1 To 30, 1 To 30)
    'ReDim A(1 To 10, 1 To NbLignes)
    Lig = 1
    Col = 1
    Mlig = Lig
    Mcol = Col
    For Each c In F1.Range("a1:a" & F1.[A65000].End(xlUp).Row)
        Tmp1 = c & "µ" & c.Offset(, 1) ' concaténation des 2 premières colonnes pour faire une clé
       If d1.exists(Tmp1) Then Lig = d1(Tmp1) Else d1(Tmp1) = Mlig: Lig = Mlig: Mlig = Mlig + 1
        Tmp2 = c.Offset(, 2) ' zone de titres avec des occurences uniques
       If d2.exists(Tmp2) Then Col = d2(Tmp2) Else d2(Tmp2) = Mcol: Col = Mcol: Mcol = Mcol + 1
        A(Lig, Col) = c.Offset(, 3) ' tableau totalisanr la croisées des lignes/colonnes
    Next c
    AA = d1.keys: BB = d1.items
    For I = 0 To UBound(AA)
       s = Split(AA(I), "µ")
       F2.Cells(I + 2, 1) = s(0) ' séparation de la clé en 2 colonnes
      F2.Cells(I + 2, 2) = s(1)
    Next I
    'F2.[A2].Resize(d1.Count, 1) = Application.Transpose(d1.keys)
    F2.[c1].Resize(1, d2.Count) = d2.keys
    F2.[c2].Resize(d1.Count, d2.Count) = A
    [F2].[A1] = "Champs1": [F2].[B1] = "Champs2"
    F2.Activate
    End Sub
     

Rebonjour,

En pièce jointe le fichier pour une meilleure compréhension de la problématique.

Bien à vous,

11test-forum1.xlsm (293.25 Ko)

Re Bonjour Forum,

Je souhaite présenter un peu l'idée. On imagine qu'on est un professeur principal d'une classe qui a un nombre constant d'élèves inscritss sur plusieurs dates.

Chaque jour, les profs font des contrôles, les élèves présents ont leur note affectée par matière et par jour. Les jours sont ordonnés du plus récent au plus ancien. Les élèves absents ont zéro dans toutes les matières. ( Un peu sévères dans ce lycée, les profs)

Le bout de code plus haut, donne exactement la note par élève par jour (non trié) sans compter les absents. Les absents disparaissent de la classe lorsqu'ils n'ont pas de note.

Un exemple TRES FICTIF pour présenter un peu l'idée du projet. Les élèves de la classe sont:

MOMO

MOTI

PIPI

POPO

TITI

TOTO

ZIZI

ZOZO

Bonjour,

Je ne suis pas dans la possibilité de répondre pour un moment, je suis à l'étranger et je ne peux que lire sur une tablette ou pc mais sans mon excel...

J'espère qu'un autre participant pourra t'aider

P.

Bonjour Patrick,

Je te remercie de ton retour rapide. C'est vraiment très sympathique. En espérant d'ici là, trouver un coup de pouce comme tu me le souhaites, je te souhaite un bon séjour là où tu te trouves.

De bonnes choses à toi,

Yeshua.

Rechercher des sujets similaires à "modifier affichage tableau champs style tcd"