Recherche et comparaison de données

Bonjour,

Je me tourne une fois de plus vers ce forum, car je suis face à une difficulté que je n'arrive pas à surmonter.

Explication:

Je veux effectuer une comparaison entre deux produits (ce sont des références, elles se trouvent dans la colonne "A" de ma matrice, feuille "matrice", fichier joint)

Chaque produits est composé d'un certain nombre de références composants ( ce sont les références dans la ligne "2" de ma matrice, feuille "matrice", fichier joint)

A l'intersection d'un produit et d'un composant, si il y a un "1" alors le composant fait parti de la composition de mon produit.

Ce que j'aimerais réalisé:

Je voudrais comparer des produits entre eux, et lorsqu'un composant est présent dans ces deux produits, alors on le considère comme un "commun". L’intérêt est de compter le nombre de communs entre ces produits.

Exemple:

Si 5 composants sont présents dans la composition de deux produits X & Y. Alors on dira que les produits X & Y ont 5 communs

J'ai essayé quelques manipulations, mais elles sont très peu rigoureuse et me semple laborieuse. J'ai besoin d'aide...

Les première manipulations que j'ai effectuées s'appuient sur des macros, éventuellement, dans mon tableau récapitulatif "analyse des communs" (feuille:"analyse").. Je verrais bien des formules du type : NB.SI(RechercheV...;"1")... A voir...

Fichier: Je n'arrive pas a joindre mon fichier, il est trop gros même compressé, si vraiment des personnes se penchent sur mon sujet. Je peux vous l'envoyer par mail. C'est un fichier qui tire ses données depuis une BDD et qui les mets en forme dans un Tableau croisé Dynamique. Ensuite un traitement est effectué sur ce TCD, j'en suis à là.

Utilises cjoint pour envoyer ton fichier (fais une recherche sur gOOgle)

éventuellement mets juste un bout de références, pas toutes

Merci pour l'astuce!

Lien pour accéder au fichier: https://www.cjoint.com/c/EFjgVhIbHYM

Le fichier est lourd pour le forum, mais en réalité il ne fait que 2Mo. Je laisse donc toutes les refs.

Bonjour entre temps j'avais fais ceci..mais j'me suis planté car j'ai fait une comparaison totalement identique (le même nombre de composant dans chaque produit...Bon pas grave, c'est une journée de m...qui commence encore sur les chapeaux de roues. J'retourne me coucher!)

ctrl + k pour lancer la macro...

edit : chez moi impossible de télécharger votre document...ca m'affiche des lettres toutes bizarres comme-ci c'était une langue extra terrestre...

Salut force rouge,

Merci pour ta réponse!

Tous les matins il faut faire un choix:

  • Rester dormir pour rêver ses rêves
  • Se réveiller pour les réaliser

Bizarre, pourtant c'est un fichier excel (.xltm)

Le voici compréssé : https://www.cjoint.com/c/EFjicFkaReM

Oui effectivement, ce que je désire coder est un peu plus complexe.

je ne dois pas en être loin de la réponse ... je reperndrai demain

l'idée est de prendre un tableau ref > composants trié

puis un tableau composants > ref trié

le premier tableau comporte aussi la ligne de début et de fin où se trouve le composant dans le second tableau de façon à ensuite incrémenter de 1 toutes les réf qui ont aussi ce composant

le tout est consigné dans une matrice carrée ref x ref

cela doit être la bonne version maintenant ...

https://www.cjoint.com/c/EFjtLO6WCh1

Bonjour Steelson,

Tout d'abord merci pour ta réponse

Je suis actuellement entrain d'examiner le fichier que tu m'as envoyé, à première vu, je pense que tu as bien compris l'objectif du fichier.

En revanche j'ai du mal a comprendre comment tu procède..

Je vais continuer d'essayer de comprendre, mais si tu pourrais m'expliquer en quelques lignes la démarche que tu utilise cela m'aiderais dans ma compréhension. Par exemple, a quoi correspondent les colonnes "DEBUT" et "FIN" de ta feuille "Produits" ? J'ai cru comprendre que ces valeurs font références à la feuille "Composant" mais j'en suis pas sur.

J'ajoute un détail à mon explication:

Le but premier de ce fichier c'est qu'il soit maniable, autrement dis que l'on puisse entrer une dizaines de refproduit et que la comparaison entre ces produits ce fasse "automatiquement" d'où mon formulaire de saisie dans la première version que je t'es envoyé.

Donc l'idéal serait d'avoir un tableau à deux entrées, dans lequel on saisie nos refs dans les lignes et les colonnes et qu'il effectue la comparaison.

Petite question: Est ce que les données que tu manipule sont toujours liées à ma BDD? Si non, y'a-t-il possibilité de travailler avec les données de ma base ? En effet, les infos contenu dans ma base sont celles le plus à jour (de nombreuse modification sont effectué sur les ref composants de chaque produits: Ajout d'une refCompo, suppression, modification..).

Mais ce n'est que du détail.. Ton fichier à l'air correct! Merci encore

En effet, ce n'est pas (encore) automatisé, mais il fallait bien d'abord obtenir un résultat.

La base de données n'était livrée avec le fichier ... je l'ai reconstituée en partant du tableau croisé dynamique qui avait importé avec lui les données de base.

Pour les explications sur la façon de procéder ... je vais te fournir cela cet apm... à suivre, donc.

1ère étape : j'extrais les couples références x composants, je prends les références uniques que je trie et que je mets en colonne et en ligne de l'onglet matrice (je l'ai fait à la main, mais cela peut s'automatiser facilement)

2ème étape : je prends la même chose références x composants que je trie cette fois-ci par composants

L'objectif est de faire ceci :

  • pour chaque référence, je prends chaque composant
  • pour chacun de ces composants, je vais chercher dans le deuxième tableau les autres produits concernés
  • et je mets +1 dans la grille au croisement des 2 produits

Pour faire cela facilement, éviter une macro trop complexe et trop longue en temps (c'est déjà plus d'une minute !) :

3ème étape : je vais mettre le rang de chaque référence dans la grille (c'est donc la ligne mais aussi la colonne puisque la matrice est carrée) juste à côité des références dans les 2 tableaux ... cela va éviter des "find" dans la macro

4ème étape : je vais restreindre la recherche des autres références du composant en recherchant à partir de quelle ligne debut et jusque quelle ligne fin je dois rechercher les autres produits comportant ce composant aussi.

Une fois tout ceci mis en place classiquement, je fais tourner une macro assez courte.


nota : je n'avais pas vu le formulaire de choix des références à comparer, l faut dire qu'il y avait des références externes auxquelles je n'avais pas non plus accès.

Re Steelson,

D'accord je comprend beaucoup mieux. Désolé de ne pas avoir joint la base (elle ne sera pas fonctionnel pour autant, je l'alimente grâce à des fichiers textes présents dans un répertoire, qui sera inaccessible depuis ton poste. Mais je vais la remplir).

De plus le fait de s'appuyer sur les rangs pour rechercher plus rapidement dans ta grille et très judicieux! Egalement, le fait d'avoir une grille déjà rempli pour tes les cas de figure, c'est très futé de ta part.

Voici la base: https://www.cjoint.com/c/EFkmsBFWSVM

Penses-tu qu'il est possible d'automatiser cette recherche de communs ? Par exemple, la personne qui veut connaitre le nombre de communs entre deux références aurait à remplir une petite USF avec ces deux références et celle ci retournerais le nombre de communs en effectuant la recherche que tu as codé. (interroger la grille...)

Et avec la méthode que tu utilise peut-on mettre à jour les couples Ref x Composants en s'appuyant sur les données de la base? Avec un tableau croisé dynamique, je sais qu'on peut faire appel à des sources de données externes

N.B.: Le temps d’exécution n'est pas important... Au maximum, on peut se limiter à une durée d’exécution de 1h peut être 2h..

N.B.: Il n'y a pas de référence "externes", mais comme je l'ai dit, la base est soumise à des changements réguliers... Par conséquent il se peut qu'il y ai eu des références supplémentaires qui ont été ajoutées..

Bonjour,

Tout est possible, cela devient un gros projet (même si déjà en soi la recherche des communs n'était pas réellement simple !)

Je ne peux pas ouvrir les fichiers accdb !

Si besoin, scinde ton projet en plusieurs morceaux et ouvre un ou plusieurs nouveaux poss bien ciblés pour appeler plus d'experts sur ces sujets !

Bonjour,

Dommage que tu ne puisse pas ouvrir cette base.

Ok, je vais essayer de le découper en plusieurs parties.

En tout cas j'ai apprécié travailler avec toi, tu m'as apporté une aide très précieuse et je te remercie aussi du temps et de l'énergie que tu m'as consacré. Ton esprit d'analyse et ta réflexion sur les différentes problématiques ont été très intéressante.

A présent, le plus dur est fait. Maintenant il me reste à trouver un moyen de rafraîchir mes données à l'aide de ma BDD Access et de développer une "interface graphique" qui permettrai d'utiliser mon fichier intuitivement.

Encore merci ! Bonne journée.

Rechercher des sujets similaires à "recherche comparaison donnees"