[Résolu] Tri pour classement

ivgu19

XLDnaute Junior
Bonjour le forum,
ayant très peu de connaissance en VBA, je demande de l'aide pour positionner ou retrouver l'emplacement d'une oeuvre d'art en fonction de sa dimension.
Comment , sur 1 liste de lignes variables , les classer en 3 lots sachant par convention de saisie:
"Petit" de 15x15 à 65x54
"Moyen" de 73x50 à 116x89 y compris pour un diptyque cette notation (116x81)x2
"Grand" de 130x81 à 195x130 y compris pour un triptyque cette notation (130x99)x3
J'ai pensé à substituer "x" en " " puis de répartir le résultat en 2 col pour appliquer un si(ou.....
c'est la galère avec les parenthèses et excel ne traite pas sur plusieurs pages !
Je serais heureux de vous lire.
Cordialement
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour le forum,
ayant très peu de connaissance en VBA, je demande de l'aide pour positionner ou retrouver l'emplacement d'une oeuvre d'art en fonction de sa dimension.
Comment , sur 1 liste de lignes variables , les classer en 3 lots sachant par convention de saisie:
"Petit" de 15x15 à 65x54
"Moyen" de 73x50 à 116x89 y compris pour un diptyque cette notation (116x81)x2
"Grand" de 130x81 à 195x130 y compris pour un triptyque cette notation (130x99)x3
J'ai pensé à substituer "x" en " " puis de répartir le résultat en 2 col pour appliquer un si(ou.....
c'est la galère avec les parenthèses et excel ne traite pas sur plusieurs pages !
Je serais heureux de vous lire.
Cordialement
Ayant quelques connaissances en peinture, il faudrait préciser le format de l'oeuvre d'art :
Paysage, Figure ou Marine
ainsi que éventuellement respect de la proportion :
porte d'harmonie ou nombre d'or

F0 à F15 : petit
F20 à F40 : moyen
F50 à F120 : grand
upload_2017-8-21_21-43-20.png
 

ivgu19

XLDnaute Junior
Bonjour,
Je vous remercie de vous intéresser à ce sujet.
La colonne "Format" représente hxl du cadre et je n'ai ni 2, ni 3 colonnes dans la liste "inventaire" comme on peut le voir dans le tableau fourni par Modeste_geedee.
Effectivement selon la catégorie de l'oeuvre (Figure, Paysage ou Marine) les dimensions diffèrent mais dans cet atelier, pour le rangement ou la recherche, l'ensemble est classé en "petit format", Moyen format" ou "Grand format" avec les particularités citées plus haut.
A vous lire bientôt
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Effectivement selon la catégorie de l'oeuvre (Figure, Paysage ou Marine) les dimensions diffèrent mais dans cet atelier, pour le rangement ou la recherche, l'ensemble est classé en "petit format", Moyen format" ou "Grand format" avec les particularités citées plus haut.
A vous lire bientôt
si l'on s'en tient donc à la plus grande dimension du cadre et indépendamment de l'orientation .
"Petit" de 15x15 à 65x54
"Moyen" de 73x50 à 116x89 y compris pour un diptyque cette notation (116x81)x2
"Grand" de 130x81 à 195x130 y compris pour un triptyque cette notation (130x99)x3
en dessous de 73cm on dira "Petit"
a partir de 116cm on dira "Grand" (corriger éventuellement en 130... ???)
entre-deux ce sera "Moyen"


les dimensions en B2 : sous la forme H x L
le classement sera obtenu par :
=INDEX({"Petit";"Moyen";"Grand"};EQUIV(1*SUBSTITUE(GAUCHE(B2;TROUVE("x";B2)-1);"(";"");{0;73;116};1))
upload_2017-8-22_23-57-31.png
 

Pièces jointes

  • Formats_Cadres.xlsx
    14.6 KB · Affichages: 30
Dernière édition:

ivgu19

XLDnaute Junior
Bonsoir Modeste_geedee,
Merci beaucoup pour cette astucieuse formule.
Cependant en consultant l'utilisatrice qui gère ses toiles certains résultats ne lui conviennent pas par convention des peintres et en prenant la correction Grand à partir de 130 :
sur 179 Moyen sur 278 actuellement seuls ces 7 cas ne sont pas dans leur bonne catégorie
81x130 c'est idem 130x81 donc Grand au lieu de Moyen
89x146 c'est idem 146x89 donc Grand au lieu de Moyen
89x130 c'est idem 130x89 donc Grand au lieu de Moyen
97x146 c'est idem 146x97 donc Grand au lieu de Moyen
114x146 c'est Grand au lieu de Moyen
120x120 c'est Grand au lieu de Moyen
(116x81)x2 c'est Grand au lieu de Moyen
Que pensez-vous de ces conditions si particulières?
Si une macro prend le relais, il ne sera plus nécessaire de prévoir une réinitialisation de la formule, effacée par erreur.
Cordialement
 

Modeste geedee

XLDnaute Barbatruc
Bonsoir Modeste_geedee,
Merci beaucoup pour cette astucieuse formule.
Cependant en consultant l'utilisatrice qui gère ses toiles certains résultats ne lui conviennent pas par convention des peintres et en prenant la correction Grand à partir de 130 :
sur 179 Moyen sur 278 actuellement seuls ces 7 cas ne sont pas dans leur bonne catégorie
81x130 c'est idem 130x81 donc Grand au lieu de Moyen
89x146 c'est idem 146x89 donc Grand au lieu de Moyen
89x130 c'est idem 130x89 donc Grand au lieu de Moyen
97x146 c'est idem 146x97 donc Grand au lieu de Moyen
114x146 c'est Grand au lieu de Moyen
120x120 c'est Grand au lieu de Moyen
(116x81)x2 c'est Grand au lieu de Moyen
Que pensez-vous de ces conditions si particulières?
Si une macro prend le relais, il ne sera plus nécessaire de prévoir une réinitialisation de la formule, effacée par erreur.
Cordialement
je pense que si l'on respecte la convention : plus grande dimension en premier
Modeste geedee à dit:
si l'on s'en tient donc à la plus grande dimension du cadre et indépendamment de l'orientation .
la formule fournie fonctionne !!!
upload_2017-8-25_0-34-6.png
 

Pièces jointes

  • cadres.xlsx
    16.1 KB · Affichages: 28
Dernière édition:

ivgu19

XLDnaute Junior
Bonjour Modeste geedee,
Excuser mon absence de ces derniers jours.
Votre dernière formule convient parfaitement, c'est magique.

En utilisant la fonction "enregistrer une macro", j'arrive à peu prés à automatiser ce tri avec qq petits soucis quand je veux simplifier.

ce que je fais:
1) copie de la col D de la feuil2 en col A sur feuil4
2) séparation des HxL par données\convertir qui affecte col A de la hauteur et sur B la longueur en faisant sauter "x". Ici malheureusement l'ordi me rend la main suite au message "cette cellule contient déjà des données.
3) suppression des parenthèses "(" et ")"
4) application de la fonction jusqu'à la dernière ligne 'INDEX({"Petit";"Moyen";"Grand"};EQUIV(MAX(C2;D2);{0;73;116};1))
Je préfère vous dire les étapes prises en compte plutôt que vous faire parvenir mon code qui est très long et qu'au final les étapes seront différentes par VBA.
Bien entendu si vous pouvez me consacrer encore un peu de votre temps.
Dans tous les cas, je vous remercie infiniment.
A bientôt
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin