Fonction ou VBA pour placement automatique dans liste

arnaud130

XLDnaute Nouveau
Bonjour,

Etant en stage, j'utilise la majeure partie Excel et grâce à ce forum, j'ai déjà pu résoudre de nombreux problèmes sans avoir besoin de demander de l'aide. Cependant, j'ai actuellement un problème que je n'arrive pas du tout à résoudre, même en essayant de chercher sur le forum. Je m'explique.

J'ai des références en colonne A qui sont installés dans l'ordre dans un entrepôt avec une surface en colonne B. En colonne C, j'ai la nouvelle liste de référence et c'est là qu'intervient mon problème. Il faudrait que les références déjà présentes restent à leur place et que les nouvelles références prennent la place des anciennes mais attention, en fonction de la place disponible.

J'ai essayé en faisant certaines colonnes supplémentaires mais en vain. Je crois qu'une VBA serait plus facile mais je ne maitrise pas assez pour en faire un moi-même
En pièce jointe, voici mon exemple avec quelques annotations, n'hésitez pas à créer une nouvelle feuille si vous le souhaitez.

Merci d'avance pour votre aide qui m'aiderait à un point pas possible pour la suite de mon projet.
 

Pièces jointes

  • Exemple problème.xlsx
    31 KB · Affichages: 47
  • Exemple problème.xlsx
    31 KB · Affichages: 47

vgendron

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour et bienvenu

je viens de regarder ton fichier. et c'est pas bien clair:

plusieurs points:
J'ai des références en colonne A qui sont installés dans l'ordre

quel ordre exactement? pour moi. j'ai pas l'impression qu'elles soient classées..
BS304093 < BS304651 .. mais après tu retombes à BS303731 pour remonter ensuite..etc etc..


dans un entrepôt avec une surface en colonne B.

la colonne B est masquée et vide... dans l'onglet test du fichier que je te renvoie, je l'ai supprimée.

En colonne C, j'ai la nouvelle liste de référence


Il faudrait que les références déjà présentes restent à leur place
ce que je comprend est traduit par la formule colonne D de l'onglet test

en fonction de la place disponible.
et c'est quoi la condition pour savoir s'il y a de la place disponible?

en répondant à ces questions, on devrait certainement clarifier ton besoin et la solution
 

arnaud130

XLDnaute Nouveau
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour,

Tout d'abord merci pour votre réponse:

La colonne B était effectivement inutile, je l'avais réduite lors d'un essai mais plus nécessaire maintenant.

Effectivement la colonne D (anciennement colonne E dans mon fichier) reprend les références encore présentes et devant restant à leur place initiale.

C'est là qu'est la difficulté: Il faudrait que les cellules vides de cette colonne D (D4,D5,D13,D14,D15,D20,... mais attention ce ne seront pas tout le temps ces cellules qui seront vides) soient complétées par les références de la colonne F. Cependant, elles ne peuvent pas être mises au hasard car par exemple, la cellule vide D4 a une surface de 2.18 car c'était l'espace nécessaire pour la référence A4.. Dans l'idéal, j'aimerais que ca soit la cellule F9 qui y aille car ca serait celle qui occupe le mieux l'espace de 2.18.

J'espère avoir été plus ou moins clair et n'hésitez pas à me reposer des questions.

Merci d'avance.
 

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour

Est-ce que par un heureux hasard tu aurais la liste de surfaces de toutes tes références BS... possibles et pas seulement celles du 3/3/2016 ?

@ plus
 

arnaud130

XLDnaute Nouveau
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour,

J'ai une autre feuille qui calcule automatiquement la surface en fonction de la référence en fait. (Une référence contenant plusieurs articles avec des surfaces au sol différentes). Dans le fichier excel, il y les surfaces pour les références en colonne A (colonne B) et puis pour les nouvelles issues du 3/3/2016 en colonne G.

(Pour le moment il y a que ca comme références, ce sont des références de commandes en fait et le but est de les entreposer préparées dans un espace):

Merci d'avance.
 

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour

