Création de nom par rapport à plusieurs paramètres
Bonjour tout le monde,
Bon je viens avec une demande assez dur à expliquer d'où le titre un peu "confus"
En effet, j'ai un fichier avec plusieurs colonnes : Fournisseur / Matière / Epaisseur / Finition / Teinte
De ces colonnes je veux ressortir des noms qui sont fait de la manière suivante :
Fournisseur (nom raccourci grâce à une formule) - Matière (raccourci via une fonction) - un nombre (je détail ci-après comment il fonctionne) qui donne à peu près un truc comme ça : xx-xx-xx (exemple : BD-BF-1 -> BOIS DORMANT / BAMBOU FLEURI / 1)
Pour le nombre à la fin du nom il se fait de la façon suivante :
4 paramètres doivent être prit en compte : le fournisseur / la matière / la finition / la teinte
Exemple :
- BOIS DORMANT (fournisseur) / BAMBOU FLEURI (matière) / Finition mat (finition) / Sans teinte -> comme c'est la première occurrence alors on trouverait le nombre 1
- BOIS DORMANT / BAMBOU FLEURI / Finition mat / Teinte légère -> c'est une autre occurrence du coup lui aussi se retrouverait avec un 2 car on a le même fournisseur, même matière, même finition mais pas la même teinte
- BOIS DORMANT / BAMBOU FLEURI / Finition mat / Sans teinte -> on a de nouveau le 1 même s'il était déjà présent avant comme on se retrouve exactement avec les mêmes paramètres alors on reprend le nombre déjà présent même si l'épaisseur est différente
Ci-joint un fichier qui pourra peut-être mieux vous montrer ce que je souhaite, je ne sais absolument pas comment faire pour le nombre, le reste me semble plutôt accessible (sans passer par du VBA peut être que cela serait plus simple avec je ne sais pas)
Merci d'avance à vous et n'hésitez pas à me dire si ce n'est pas compréhensible
Cordialement,
Bonjour à vous deux,
@BrunoM45 en fait il faut qu'on puisse faire une différence de chaque "produit" car on va mettre tout sur le web, et le parcours client fait qu'il est possible qu'au départ il y est par exemple deux "Bambou fleuri" en choix puis en finition mat, comme il s'agit de deux fournisseurs différents on doit faire le distinguo dès l'intégration pour éviter d'envoyer n'importe quoi à nos fournisseurs, et on veut éviter une référence à rallonge
@Arturo83, je vais regarder ta formule mais pour le moment je ne la comprends pas et le pire c'est qu'au vue du screen ça a l'air de répondre à la demande
si le chiffre de combinaisons identiques ne dépasse pas , alors essayez ceci:
qu'est-ce que cela veut dire ?
Merci à vous !
Sinon si le chiffre dépasse 9 (lorsque le nombre de Fournisseurs et matières sont identiques, puisqu'on incrémente de 1 à chaque fois), alors autre formule:
=SI(ET($F2=$F1;$G2=$G1);$F2&"-"&$G2&"-"&SI(LIGNE()=2;CNUM(DROITE($H1;1))+1;CNUM(SUBSTITUE(DROITE($H1;2);"-";"";1))+1);$F2&"-"&$G2&"-1")@Arturo83,
Si je comprends bien la formule celle-ci ne se base que sur les deux colonnes d'abréviation c'est ça ? Il ne faudrait donc pas que sur deux lignes de suite je me retrouve avec les mêmes "paramètres" car sinon j'aurais tout de même une suite ?
Exemple :
Ligne 1 : HETRE CONTENT / BAMBOU FLEURI / FINITION MAT / SANS TEINTE
Ligne 2 : HETRE CONTENT / BAMBOU FLEURI / FINITION MAT / SANS TEINTE
Dans ce cas là j'aurais avec ta formule :
HC-BF-1
HC-BF-2
Ai-je raison ?
(Le cas n'est pas représenté dans le fichier mais il pourrait arriver si demain le fournisseur par exemple mais deux épaisseurs différentes mais tous les autres paramètres pareil sur deux lignes qui se suivent : à 99% du temps ça ne devrait pas arriver mais c'est un risque surtout chez des petits fournisseurs avec très peu de produits disponibles)
Oui, je me suis basé à ce que vous avez mis dans le fichier initial, maintenant si on doit inclure l'épaisseur, la finition et la teinte, dans ce cas il suffit de rajouter ces 3 conditions dans la fonction ET.
=SI(ET($F2=$F1;$G2=$G1;$C2=$C1;$D2=$D1;$D2=$D1);$F2&"-"&$G2&"-"&SI(LIGNE()=2;CNUM(DROITE($H1;1))+1;CNUM(SUBSTITUE(DROITE($H1;2);"-";"";1))+1);$F2&"-"&$G2&"-1")Mais il faut impérativement que le tableau soit trié.
@Arturo83, je viens de regarder ton fichier. Du coup, ici le problème c'est que maintenant des finitions différentes comportent le même numéro, ou alors c'est fait exprès pour montrer cette notion de tri ?
Merci à toi
Tout dépend comment sont triées les données. La finition est-elle prioritaire sur l'épaisseur? idem pour la teinte?
Il faudrait dire quel sont les priorités dans le tri.
Voici différent exemple de ce que je souhaites en soit :
Ligne 1 : HETRE CONTENT / BAMBOU FLEURI / FINITION MAT / SANS TEINTE (/ Epaisseur 27) = HC-BF-1
Ligne 2 : HETRE CONTENT / BAMBOU FLEURI / FINITION MAT / SANS TEINTE (/ Epaisseur 35) = HC-BF-1
Ligne 3 : HETRE CONTENT / BAMBOU FLEURI / FINITION MAT / TEINTE LEGERE (/ Epaisseur 27) = HC-BF-2
Ligne 4 : HETRE CONTENT / BAMBOU FLEURI / FINITION BRILLANTE / TEINTE MIEL (/Epaisseur 35) = HC-BF-3
Ligne 5 : HETRE CONTENT / BAMBOU FLEURI / FINITION BRILLANTE / TEINTE ANTHRACITE (/Epaisseur 35) = HC-BF-4
Du coup en soit je souhaite pas forcément faire un tri mais si tu me dis que c'est obligatoire pourquoi pas mais je sais pas trop ça serait comment
Merci à toi !
Bonjour,
Je ne comprends pas trop la logique à suivre, alors pour être sûr de bien faire les choses, je vous propose un petit organigramme à remplir en fonction de la situation rencontrée.
J'explique:
-Supposons que la première ligne traitée renvoie HC-BF-1 (premier rectangle aux coins arrondis dans l'organigramme)
-On traite la ligne suivante: Suivant les cas rencontrés et en fonction des réponses, quels sera le chiffre à attribuer?
Pour les 2 premiers cas de figures, je suppose qu'il faut mettre 1, mais pour les autres cas ?
la même chose sous forme de fichier
Cdlt
Hello Arturo83,
Très bel organigramme, je suis en train de voir pour le remplir, dans les rectangles suivant le premier lorsque tu mets "1" cela signifie t'il qu'il s'agit d'un nouveau "1" ou alors qu'il s'agit toujours de "HC-BF-1" ? Car déjà si pas le même fournisseur : HC se transforme on est ok ?
Merci à toi,
Cordialement,
EDIT : Voici le fichier j'espère l'avoir bien complété
En fait, dans la précipitation, j'ai déposé le fichier avant de l'avoir complètement fini, en réalité il est beaucoup plus complexe que ça.
En effet, quand on se pose une question (dans un losange), il faut passer à la question suivante et ainsi de suite pour arriver à la décision finale qui est l'attribution d'un numéro, mais pour cela il faut se poser toutes les questions représentatives de tous les cas de figures qui peuvent se présenter (17 cas de figures peuvent se présenter).
Une fois l'organigramme correctement rempli, on pourra élaborer un bout de code qui fera tout le travail, mais avant cela il faut bien définir toutes les possibilités, c'est la base d'un résultat efficace et juste.
Je réexplique le principe, on suppose que la première ligne de votre fichier est remplie, et que le code qui en ressort est BD-BF-1, maintenant, on se place sur la 2ème ligne du fichier et à l'aide de l'organigramme, en posant les questions et suivant les réponses OUI ou NON, on arrive aux derniers pavés (rectangles) dans lesquels on inscrira le N°. C'est le principe de base, après j'adapterai dans le code.
Désolé pour le travail que je vous demande.
Arturo83,
Voilà le fichier ci-joint j'espère que j'aurais réussis à faire l'exercice comme il faut à savoir que j'ai commencé tout à droite pour revenir vers la gauche ;)
J'ai fait exprès de te mettre des chiffres différents cela montre que l'épaisseur n'a pas d'impact, par contre, j'ai fait comme si chaque "cas" (losange) était une nouvelle ligne d'où le fait que tu as un autre nombre
N'hésites pas à me dire si je n'ai pas bien fait l'exercice je le referais sans soucis c'est très gentil en tout cas à toi de m'aider
Vous n'avez pas à être désolé au contraire vous cherchez à m'aider et comprendre c'est moi qui suis désolé de ne pas savoir mieux expliquer et de voir que le problème est si complexe
Merci à toi !
Il me semble que ce que vous avez mis dans l'organigramme ne va pas, dans le cas où le fournisseur est identique au précédent mais que la matière est différente, je pense qu'il faut remettre le N° à 1 et non pas l'incrémenter, du moins c'est que j'ai fait dans l'appli.
Faites les essais et dites-moi si ça colle bien. En cliquant sur le bouton jaune, cela tri les données pour pouvoir les traiter, cela recrée aussi toutes les formules.
La formule pour sortir la référence s'écrit ainsi: =Reference(LIGNE())
Si le tri vous gêne, on peut avant de faire le tri, numéroter chaque ligne, exécuter la macro, puis refaire un tri à la fin pour retrouver l'ordre d'origine.
Cdlt
Bonjour Arturo83,
Désolé je viens seulement de voir votre réponse, je suis en train de l'examiné, effectivement je me suis peut-être trompé dans l'organigramme car lorsque j'explore votre rendu sur le fichier envoyé, cela semble tout à fait coller à la demande.
Je vais m'attarder sur le code pour voir si je comprends déjà son fonctionnement, de ton point de vue existe t'il une limite dans ce que tu viens de réaliser ? Par exemple au delà d'un certains n° cela risquerait de planter ? Ou alors des problèmes de majuscules ?
Merci d'avance à toi et en tout cas super boulot c'est incroyable.
Pour l'ordre d'origine effectivement cela pourrait m'intéresser, car il se peut qu'une fois que tout le fichier soit rempli je fasse une grosse macro pour sortir les informations utiles et en faire un csv qui sera ensuite intégré.
Encore merci à toi, très beau boulot
Bonjour,
J'ai prévu des n° avec 3 chiffres, soit 999 max, s'il en faut plus il faut changer le chiffre 3 dans la ligne de code suivante (attention cette ligne existe 2 fois):
N° = Mid(Cells(ligne - 1, "H"), PosTiret + 1, 3) + 1 'on récupère le N° de la référence précédente auquel on ajoute 1.
Sinon, pas de plantage à craindre.
Cdlt
Bonjour Arturo83,
Merci beaucoup pour tout ;)
C'est vraiment un super beau travail !
Bonne journée et bon courage à toi,
Cordialement
