Afficher une rubrique dans laquelle se trouve un produit en fonction de ses carac.

loukrelh

XLDnaute Nouveau
Bonjour,

Nouveau sur le forum, je suis là pour essayer d’apprendre de nouvelles choses sur Excel.
J’aimerais mettre en place un outil Excel de recherche de Seuil et de calcul dans le cadre de mon travail, mais je n’ai pas « tablé » depuis quelques années...

J’ai défini plusieurs étapes, variables et contraintes.

La première étape est de trouver la ou les rubriques dans laquelle ou lesquelles se trouve un produit chimique en fonction de sa ou ses mentions de danger (Définit par une mention H « … » où « … » est une suite de caractères numériques.
On va donc se concentrer sur deux variables :

-la ou les mentions relatives au produit (à rentrer manuellement dans l’inventaire)
-la ou les rubriques (que l’on recherche) -> liées à des mentions définies dans une Base de données.

Contraintes :
- Catégorie de la mention (Différentes rubriques pour une mention)
- Plusieurs mentions par produit (Chaînes de caractères) et donc par cellule
- Il peut y avoir plusieurs mentions par rubriques
- Un produit peut être dans plusieurs rubriques
- Une mention peut avoir plusieurs catégories (Par exemple, H999 de catégorie 1 mortel pour toto ou de catégorie 2 mortel pour tata)

Voilà, je pense que le plus simple est de comparer une chaîne de caractère (Par exemple : H225-H220-H240) dans une cellule, avec une base de données (Située sur une autre feuille) et de renvoyer une cellule spécifique si l’un des caractères (Par exemple H220) se trouve dans la cellule.

Malheureusement, je ne sais absolument pas comment m’y prendre.
Ce n’est que la première étape du travail, je veux chercher le reste tout seul et reviendrais vers vous si je ne trouve pas (Et si vous acceptez !).

Je vous joins un fichier Excel au cas où mes explications ne seraient pas complètes. (Il y a bien plus de colonnes à la base mais elles ne sont pas utiles pour l’instant)

Merci beaucoup.
 

Pièces jointes

  • Inventaire simplifié.xlsx
    11 KB · Affichages: 82
  • Inventaire simplifié.xlsx
    11 KB · Affichages: 84
  • Inventaire simplifié.xlsx
    11 KB · Affichages: 72
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Bonjour.

Dans la colonne "Rubrique Correspondante" (au singulier ?) vous voulez bien toutes les rubriques concernées par un des "Phrases H" mentionné, mais une seule fois ?
Rien que pour "H300" tout seul il y aurait "4110-4120",
pour "H300-H310-H330-H331", il y aurait "4120-4130", c'est ça ?
 
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Pour l'instant oui,

Le problème est que ces mentions particulières peuvent être suivi d'une catégorie, qui n'est pas forcément explicite.

Je chercherais une parade plus tard, je pense notamment à les appeler H300.cat1, H300.cat2...

Pour compliquer les choses, on pourrait aussi demander lors de l'entrée d'une mention, la catégorie n de celle-ci. ( J'ai vu ça dans un outil vendu par un de nos sous-traitants mais pas pour le même domaine -> Bien entendu, l'outil est bloqué pour éviter la recopie de formule )

Pour répondre à la question, dans un cas simple, si je tape H331-H220, il sera affiché dans l'onglet "Rubrique(s) correspondante(s) "4310-4130"
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Bonjour à tous, bonjour Danreb.

Une possibilité en pièce jointe, par formule, mais en étalant les Hxxx sur plusieurs colonnes (par l'intermédiaire de Données --> Convertir) et aussi les rubriques correspondantes. En VBA, on doir pouvoir faire mieux.

@ plus
 

Pièces jointes

  • Inventaire simplifié.xlsx
    12.8 KB · Affichages: 55
  • Inventaire simplifié.xlsx
    12.8 KB · Affichages: 63
  • Inventaire simplifié.xlsx
    12.8 KB · Affichages: 69

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Merci pour vos réponses,

Le soucis est que le tableau de base est déjà très chargé (stock, fournisseur, état physique du produit etc..)

L'idée est de faire une base de donnée à part afin de réduire considérablement les informations apparaissant dans l'inventaire ( Comme expliqué précédemment ce n'est que la première étape, il y en aura plusieurs pour d'autres spécificités liés au numéro d'identification des produits, leur état physiques, des calculs de seuil liées aux rubriques aux quantités utilisées et stockées etc.. )

C'est pour cela que j'ai pensé à cette solution sur le papier.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Voila un premier jet par macro se déclenchant à l'activation de la feuille "Inventaire simplifié"

Je regarde pour le rendre plus modulaire, ce qui permettrait la rectification d'un seul groupe de rubriques lors du changement d'un groupe de "Phrases H".
 

Pièces jointes

  • DicSpcLoukrelh.xls
    86.5 KB · Affichages: 105
  • DicSpcLoukrelh.xls
    86.5 KB · Affichages: 89
  • DicSpcLoukrelh.xls
    86.5 KB · Affichages: 74
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Merci beaucoup,

C'est exactement ce type de tableau que je recherche !

Il ne me reste plus qu'à analyser et comprendre la macro.. ( ça fait 4 ans que je n'ai pas touché aux macros et je n'y comprend plus rien )

En tous cas, ça me rassure sur le fait que c'est possible et qu'en suivant des tuto je peux surement m'en sortir !
 
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Par contre, (question bête) quand je modifie les mentions ou que je teste des rajouts de produits, rien ne se passe.

Comment activer la macro pour qu'elle soit effective à tous moments ? (Sans avoir besoin de cliquer sur la flèche verte)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Ah parce qu'en plus, et dans ces conditions, vous voulez comprendre la macro ?
Je plaisante … bien sûr !
Ça restera difficile, mais avec cette conception plus modulaire que je vous avais promise, ça le sera un tout tout petit peu moins … j'espère.

Edit. Ah, je n'avais pas vu votre précédent message.
Oui, c'est normal, encore qu'une modification dans la feuille BDD devait normalement se répercuter dans l'inventaire. Mais il n'y avait qu'un recalcul complet à l'activation de la feuille. Maintenant il y a en plus une Worksheet_Change qui recalcule juste les rubriques de la ligne.
 

Pièces jointes

  • DicSpcLoukrelh.xls
    94.5 KB · Affichages: 56
  • DicSpcLoukrelh.xls
    94.5 KB · Affichages: 71
  • DicSpcLoukrelh.xls
    94.5 KB · Affichages: 78
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Merci encore à vous.

Dans l'absolu, j'aimerais pouvoir continuer l'outil tout seul (Je sais, c'est pas gagné)

Par contre, j'ai essayé de comprendre la première macro (Je pense avoir pas trop mal saisi les références) et quand je l'implémente dans mon fichier cela ne marche pas.

J'ai seulement changé les numéros de colonnes, la référence A6 devient A5, la colonne 2 devient 40 et la colonne 3 devient 51. Le reste me semble exactement identique.

Je vais essayer avec la seconde version, et je vous dis ce qu'il en est!

Encore merci, ça m'est vraiment utile.
 
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Bonjour,

Après test, je n'arrive pas à faire fonctionner la macro..

Je vous joins donc l'outil avec votre macro "modifiée".


La feuille base de donnée Seveso NND correspond à la BDD et la colonne "Rubriques ICPE/SEVESO non nommément désignés" correspond à "Rubriques correspondantes".

J'aimerais avant tout comprendre la démarche, car il semblerait que ça ne soit pas le cas !


Merci et bonne journée !
 

Pièces jointes

  • Liste produit chimique 2015 pour test.zip
    275.2 KB · Affichages: 116
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Bonjour.

La colonne 40 est la AN, soit celle sous-titrée "CLAD T1" dans secteur d'utilisation "FPE-Négoces". Elle ne contient que des "x" de temps à autres et non des "Hxxx" séparés par des "-".
En mettant 76 qui est la BX, ça à l'air de donné des résultats dans la 51 soit AY que vous aviez choisie.

Edit: À votre place je donnerais des noms dans le classeur aux colonnes entières untilisées par des macros ou des formules.
Rg.Columns(76) deviendrait Intersect(Me.[PhrasesH], Rg).
Attention, je viens d'y voir des ";" au lieu de "-" vers la fin du tableau.

Autre incohérence: vous avez laissé Target.Offset(, 1) dans la Worksheet_Change. Il faut remplacer ce 1 par la différence entre les colonnes de Target et le résultat ou alors faire Intersect(Me.Columns(51), Target.Entirerow)

Tout ça à supposer que 51 soit bon, ce dont je doute aussi, vu le titre "Quantités en cours"
 
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

En faite, en comptant de la première colonne (Ce qui ne doit pas être la bonne façon de faire), je comptais 40 jusqu'à la mention H puis 51 jusqu'à "Rubriques". Je viens de me rendre compte de cette grossière erreur.

EDIT : J'oubliais les sous colonnes ! Là, ça a l'air de fonctionner !

EDIT 2 : ça fonctionne ! J'ai même réussi à le faire pour la base de donnée ND. Par contre, j'ai l'impression que ça ne m'affiche qu'une rubrique lorsqu'il y en a plusieurs d'identifiées. (Pour la base de donnée ND, liée aux numéros CAS)

L'incohérence des points virgules est du à l'utilisation d'un autre outil Excel qui lui, utilise les points virgules et non les tirets ! ( Un simple copier/coller sans incidence auparavant)

Bien vu pour la correction, je n'ai pas encore repris l'habitude !

Merci beaucoup.
 
Dernière édition:

loukrelh

XLDnaute Nouveau
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

Un autre soucis se pose, les seuils sont différents selon les rubriques.

Serait il possible, lorsqu'il y a plusieurs rubriques ( J'ai bien saisis où se trouve le module qui fait cette opération ) de ne pas utiliser de "-" mais de faire un copier/coller de la ligne, puis de l'insérer en dessous de celle-ci avec la rubrique correspondante dans "Rubriques ICPE/SEVESO..."

Je pense que la modification se situe ici :

TSpl = Split(Phrases, "-")
For M = 0 To UBound(TSpl)
If DicRub.Exists(TSpl(M)) Then
TRub = DicRub(TSpl(M))
For N = 0 To UBound(TRub): Dic(TRub(N)) = Empty: Next N: End If: Next M
RubriquesNND = Join(Dic.Keys, "-")

Par contre les cellules à partir de CJ seront différentes selon les rubriques.

Merci !
 

Dranreb

XLDnaute Barbatruc
Re : Afficher une rubrique dans laquelle se trouve un produit en fonction de ses cara

C'est un peu compliqué. Il faudrait que RubriquesCorresp renvoie un tableau. Donc :
VB:
Function RubriquesCorresp(ByVal Phrases As String) As Variant()
et renvoyer RubriquesCorresp = Dic.Keys tout simplement.
Mais ça c'est la partie la plus simple. Car on ne fait pour l'instant que modifier la feuille inventaire, pas la reconstituer entièrement.
Il faudrait donc vérifie s'il n'y a pas déjà des copies de la ligne pour accueillir les rubriques supplémentaire ou supprimer celles en trop.
Bon courage !
Une autre possibilité beaucoup plus simple serait de tout laisser comme c'est sauf:
VB:
RubriquesCorresp = Join(Dic.Keys, vbLF)
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87