Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche nombre composants communs matrice croisée

  • Initiateur de la discussion Initiateur de la discussion esstin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

esstin

Guest
Bonjour,
J'ai un petit problème pour récupérer des données d'une matrice croisée dynamique. Sur cette matrice, en colonne figure les composants et en ligne les articles finis qui utilisent ces composants.
Je souhaiterais savoir pour chaque article le nombre de composant qu'il a en commun, ainsi que le nom de ces composant, avec tout les autres articles.
Par rapport à la matrice jointe :
Par exemple A a 3 composants en communs avec B (a,b,c)
A a 2 composants en commun avec C (a,b)
A a 3 composants en commun avec D et E (a,b,f)

Je voudrait savoir cela pour tout les articles entre eux.
Cette matrice n'est qu'un exemple car en réalité, il y a 660 articles différent et jusqu'à IN colonnes. 😱😱

Pensez-vous que cela soit possible en macro? 😕
Avez vous une idée qui peux fonctionner? 😕

Je précise que je suis juste analyste de données et que je n'ai pas de notion de programmation.

Merci pour vos réponses et votre aide 🙂🙂
 

Pièces jointes

Re : Recherche nombre composants communs matrice croisée

Bonjour,

****** désolé un retour arrière intempestif dans le navigateur



"Comment puis-je supprimer ce type de message??


GIBI
 
Dernière édition:
Re : Recherche nombre composants communs matrice croisée

Bonjour,

je crois avoir compris la demande, mais je ne sais pas trop commun présenter le résultat.

J'ai fais un essai de macro, qui peut être activer via un bouton

Merci de ton retour

GIBI
 

Pièces jointes

Re : Recherche nombre composants communs matrice croisée

Bonjour

J'ai fait un petit fichier, mais, malheureusemnt, cela n'est certainement pas utilisable dans le cas de ton fichier, vu le nombre de colonnes, de lignes...

@ plus
 

Pièces jointes

Dernière édition:
Re : Recherche nombre composants communs matrice croisée

Bonjour,

je crois avoir compris la demande, mais je ne sais pas trop commun présenter le résultat.

J'ai fais un essai de macro, qui peut être activer via un bouton

Merci de ton retour

GIBI


Merci beaucoup pour ta réponse, c'est exactement ce que je souhaite.
Le bouton synthèse marche très bien pour le tableau d'explication en revanche il coince pour la vraie matrice.
La macro commence à s'éxécuter et au bout d'un moment une fenêtre VB apparait :
Erreur d'exécution '9':
L'indice n'appartient pas à la sélection

Quand je clique sur le bouton débogage c'est la ligne 19 qui est souligné
Tabart2(L1, NA, N) = Cells(1, C1) ' composant commun

J'ai pensé que peut être il y a plus de 65000 réponses communs entre 2 articles et que le fichier s'arrête.....

En tout cas merci merci beaucoup car ta macro est vraiment très bien construite. Chapeau l'artiste.

Je joind la vraie matrice pour que tu vois ce qui va pas.
Elle est en 2 parties car sinon elle fait plus de 50ko.

Bonne soirée et Bon weekend
Encore merci GIBI
 

Pièces jointes

Re : Recherche nombre composants communs matrice croisée

Bonjour

J'ai fait un petit fichier, mais, malheureusemnt, cela n'est certainement pas utilisable dans le cas d ton fichier, vu le nombre de colonnes, de ligne...

@ plus


Merci beaucoup à toi CISCO
C'est vrai que pour mon fichier actuel ta solution n'est pas trop utilisable.
En revanche celui-ci est très clair et me sera certainement utile pour de futur présentation ou projet avec moins de réfèrence et de conditions.

Bonne soirée et bon weekend
 
Re : Recherche nombre composants communs matrice croisée

Bonsoir,

l'erreur venait du nombre trop important des articles communs.

J'ai refait la macro d'une manière plus simple : j'ai remplacé le stockage du résultat en tableau par une écriture direct en sortie (un message dans la barre de massage permet de suivre l'avancement).

J'ai traité le problème des 65000 en écrivant sur plusieurs onglet : Resultat1 à Resultat10.
Pour effacer, si tu le veux, les feuilles résultats tu peux utiliser la macro RazResultat

Remplace la macro actuel par le code ci-dessous

Code:
Option Explicit    ' Exige la déclaration explicite des variables.

Sub Synthese()
Dim L1 As Long, L2 As Long, LMax As Long, LS As Long, Cmax As Long
Dim C1 As Long, C2  As Long, N As Long, NA As Long
Dim NumF As Integer
Dim Resultat As String
Dim Tableau, aa
Application.ScreenUpdating = False

Resultat = "Resultat"
NumF = 1
Resultat = "Resultat" & NumF
Sheets(Resultat).Activate
Cells.ClearContents

Sheets("Feuil1").Activate
LMax = Range("A65536").End(xlUp).Row
Cmax = Range("IV1").End(xlToLeft).Column

Tableau = Range(Cells(1, 1), Cells(LMax, Cmax)) 'plage en tableau

LS = 2 ' init n° ligne résultat
For L1 = 2 To LMax 'pour chaque article niveau 1
 Application.StatusBar = "Traitement ligne " & L1
 If LS > (65000 - LMax) Then
    NumF = NumF + 1
    Resultat = "Resultat" & NumF
    Sheets(Resultat).Activate
    Cells.ClearContents
    LS = 2
  End If
 NA = 1
 For L2 = L1 + 1 To LMax 'pour chaque article niveau 2
 
       N = 0
       For C1 = 2 To Cmax
          If Tableau(L1, C1) <> "" Then
             If Tableau(L2, C1) <> "" Then
                N = N + 1 ' nbre composant
                Sheets(Resultat).Cells(LS, 3 + N) = Tableau(1, C1)  ' composant commun
             End If
          End If
       Next
       If N <> 0 Then
          Sheets(Resultat).Cells(LS, 3) = N
          Sheets(Resultat).Cells(LS, 1) = Tableau(L1, 1)
          Sheets(Resultat).Cells(LS, 2) = Tableau(L2, 1)
          LS = LS + 1
       End If
  
 Next L2


Next L1
Application.StatusBar = "Traitement teminé"
Application.ScreenUpdating = True

End Sub
Sub RazResultat()
 Dim NumF, Resultat
  
 For NumF = 1 To 10
  Resultat = "Resultat" & NumF
  Sheets("Resultat" & NumF).Activate
  Cells.ClearContents
 Next
End Sub
 
Dernière édition:
Re : Recherche nombre composants communs matrice croisée


Merci beaucoup GIBI pour ta réponse. 😉😉
C'est exactement ce que je voulais.
Tu est vraiment très fort!!!!!!!!!!!!!!!!
Sinon cela n'est peut-être pas possible car comme tu le dis il n'y a pas de stockage mais une lecture directe, par rapport à ta 1ère version, les articles sont en double.
Par exemple il y a une ligne avec A et B et une autre identique avec B et A.
Et-il possible de faire comme pour la 1ère version où les doublons d'apparaisait pas.
Cordialement
Et encore un grand MERCI
 
Re : Recherche nombre composants communs matrice croisée

Bonsoir,

je suis allé un peu vite : il faut modifier une ligne

For L2 = 2 to LMax 'pour chaque article niveau 2
en
For L2 = L1 + 1 To LMax 'pour chaque article niveau 2


Avec mes excuses

GIBI
J'ai modifié la code dans le précédent message
 
Dernière édition:
Re : Recherche nombre composants communs matrice croisée


C'est PARFAIT
merci merci beaucoup
Ca marche nickel
Chapeau!!!!!!!!!!!! Tu es un génie🙂🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

F
Réponses
6
Affichages
844
O
Réponses
15
Affichages
2 K
D
N
Réponses
2
Affichages
1 K
nicocomptable
N
K
Réponses
1
Affichages
1 K
albert
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…