Cf. en pièce jointe. C'est presque ce que tu voulais, puisqu'il y a plusieurs possibilités pour les emplacements égaux à 2,07.

La formule en colonne I est assez compliquée car il faut prendre en compte trois possibilités :
* Référence toujours présente, à ne pas déplacer. Facile
* Nouvelle référence, à placer dans un emplacement "juste" un peu plus grand si possible
* Nouvelle référence, sur un emplacement pas encore utilisé précédemment.

Et effectivement, ce sont les références ayant des surfaces au sol identiques (1,624 et 2,07) qui posent problème. Pour les différencier, j'ai mis des +LIGNE(Nouveaux)/100 dans la formule dans la colonne H.

Défaut du système : Si tu prends comme repère la surface occupées par les anciennes références, les surfaces disponibles, et donc occupées vont petit à petit diminuer. Ex : En B4, on à 2,18, surface qui devient 2,1 en J4. Cela serait mieux de mettre une colonne repère.
De même, cette méthode ne prend pas en compte la possibilité de mettre deux références sur un seul et unique emplacement.

Si je trouve plus simple...
@ plus

P.S : J'ai aussi changé les formules en colonnes D et E.
 

Pièces jointes

  • Exemple problèmeter.xlsx
    31.5 KB · Affichages: 29
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour

"Idem", avec une colonne en moins.

@ plus

P.S : Il faut aussi aller voir les définitions de Nouveaux, Nouveauxcroissant, Spacenouv et de Spacenouvcroissant
 

Pièces jointes

  • Exemple problèmequatre.xlsx
    31.4 KB · Affichages: 33
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonsoir

Simplification de la formule dans la colonne H.
Modification : Colonne G, les /100 ne minimisent pas assez le poids des lignes par rapport au poids des surfaces. J'ai donc mis des /100000.
Ex : 1,78+11/100 = 1,89 alors que 1,78+11/100000=1,78011, plus proche de 1,78, donc ne modifiant pas trop le classement croissant des références.
diviserpar100000.JPG

En utilisant +LIGNE(Nouveaux)/100000 au lieu de +LIGNE(Nouveaux)/100 pour différencier les ex-aequo (même surface), on n'obtient pas exactement les mêmes résultats, mais c'est normal puisqu'il y a plusieurs surfaces à 1,624 ou à 2,07, donc plusieurs possibilités parmi les références correspondantes.

@ plus
 

Pièces jointes

  • Exemple problèmecinq.xlsx
    31.2 KB · Affichages: 37
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour

Une autre possibilité, sans autant de colonnes intermédiaires.

Quelques remarques :
1) On colle la liste des références à partir de C4.
2) On tire la formule en D3 vers le bas. Elle donne la surface des références présentes en col A et en col C, en vert, ou "" lorsqu'il s'agit d'une nouvelle référence BSx. Il faut remplacer ces "" par la surface occupée par la nouvelle ref BSx.
3) Colonne F, la formule va afficher la surface de la ref, ancienne ou nouvelle. C'est cette formule qui guide le classement des nouvelles références. Les +LIGNE(Spacenécessaire)/100000 ne sont pas là pour différencier les surfaces ex-aequo, mais pour "porter" le n° de la ligne contenant l'information intéressante avec la surface de la ref. Ainsi, en F4, on a 2,10014 qui signifie surface =2,10 et ligne=14. J'ai mis dans cette colonne un format personnalisé pour ne pas afficher les 0.
4) Colonne E, on affiche les ref, soit, dans les cellules bleu clair, celles n'ayant pas bougées, données col A, soit, dans les cellules sur fond blanc, celles en colonne C, Orders, sur la ligne donnée à la "fin" de la surface, colonne F. En G4, c'est celle en C14 à cause du 14 à la fin de 2,10014.

@ plus

P.S : Si tu obtiens les surfaces correspondant aux nouvelles ref avec une formule, le plus simple serait de modifier la formule dans D3 pour l'inclure dans celle qui y est déjà.
 

