XL 2013 Deplacer Formes/Shapes pour gerer l'espace dans un entrepot

Lea131

XLDnaute Nouveau
Bonjour à tous et bonne annee!
Je vous ecris car je dois creer un fichier Excel de gestion de stock et d'espace d'un entrepot. Le sujet a deja ete aborde des centaines de fois sur tous les forums excel que j'ai pu trouver, cependant, a ma connaissance, aucun n'apporte de solution a un aspect que je voudrais developper : une interface graphique interactive.
Je vais vous decrire ce que j'entends par la et savoir si c'est realisable, puis avoir un peu d'aide sur une partie de code que je ne maitrise pas (Precision : je ne suis pas un killer en VBA mais j'en maitrise les bases je dirais...)

Pose du probleme:
On veut entreposer des boites longilignes sur des etageres. Le programme doit pouvoir servir a renseigner l'emplacement d'une nouvelle boite (ou le nouvel emplacement d'une boite qui a ete deplacee) et a rechercher ou se trouve une boite en particulier.

*Espace de stockage:
L'entrepot en question est consitue de 11 portants (2 portants forment un "RACK") disposes sur 3 niveaux ("LEVEL") et chaque niveau ayant 4 espaces ("POSITION") occupables possibles. Cependant vu que l'on peut empiler deux boites l'une sur l'autre, j'ai mis dans mon programme 6 niveaux, 2 niveaux "virtuels" par niveau reel.
Chaque rack fait 10 feet de long (=espace entre deux portants). Ainsi lorsque l'on pose une boite sur le Level 1, 3 et 5 elle doit faire au moins 11 feet pour tenir. Pas de limitation de taille pour le Level 2, 4 et 6 lorsqu'il y a une boite dans le niveau d'en dessous sur laquelle se reposer. Les petites boites sont donc logiquement rangees au dessus des plus longues. Derniere subtilite, puisqu'on pose des boites sur des portants avec le vide au milieu, les box depassent des racks en longueur a droite et a gauche forcement, donc pour le rack le plus a gauche et le rack le plus a droite j'ai augmente l'espace de stockage possible pour representer cela. Une autre consequence de ceci est le fait que la position d'une boite sera definie par la position de son milieu.

*Materiel a entreposer:
Des boites ayant chacune un numero unique qui leur est attribue et que l'on renseigne lorsqu'on la cree. Une boite occupe une position sur un level d'un rack.

*Ce que j'ai fait jusqu'a present:
J'ai cree un bouton qui ouvre un userform et demande a l'utiisateur de remplir les caracteristiques de l'equipement: Equipment (ex: Profile, Pipe..), Box Number (ex: L-456-789), Owner (ex: Cirtec..), Dimension ft (ex: 10). Cela cree une shape de la taille renseignee dans l'userform et comportant le numero d'identification, a l'emplacement "To store".

*Ce que j'aimerais pouvoir faire dans l'ideal:
->J'aimerais que l'utilisateur puisse ensuite avec sa souris bouger la forme et la mettre a l'emplacement desire. Bien sur idealement il ne pourrait pas la poser sil ya deja une shape a l'emplacement desire (message d'erreur eventuellement), il ne pourrait pas la mettre aux etages 1,3 et 5 si elle fait moins de 10ft, ni aux etages 2, 4 et 6 s'il n' a pas de box a la meme position a l'etage inferieur. Puis il cliquerait sur le bouton "Save". Pour etre sur qu'elle est positionne de maniere correcte dans un emplacement et non un chevauchement, le programme la positionnerait dans la cellule top.right correspondante et demanderait a l'utilisateur si l'emplacement correspondant (rack, level, position) lui convient. S'il dit oui, le programme enregistre l'emplacement et l'affiche a cote des informations deja presente pour la boite dans la worksheet, s'il dit non elle revient a l'emplacement "to Store" en attendant d'etre replacee. Ceci est le cas de figure ou une nouvelle boite est ajoute. Un process similaire devrait etre fait lorsqu'une boite deja en place change de position, on updaterait ses informations d'emplacement.
->Enfin, cerise sur le gateau, je voudrais faire une deuxieme worksheet qui enregistrerait les modifications apportees par tel ou tel utilisateur du document.

Mon probleme numero 1 c'est que je ne sais pas gerer la manipulation des formes par la souris.
-Comment savoir ou est situe une forme et comment enregistrer son emplacement.
-Comment effectuer mes tests pour savoir si la forme a le droit de se positionner la ou pas
Mon probleme numero 2 c'est l'enregistrement de l'historique des modifications en fonction de l'utilisateur (absolument aucune idee de comment on fait ca)

Je vous joins mon fichier tel qu'il est actuellement.

En vous remerciant pour toute aide eventuelle..
 

Pièces jointes

  • Booktest.xlsm
    50.5 KB · Affichages: 36
Dernière modification par un modérateur:

youky(BJ)

XLDnaute Barbatruc
Re : Deplacer Formes/Shapes pour gerer l'espace dans un entrepot

Bonjour Lea131,
Bienvenu sur le forum pour le 1er message.
Je viens de faire un fichier exemple afin de montrer comment procéder.
J'utilise des labels qui sont bien manipulables.
Explications dans le fichier.
Reviens ici si besoin de plus amples renseignements
Bruno de Caluire
 

Pièces jointes

  • Pour_Lea.xlsm
    31.5 KB · Affichages: 38

Lea131

XLDnaute Nouveau
Re : Deplacer Formes/Shapes pour gerer l'espace dans un entrepot

Bonjour Bruno!
Un Lyonnais en plus, parfait! =)

J'ai reussi a avancer (avec de l'aide!) sur mon premier fichier depuis que j'ai poste la premiere fois du coup je n'utiliserai pas la partie de ton code pour creer et supprimer les shapes meme si elle avait l'air pas mal!

