Déplacer une cellule d'un codage VBA

Bonjour actuellement entrain de réaliser un programme pour me familiariser avec le logiciel VBA pour mes études à venir en septembre 2021 je viens solliciter votre aide.

Mon objectif : Un plateau de jeu avec des questions

- Plusieurs questions dans un userform qui me donnent le droit de relancer le dé si je trouve la bonne réponse.
- La valeur du dé que j'ai lancé me fait avancer de X cases sur mon plateau de jeu que j'ai représenté sur la feuille excel.
- Si je ne réussi pas a aller au bout du plateau en moins de (X coups) je perds. (Cette partie la je la coderai plus tard, là n'est pas le soucis).

Problème : Codage pour déplacer une cellule dans la feuille

- Je ne parviens pas a trouver par quel moyen je peut coder quelque chose pour que lorsque je tire le chiffre X, il y est un certain pion qui avance de X cases sur mon circuit. (J'ai déja coder les différentes cases de mon jeu par exemple :
Case 1
colonne 2
ligne 2

- J'ai entendu parler de la formule Cells mais je n'arrive pas à la mettre en place dans mon codage, je joint mon fichier si besoin pour plus de compréhension.

Un grand merci de votre aide et de votre soutient. C'est beau l'entraide !

Bonjour,

Ce post ressemble étrangement à celui ci ... Inspirez-vous en, voir entraidez vous ?

Cdlt,

Bonjour, en faisant mes recherches j'ai effectivement vu ce post mais l'utilisateur ne répond pas. Si quelqu'un peut m'aider je serai ravi

bonjour,

Coder toutes les cases du jeu ne présente aucun intéret YAKA interroger le programme pour lui demander l'adresse de la case départ ou arrivée.

Une simple fonction vous la renverra :

Function PosCell$(i%)
Dim plage As Range, Cellule As Range, s$
Set plage = Range("B2:O10")
For Each Cellule In plage
   If Cellule.Value = i Then
      s = Cellule.Address
      Exit For
   End If
Next
PosCell = s
End Function

et pour interroger la fonction :

Sub AfficheAdresse()
Dim NumCell%
NumCell = 5
s = PosCell(NumCell)
   MsgBox "Cellule " & NumCell & Chr(10) & "ligne =" & Range(s).Row & Chr(10) & "colonne =" & Range(s).Column
End Sub

A+

Bonjour galopin un grand merci pour ta réactivité et le temps consacré.
Je suis vraiment novice et je n'ai pas tout compris (voir même pas grand chose).

La fonction posCell définie la plage du jeu entière mais pas le tracé précis je ne comprends donc pas comment le pion peut ensuite avancer correctement sur le chemin en suivant les virages etc si je ne défini pas le tracé a un moment du code.
Et pour ce qui est du lien avec le dé je ne vois pas ou insérer ma variable du dé KEJEDOI ressortir pour l'insérer dans le code en disant en français :

Si la valeur tiré du dé est X --> faire avancé le pion de la case 1 à la case 1+X par exemple.

En espérant que je reste compréhensible. Merci d'avance !

Bonjour,

Arrivez-vous à retrouver la position de votre pion par macro ? Où bloquez vous ?

Cdlt,

La position du pion de départ se trouve en cellule A2 et doit suivre le tracé représenté dans la feuille au fur et à mesure du lancé de dé pour arriver en cellule P6. Je n'ai pas réussi a coder quelque chose d'efficace pour le moment qui soit en lien avec mon dé et qui se déplace sur la bonne trajectoire pour le moment.

Malheureusement..... Je cherche depuis un moment déja mais mes compétences touchent à leurs fin à ce niveau là

Le chemin qu'il doit suivre est sans intéret : L'important est de connaitre le point de départ et le point d'arrivée. Simuler le chemin intermédiaire est sans grand intéret.

Excel n'est pas destiné à simuler une animation.

A+

Bonjour à tous,

Quand je parlais de position, je parlais de position dynamique. Il y a peut être plus optimisé, j'attends de voir si quelqu'un poste un alternative.

Par contre je vous laisse l'adapter à votre fichier, pour récupérer la valeur du dé et la placer dans la macro de déplacement . Ici elle était fixée en AB1, mais elle peut être intégrée dans une variable sans passer par la feuille :

Sub DEPLACEMENT()
Dim CELLULE()
Dim POS_I$, i%, DE%
DE = [AB1] 'A adapter pour récupérer directement a partir du USF
CELLULES = Array("$A$2", "$B$2", "$B$3", "$B$4", "$B$5", "$B$6", "$B$7", "$B$8", "$C$8", "$D$8", "$E$8", "$E$7", "$E$6", "$D$6", "$D$5", "$D$4","$D$3", "$E$3", "$F$3", "$G$3", "$H$3", "$I$3", "$J$3", "$J$4", "$J$5", "$J$6", "$J$7", "$I$7", "$H$7", "$H$8", "$H$9", "$H$10", "$I$10", "$J$10", "$K$10", "$L$10", "$M$10", "$N$10", "$N$9", "$N$8", "$N$7", "$N$6", "$O$6", "$P$6") 'On défini le parcours dans l'ordre
POS_I = ActiveSheet.UsedRange.Find(What:="X").Address 'Renvoi position du pion
For i = LBound(CELLULES) To UBound(CELLULES) 'Boucle pour trouver la position dans le tableau et y ajouter la valeur du dé si rencontrée
    If CELLULES(i) = POS_I Then
    POS_F = CELLULES(i + DE)
    End If
Next i
Range(POS_F) = "X" 'MaJ position
Range(POS_I).ClearContents 'Efface ancienne position
End Sub

Cdlt,

Edit : Comme l'a dit galopin, Excel n'est pas vraiment destiné aux animations. J'espère que tu trouveras un code plus optimisé ..

Edit 2 : J'ai essayé de protéger la feuille sauf les cellules du chemin et faire un pseudo next cellule déprotégée cependant même avec une tabulation, ça ne suit pas le chemin dans l'ordre car ce n'est pas le fonctionnement d'Excel.

Pour faire plus simple je m'inspire de ce jeu que je ne veux pas me contenter de recopier mais que je veux comprendre, modifier et simplifier pour me familiariser avec les bases et vba et pour mettre en place un projet final.

Je vais joindre le fichier original qui a plusieurs joueurs etc donc ce n'est pas tout a fait mon objectif. Je cherche seulement un joueur qui au bout d'un certain nombre de ''coup'' ou de dé jeté perd la partie si il n'est pas arrivé à temps.

Cependant comme expliquer j'ai tout reconçu à ma manière mais je bloc dans le déplacement des cellules, je ne parvient pas a bien déchiffrer, comprendre et intégrer à ma manière dans mon jeu.

Si cela peut vous permettre de vous mieux comprendre et de pouvoir m'aider car je pense que vos connaissances sont bien plus développées que les miennes. Merci d'avance encore pour le temps consacré c'est appréciable d'être soutenu.

9jeux-societe-1.xlsm (104.72 Ko)

Bonjour,

Si ça peut t'aider un petit exemple de déplacement. (Il n'est pas tenu compte des questions seulement des déplacements.)

12jeu-vba-vg.xlsm (58.16 Ko)

Autre exemple :

11jeu-vba-vg1.xlsm (25.59 Ko)

A+

Bonjour galopin, je vous remercie encore pour votre investissement sur le projet.

Je comprends la globalité du codage pour votre exemple qui ne parait pas très sorcier finalement cependant je sèche depuis ce matin et je ne parvient pas à l'adapter à mon dé dans mon userform. L'objectif serait d'avoir un seul pion qui se déplace en fonction du dé qui est du userform et que le joueur perde la partie si il n'est pas arrivé en moins de 15 coups par exemple.

Votre exemple est très précis et c'est exactement ce mode de déplacement que je recherche je n'arrive malheureusement pas à l'appliquer a mon projet... C'est un casse tête lorsque l'on ne maitrise pas aisément le codage.

Je tiens encore à vous exprimer ma reconnaissance pour le temps consacré, merci à vous !

Hum,

Je ne te garanti pas que tu vas tout comprendre mais une solution un peu plus avancée...

20jeu-vba-vg2.xlsm (57.99 Ko)

A+

Rechercher des sujets similaires à "deplacer codage vba"