Pièces jointes

  • Exemple problèmesix.xlsx
    31.5 KB · Affichages: 36
Dernière édition:

arnaud130

XLDnaute Nouveau
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour,

Tout d'abord un grand merci pour le temps que vous avez consacré afin de m'aider. Je viens de regarder vos fichiers Excel, ils sont très intéressants et ont l'air de vraiment répondre à ce que je recherchais.

Défaut du système : Si tu prends comme repère la surface occupées par les anciennes références, les surfaces disponibles, et donc occupées vont petit à petit diminuer. Ex : En B4, on à 2,18, surface qui devient 2,1 en J4. Cela serait mieux de mettre une colonne repère.
Je me suis fait la même réflexion mais ayant déjà beaucoup de complexité dans mon problème, je n'ai pas voulu rajouter cette contrainte dans un premier temps... Si vous aviez une solution à cela, elle est la bienvenue bien sûr.

J'ai regardé à vos deux derniers fichiers, l'avant dernier me semble très intéressant. Par contre pour le dernier, en colonne D, ca me pertube un peu que la formule ne soit pas pour toutes les cellules étant donné que les cellules vides ne sont pas tout le temps les mêmes.

Encore merci,

Arnaud
 

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour

Pour ce qui est de la colonne D du dernier fichier, si tu obtiens les nouvelles surfaces sur une autre feuille à l'aide de formules, tu peux les importer automatiquement, avec un RECHERCHEV, ou un INDEX(....;EQUIV(.....)). Cf. un exemple dans le fichier en pièce jointe.
Si tu ne vois pas comment faire, pourrais-tu mettre en pièce jointe un extrait de ton fichier réel, avec la feuille "Orders detail place", et aussi la feuille où sont les calculs donnant les nouvelles surfaces.

@ plus
 

Pièces jointes

  • Exemple problèmesept.xlsx
    31.5 KB · Affichages: 30

CISCO

XLDnaute Barbatruc
Re : Fonction ou VBA pour placement automatique dans liste

Re


Pour ce qui est de la diminution progressive des surfaces apparemment disponibles

Bonjour,

Je me suis fait la même réflexion mais ayant déjà beaucoup de complexité dans mon problème, je n'ai pas voulu rajouter cette contrainte dans un premier temps... Si vous aviez une solution à cela, elle est la bienvenue bien sûr.

Encore merci,

Arnaud

il suffit de choisir les nouvelles références, non pas par rapport aux surfaces des références évacuées (colonne C), mais par rapport à des valeurs mises dans une colonne référence (colonne A) (1er remplissage ?).

@ plus
 

Pièces jointes

  • Exemple problèmehuit.xlsx
    31.8 KB · Affichages: 39

arnaud130

XLDnaute Nouveau
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour,

J'intègre un de vous tableaux à ma feuille complète et je vous envoie le résultat afin que vous voyiez le tableau dans l'ensemble de la feuille et qu'il puisse être adapté de nouveau.

Bien à vous.
 

arnaud130

XLDnaute Nouveau
Re : Fonction ou VBA pour placement automatique dans liste

Bonjour,

Voici un document plus complet avec les données. Votre tableau se trouve à la ligne 328.
Dans les tableaux au dessus, les références sont mises selon leur disposition dans la colonne A. ( en mettant une référence, tous les produits s'affichent automatiquement selon des liens que je n'ai pas mis dans l'exemple car ca n'aurait pas été du coup j'ai juste copier les résultats).

Je bloque à faire fonctionner les formules de votre tableau.

Avec les macros, l'idée est de faire passer les nouvelles valeurs en A et B chaque matin en appuyant sur la macro. Un retour en arrière peut aussi être possible.

Merci d'avance pour votre temps.
 

Pièces jointes

  • problèmeexcel.xlsx
    83 KB · Affichages: 25
  • problèmeexcel.xlsx
    83 KB · Affichages: 34

Discussions similaires

Réponses
8
Affichages
513

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 193
dernier inscrit
Raf'