Par contre tes fonctions Worksheet_BeforeDoubleClick et Worksheet_BeforeRightClick m'interesse, je pense que je vais essayer de les adapter a mon projet. Typiquement je ne sais pas si elles peuvent etre adaptables a ce point la, mais j'aimerais que pour chaque forme de mon projet, je puisse:
-avec un simple click, selectionner la forme et la bouger, enregistrer son emplacement (ce qui se passe actuellement)
-avec un click droit ou double click, qu'une fenetre s'ouvre avec des informations detailles de ce qui se trouve dans la boite en question (boite representee par la forme)
Est ce que tu penses que c'est faisable et si oui comment t'y prendrais tu?

Mon autre defi est de pouvoir avoir des couleurs differentes sur les formes lors de leur creation en fonction de l'equipement se trouvant dans la boite qu'elle represente. Facile a faire si c'est une seule fois a la creation sauf que j'ai des boucles qui testent si la forme est bien placee et la font passer en rouge si ce n'est pas le cas. Donc je vais devoir rajouter des tests a l'interieur pour que lorsque le rouge disparait car le placement est desormais correcte, la couleur adequate se remette a jour. Un peu de travail encore donc!

Je vais te transmettre mon fichier tel qu'il est actuellement pour que tu puisses me dire ce que tu en penses.

Un grand merci pour ton aide!
 

Pièces jointes

  • Entrepot V03.1.xlsm
    77.8 KB · Affichages: 38
Dernière modification par un modérateur:

youky(BJ)

XLDnaute Barbatruc
Re : Deplacer Formes/Shapes pour gerer l'espace dans un entrepot

Bonjour,
J'ai regardé et c'est pas facile ton truc,
Voici les modifs que j'ai apporté au fichier
Dans la macro inserer_une_forme
ajoute 4 lignes .OnAction = "indication et .select et Selection.Interior.ColorIndex = 3'et [O20].Select
et puis ajout Box ThisWorkbook.Worksheets(1).Range("G" & lastRow2) = "Box" & countshape


.Top = ActiveSheet.Range("Q11").Top
.Left = ActiveSheet.Range("Q11").Left
.OnAction = "indication" ''''''''''''''''''''''''''''''''''''''''''
.Select ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Selection.Interior.ColorIndex = 3'''''''''''''''''''''''''''''''''''
[O20].Select
End With
End Sub


Dans module1 ajoute cette macro


Sub indication()
On Error Resume Next
bx = Application.Caller
Set Rng = Application.InputBox("Selectionner la cellule du haut!", Type:=8)
If Err > 0 Then Exit Sub
With ActiveSheet.Shapes(bx)
.Select
.Top = Rng.Top
.Left = Rng.Left
'si bien placé
Selection.Interior.Color = 13998939 'pour remettre bleu
End With
[O20].Select
End Sub


De cette façon les forms auront une macro affectée
Tu peux créer une nouvelle form dans ce fichier pour voir le résultat
Bruno
 

Pièces jointes

  • Entrepot V03.1B.xlsm
    68.3 KB · Affichages: 72

Discussions similaires

Réponses
6
Affichages
267
Réponses
8
Affichages
210

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou