Objet à glisser sur différents emplacements prédéfinis sur une feuille

Bonjour,

Je me permets de vous soumettre un petit problème de programmation VBA. Pour info je n'y connais rien, c'est pour un proche qui s'y connait en VBA excel et qui souhaite savoir si on peut mettre en oeuvre une solution à son problème.

Je vais vous proposer un exemple qui se rapproche du problème posé.

J'ai une feuille nommée "emplacements" prédéfinis (cellules ou ensemble de cellule).

Ces emplacements sont nommée "terrain1", terrain2", "terrain3", "terrain4", "attente1", "attente2", "attente3", "attente4", "reserve1", "reserve2", "reserve3" et "reserve4".

Sur cette feuille je dispose de 2 objets (2 carrés ou autres) nommés "equipe1" et "equipe2".

Ces objet on pour vocation de passer d'un emplacement à un autre, autant de fois que l'on veut, par un cliquer/glisser.

Sur une autre feuille nommées "Déplacements des équipes" je souhaite que soit enregistrée chaque déplacement (départ/arrivée) de chacun de ces 2 objets "equipe" sur chacun des emplacements prévus à cet effet.

Pour contextualisé le problème ce programme à vocation à gérer des équipes d'arbitres (2 dans cette exemple) qui sont affectés sur une journée de compétition comme étant par exemple en attente d'arbitrer sur le terrain 1, puis affecté à l'arbitrage en cours sur un terrain quelconque, puis affectée à un emplacement reserve quelconque, puis affecté à nouveau en attente 1, 2, 3 ou 4, puis affecté à l'arbitrage du terrain 1, 2, 3 ou 4, et ainsi de suite.

Il convient que l'ensemble de ces affectations soient enregistrées pour chaque équipe (ici les 2 objets) dans la feuille excel "déplacement des équipes d'arbitres.

Pour l'instant le programme est configuré de telle manière que l'on clique sur une équipe, apparait un formulaire pour définir l'affectation de l'équipe en question. On valide et l'objet "equipe" sélectionné se déplace vers l'emplacement souhaité.

Par soucis de simplification il serait plus pratique de cliquer sur une équipe et de la déplacer vers l'emplacement prédéfini souhaité.

Je ne sais pas si cette solution peut être mise en oeuvre. Si oui, auriez vous une solution de programmation VBA permettant de gérer cela par cliquer/glisser ?

2ème solutions proposée :

si la 1ère solution est trop compliquée à mettre en oeuvre, on pourrait envisager la solution suivante : on clique droit sur une équipe (objet), apparait un formulaire permettant de choisir l'emplacement prédéfini sur la feuille excel, on clique sur l'emplacement de destination souhaité et l'objet se déplace à cet emplacement prédéfini sur la feuille, toujours avec l'enregistrement des différents mouvements des objets equipe sur les différents emplacements prédéfinis (de la feuille emplacements) sur la feuille ""déplacements des équipes".

C'est un solution dont je suis également preneur.

J'espère avoir été assez complet, compréhensible et exhaustif dans ma demande.

Je vous remercie par avance de l'aide que vous voudrez bien m'apporter.

Bien à vous tous,

Stefano

Bonjour,

Les 2 solutions sont possibles, mais la 2e me semble beaucoup plus simple à mettre en oeuvre. En effet le problème du glisser déposer c'est que ça va être assez difficile à "détecter" selon moi (on s'éloigne du fonctionnement d'Excel).

Si vous pouviez fournir un fichier correspondant, cela permettrait de vous aider de manière plus concrète si vous le souhaitez.

Pour moi l'option 2 : clic sur une forme => fenêtre de choix d'équipe => déplacement automatique est vraiment quasi identique en terme d'ergonomie que le glisser-déposer...

Merci pour ce retour. En effet la 2ème solution me paraît plus simple.

Toutefois je vais choisir un exemple plus simple.

J'ai une feuille avec 2 emplacements prédéfinis : position1, position2

j'ai un objet A (un carré par exemple) qui ne peut être positionné que sur l'une des 2 positions prédéfinies.

Je souhaite pouvoir laisser cliquer droit sur l'objet et le faire glisser d'une position prédéfinie à l'autre.

Le but est que l'objet ne peut être que sur l'une ou l'autre des 2 positions prédéfinies.

Ainsi si je fais glisser l'objet sur l'une des 2 position, la position se réajuste automatiquement sur l'emplacement de destination si je positionne l'objet pas exactement sur l'emplacement de destination (marge d'erreur autour de la position de destination avec l'objet qui se réajuste automatiquement sur l'emplacement de destination).

On peut aussi envisager des emplacements de destination comme étant d'une superficie supérieure à celle de l'objet. Ainsi si l'objet est déplacé dans cette superficie prédéfinie l'objet est considéré comme étant dans l'emplacement de destination (je ne sais pas si je suis bien clair).

1ere solution : est il possible de programmer un tel déplacement (laisser clique droit et déplacer) de l'objet sur une destination prédéfinie sur la feuille, exactement (réajustement automatique de l'objet), ou sur une superficie définie (ce qui intègre ainsi la marge d'erreur de positionnement).

2ème solution : l'objet A ne peut être positionner que sur un emplacement prédéfini. L'objet passe d'un emplacement à l'autre en cliquant droit sur l'objet et en choisissant l'emplacement de destination.

Merci pour vos retour,

Bien cordialement,

Stefano

Bonsoir Stefanopoulos, Saboh12617,

Si Excel au début à hérité de son aïeul Multiplan le style Tableur (fonctionnement par cellule et feuille). Il a rapidement évolué dans des objets plus élaborés, boutons, formes, images...etc... accessibles facilement par l'utilisateur ou par la programmation objet.

Le tout est au départ de bien construire l'ensemble des éléments nécessaires. Donc d'imager toutes les pièces à déplacer et tous les emplacements qu'elles peuvent occuper. En résumé c'est plus du lego (photos) que des mots (d'explications). Donc présenter un fond d'images où évoluent les pièces et toutes les formes simples ou élaborés de ces pièces.

Mais aussi de savoir si c'est figé. Donc une fois construit pour toujours, et il n'y a pas d'évolution. Ou cela peut évoluer... Car il faut pouvoir assurer ensuite la modification du programme. Cela conditionne aussi que l'on opte pour la facilité de maintenance dès le départ plutôt qu'un programme évolué.

Voir ici par ce lien un exemple du glisser/déposé.Jeu du solitaire

Merci pour ce retour.

Je pense qu'effectivement ce jeu du solitaire intègre le cliquer/glisser. J'espère que mon copain arrivera à identifier dans ce programme ce qui concerne ce cliquer/glisser.

Concernant la 2eme possibilité (clique droit sur l'objet, ouverture d'un formulaire indiquant les différentes positions disponibles, clique sur choix et déplacement de l'objet sur la position prédéfinie choisie), une proposition ?

Encore merci à vous tous,

Stefano

Rebonjour,

Interessant XCellus, merci pour ton intervention je n'avais jamais vu de programme de la sorte dans Excel.

@Stefano, comme indiqué par XCellus (et moi-même encore avant), pour vous faire des propositions il faudrait joindre le classeur avec les formes et les zones. Trop souvent quand nous partons de zéro ça ne correspond pas à ce que vous voulez, et on "travaille" dans le vide.

Merci à tous,

Toutefois petit problème car le programme du solitaire ne correspond pas exactement à la problématique, mais c'est de ma faute, je me suis mal exprimé.

De plus le programme et en 32 alors que je suis 64 bit.

Ma version d'excel est 2007 et celle de mon père, pour qui je pose ces questions est sur office 365, version excel 2507.

Je joins un fichier exemple pour imager la demande.

Il y a 7 emplacements définis qui sont en fait des objets. La position de chaque objet est précisément définie.

Et puis on a 3 autres objets (de même forme et dimension que les emplacements de destination). Ainsi contrairement au jeu du solitaire je déplace un objet sur un autre objet et non d'une cellule sur une autre (dsl, c'est moi qui avait mal compris). Les objets A,B et C ne peuvent avoir comme position que celle des objets emplacements de destination précisément.

Mon père a mis un petit descriptif exemple explicatif.

1- solution cliquer/glisser : je veux pourvoir déplacer chaque objet (A, B, C) par un laisser cliquer droit/glisser ou cliquer droit/glisser sur les 7 objets emplacement de destination. Il faut que l'objet qui se déplace aille exactement sur les objets de destination car adresse d'emplacement clairement définie.

2- solution cliquer objet/cliquer emplacement destination : je clique sur un objet A,B ou C et je clique sur l'objet de destination voulu de manière précise.

3 - solution clique sur objet voulant déplacer (A,B ou C), ouverture d'un menu (formulaire ou menu ou ...) indiquant les objets de destination disponibles, clique sur la position voulu, déplacement de l'objet (A,B ou C) sur l'emplacement choisi

Dsl pour ces longs posts mais j'essaye d'être le plus précis possible.

Je vous remercie vivement par avance de vos retour,

Au plaisir de vous lire,

Stefano

Bonsoir Stefanopoulos,

Merci du retour et du fichier posté. Pour le jeu du Solitaire, le programme peut aussi bien fonctionner en 32 que 64 bits. À partir du moment où je l'actualise pour la version manquante. Ce que je n'ai pas encore fait. Cela ne prends que quelques lignes.

Mais, et je m'en doutais un peu, il est sur-dimensionné pour ton besoin car il est possible d'utiliser beaucoup plus d'emplacement que tu as vraiment besoin. Car, en fait tu as peu de placement autorisé pour une pièce donnée.

Donc, on peut faire plus simple. En réalisant un saut de pièce vers un autre endroit directement, voire même en simulant le déplacement. On verra un court instant la pièce se déplacer selon le choix que l'on aura fait.

Je te renverrais ton fichier demain soir ou au plus tard dimanche soir avec le principe général. Et actif pour les deux versions, Excel 2007 et 365.

Cordialement.

Merci, c'est super sympa.

Le solitaire convenait très bien pour comprendre la logique de programmation. La seule différence est que l'on déplace des pions (objets) sur des cellules et non pas d'autres objets. Sinon cela correspondait exactement au principe demandé de laisser cliquer/déplacé.

Le fichier que j'ai laissé est simplifié. Mais le programme dans son entièreté comprends multitudes d'objets à déplacer sur une multitude d'objets de destination.

Le but est de comprendre le principe de programmation. Moi je n'y comprends rien mais mon père oui.

En tout cas merci beaucoup à vous tous, pour votre réactivité et sympathie

Bien à vous tous,

Stefano

Bonsoir Stefanopoulos,

Voici une première ébauche adaptée au fichier transmis. Ensuite tous va dépendre du nombre de zones pouvant être affichées sur l'écran.

Voir le principe inscrit en police rouge italique. Quelques tests de contrôles sont inclus afin d'éviter un éventuel empilage d'objets sur le même emplacement.

Ce principe est reproductible pour chaque strate d'emplacement. Des commentaires sont insérées dans la partie macro du module 1

Je finirais demain pour les cycles restant de l'exemple proposé.

Suite,

Mise en place du second cycle jusqu'à ACTIVITE.

Mais à partir des points 4 à 5 de ton résumé cela me parait plus flou dans ta démarche.

C'est pourquoi j'ai mis deux questions sous la strate ACTIVITE afin d'obtenir plus de précisions pour continuer.

Merci bcp pour ton retour,

Je soumets tes propositions à mon père et te fait un retour.

Encore merci pour ton aide précieuse

Bonjour à tous, particulièrement à X Cellus et Saboh,

Les réponses données ne correspondent pas tout à fait aux demandes mais les 2 fichiers proposés ainsi que le jeu du solitaire ont permis à mon père de trouver une une solution souhaitée.

Vos réponses et propositions ont été d'une aide précieuse, merci beaucoup pour votre aide.

Ca a permis à mon père d'apprendre des notions de VBA complémentaires et surtout d'apprendre à simplifier sa programmation. Im me demande de tous vous remercier.

J'aurais bien aimé poster la solution qu'il a programmé mais le programme est trop lourd et il ne peut pas isoler la partie concernée par la question.

En fait il a repris la solution X Cellus mais au lieu de cliquer sur le bouton associé à chaque niveau, il a fait en sorte de cliquer directement sur une équipe avec ouverture du fameux menu des différentes destinations possibles.

Vous réitérant mes remerciements,

Bien à vous tous,

Stefano

PS : comment je fais pour clôturer le post pour montrer qu'il a été résolu ?

Bonjour à tous, particulièrement à X Cellus et Saboh,

[...]

Bien à vous tous,

Stefano

PS : comment je fais pour clôturer le post pour montrer qu'il a été résolu ?

Bonjour stephanopoulos, merci beaucoup pour votre retour !

Pour clôturer le fil, choisissez-le (ou les) message(s) de @XCellus qui vous a le plus aidé, et en haut a droite vous avez un petit bouton "check/valider". Cliquez-le.

Bonne journée.

Rechercher des sujets similaires à "objet glisser differents emplacements predefinis feuille"