Créer matrice d'occurrence à partir tableau

Bonjour à tous,

PJ : fichier "test.xlsx"

Je souhaiterais automatiser la création d'une matrice d'occurrence à partir d'un tableau de données.

Point de départ :

Je dispose d'un tableau contenant :

  • des produit(s), exemple : un vélo, un skateboard..... en ligne, nommés Alpha, Beta, Gamma...
  • des fonction(s), exemple : GPS, micro... en colonne, nommées A, B, C...

Je souhaiterais connaître, sous la forme d'un tableau de fréquence (le nombre de cas) où les fonctions sont associées entre elles, afin de déterminer si certaines fonctions sont régulièrement utilisées ensembles, ou non.

Par exemple, si le produit Alpha, incorpore les fonctions A et C,

et si le produit Beta, incorpore les fonctions B et C,

et si le produit Gamma, incorpore les fonctions A, B et C,

[u]=> Je peux dire que la fonction A est associée à la fonction B une seule fois (dans 1 cas), à la fonction C deux fois (dans 2 cas).

=> Je peux dire que la fonction B est associée à la fonction A une seule fois, à la fonction C deux fois.

=> Je peux dire que la fonction C est associée à la fonction A deux fois, à la fonction B deux fois.[/u]

Ce sont ces résultats que je souhaiterais mettre en tableau, autant de lignes qu'il y a de relations d'occurrence, par exemple :

A => B => 1 (1 cas)

A => C => 2 (2 cas)

B => A => 1 (1 cas)

B => C => 2 (2 cas)

C => A => 2 (2 cas)

C => B => 2 (2 cas)

Mon point de départ est la "function" de Theze, proposée afin de transposer le tableau n°1 vers le résultat que je souhaite obtenir.

Néanmoins, cette 1ère function n'est pas prévu pour faire ce type de comptage et j'avoue que je bloque sur la rédaction de la nouvelle function....

Sub Transpose_arcs()

    Dim Tbl()
    Dim I As Integer

    'appel de la fonction
   Tbl() = TransposeGrille(Range("B2:E5"))

    'inscrit à partir de C20. Attention, les titres ne sont pas inscrits (Item1 et Item2)
   Range("G1").Resize(UBound(Tbl, 1), UBound(Tbl, 2)) = Tbl

End Sub

Function TransposeGrille(Plage As Range) As Variant() 'la fonction retourne un tableau

    Dim Tbl()
    Dim Cel As Range
    Dim I As Long
    Dim J As Long

    For Each Cel In Plage.Columns(1).Cells

        For I = 1 To Plage.Columns.Count - 1

            If Cel.Offset(, I).Value = 1 Then

                J = J + 1
                ReDim Preserve Tbl(1 To 2, 1 To J)

                Tbl(1, J) = Cel.Value
                Tbl(2, J) = Plage(1, 1 + I).Value

            End If

        Next I

    Next Cel

    TransposeGrille = Application.WorksheetFunction.Transpose(Tbl())
End Function

Si quelqu'un a une solution, je lui serais très reconnaissant de me fournir des pistes...

En remerciant la communauté par avance,

Cdt,

G.

38test.xlsx (13.22 Ko)

Bonjour,

Voir PJ

67pwetzou.xlsx (16.35 Ko)

@ + +

Merci !

ça marche bien.

Si quelqu'un a pu trouver une solution sous forme de macro, je suis preneur, car je devrai exécuter cette gymnastique sur plusieurs feuilles à la fois (une dizaine maxi).

Merci par avance

G.

R@chid,

Je vois que dans ton exemple, tu as construis le tableau final et ses fonctions à tirer à partir du tableau n°3.

Or je voudrais avoir à éviter de reproduire ce tableau n°3 pour aboutir au résultat final.

Je voulais savoir s'il y avait un autre moyen de créer le tableau final recherché avec uniquement soit les données du tableau 1 ou du tableau 2 ?

Merci par avance

Cdt,

G.

Bonjour,

désolé, en fait j'ai pensé de ceux sont deux questions différentes.

sinon j'ai pas compris d'où vient les A,B,C en ligne et en colonne dans le 3ème tableau ?

@ te relire

Il te manque cette brique pour comprendre le truc, je ne te l'ai pas dis en effet,

Le tableau 3 je l'ai fais à la main !

Mais sur une tableau #1 initial à 50 lignes et 10 colonnes qui est renouvelé 3 fois par semaine avec lignes et colonnes variables, je ne peux pas reproduire à chaque fois la matrice à la main.

C'est pour cela que je demandais s'il y avait moyen de passer du tableau 1 ou du 2 directement au 4..

C'est à dire, calculer les fréquences de couplage de fonction sur l'ensemble des produits, en conservant comme tu las très bien fais, le poids (le nombre de cas), de chaque couplage (A est associé à B dans 10 cas...), rien de changé de ce côté là.

Je suis capable à partir du tableau #1 de passer au #2 (soit par ta solution), soit par la solution macro de Theze.

Mais j'aimerais pouvoir être capable de passer du tableau 1 ou du 2 (que je sais faire du coup), directement au 4, sans avoir à faire le 3 (pour l'instant ta solution dépend du tableau 3, qui dans l'idéal ne devrait avoir à exister).

Merci R@chid.

G.

Re,

pourrais-tu m'expliquer comme je peux passer du tableau 2 au tableau 3 ?

Bien sur.

J'explicite la philosophie :

Le tableau #1 est une donnée qui vient de l'extérieur. Dans l'architecture du process, j'aimerais ne pas avoir à modifier ce tableau, il arrivera toujours sous la même forme, les produits en ligne, les fonctions associées à ces produits en colonne. Comme c'est matrice, l'existence d'un lien produit-fonction : un 0 veut dire "la fonction n'est pas incorporée dans le produit", un 1 veut dire "elle l'est".

Le tableau #2 représente exactement la même donnée que le tableau #1, mais sous une forme différente. Elle recense de façon exhaustive, l'ensemble des couples "produit => fonction" existant, donc en fait, tous les "1", et ce en liste.

Si le produit Alpha incorpore les fonctions A et C (mais pas B), alors ce tableau qui en #1 était sous forme de 0 et de 1, passe en liste :

Alpha | A Pas besoin d'un "1" ici, si alpha a en face de lui "A", ca veut dire qu'il y a une connexion entre le produit Alpha et la fonction A

Alpha | C Pareil. mais entre alpha et C et ainsi de suite sur tous les produits.

Pourquoi cette typologie car je travaille sur de la cartographie en réseau, et je cherche à étudier certains indicateurs statistiques de structure type clustering, modularité etc... et le réseau se prête bien à représenter ce type de relations produits / fonctions.

Mais......... maintenant que je suis capable de reproduire ces relations produit-fonction sous cette forme, la demande du partenaire a changé, et je dois désormais non plus étudier les relations produit-fonction, mais fonction-fonction.

: Quelles sont les fonctions que l'on retrouve le plus souvent ensemble ? Quelles sont celles qui ne sont jamais incorporées ensemble dans un produit ? (ces questions renvoient à la complémentarité des fonctions, leurs associations).

Bien sur, à l'oeil on le voit, avec les 1 du tableau #1 (beaucoup moins avec le tableau #2), mais je souhaite construire de façon automatique, statistique et rigoureuse la représentation de ces relations, de façon objective.

Pour se faire, j'ai besoin de pouvoir produire le tableau 3. Mais je voulais savoir s'il est possible de le construire autrement qu'à la main, à partir des données que j'ai au départ (à savoir tableau #1). Une fois que mon tableau #3 est construit, j'ai besoin de construire une table de type tableau #4 pour représenter ma donnée. #3 n'est pas un passage obligatoire, dans mon fichier, je men suis servi pour batir 4, afin d'illustrer ma demande, mais si l'on peut passer de #1 ou de #2 directement à #4, ce serait suffisant.

Pour expliciter le tableau #3 : il représente les occurrences d'associations de fonctions. La fonction A par exemple, n'est jamais associée avec elle-même (0) puisqu'elle est unique. Mais elle est associé à la fonction B une seule fois, donc dans 1 produit! et elle est associée à la fonction C deux fois, donc dans 2 produits ! d'où le tableau, que j'ai du faire à la main pour l'instant.

Je souhaiterais pouvoir produire soit le tableau #3 pour aboutir à ma table #4 obligatoire, soit produire le tableau #4 directement mais j'ignore de quelle façon...

Merci encore pour l'aide.

Je remets en pièce jointe le fichier pour ceux qui arriveraient.

Merci,

G.

22pwetzou.xlsx (16.43 Ko)

Bonjour,

stp, explique-moi juste cette partie sur l'image..

pwetzou

je dois trouver le rapport entre ces 2 tableaux pour que je puisse t'aider.

@ te relire

Bonjour R@chid,

Ci-joint le Pwetzou.xlsx avec les explications,

En espérant être clair,

Cdt,

G.

36pwetzou.xlsx (18.83 Ko)

Bonjour,

oui j'ai compris, je vais voir comment je peux le faire.

@ + +

Une autre façon d'expliquer :

exe

Merci !

G.

bonjour,

une proposition de solution pour la génération du tableau 3 via une macro

22pwetzou.xlsm (23.51 Ko)

Bonjour @ tous,

du tableau1 au tableau3 sans passer par le tableau2

en N2 :

=SOMMEPROD(DECALER($A$2:$A$4;;EQUIV($M2;$B$1:$D$1;0))*DECALER($A$2:$A$4;;EQUIV(N$1;$B$1:$D$1;0)))*($M2<>N$1)

@ tirer vers le bas et vers la droite

@ + +

R@chid, merci pour ta formule. Mon excel me renvoie une erreur "de formule" à ce niveau :

=SOMMEPROD(DECALER($A$2:$A$4;;EQUIV($M2;$B$1:$D$1;0))*DECALER($A$2:$A$4;;EQUIV(N$1;$B$1:$D$1;0)))*($M2<>N$1)

Ce que vous me proposez est en tout cas très puissant...

Vraiment très puissant.

J'ai adapté la macro de Theze pour passer du tableau #3 au tableau #4 et tout marche niquel.

Je vous mets le résultat final en image, grâce à vous de façon automatisé.

1

Encore merci pour votre temps !

Cdt,

G.

Re,

voir PJ

34pwetzou-4.xlsx (16.87 Ko)

@ + +

Merci !!!

Miracle.

Bien chaleureusement,

G.

Bonjour tous le monde !

je suis nouveau sur le forum , j'avais le même problème au sujet de la matrice d'occurrence ,

S'il vous plait pourriez vous me donner la macro pour le passage du tableau 3 vers le tableau 4 !

merci d'avance et bonne journée !

Bonjour,

tout est dans le fichier.

Amicalement

R@chid a écrit :

Bonjour,

tout est dans le fichier.

Amicalement

Merci beaucoup pour votre réponse !

j'ai consulté le fichier Pwetzou_4, je veux le resultat du tableau 4 sous forme de macro , car j'ai une matrice avec un peu prés 100 lignes,

je vous serais très reconnaissant de votre aide !!

Merci d'avance !

Cdt

Rechercher des sujets similaires à "creer matrice occurrence partir tableau"