Faire un jeu vidĂ©o 🎮 avec Excel 💻 (flappybird like 🐦)

Enlever le contour du rectangle

Mettre le rectangle aprĂšs la barre verticale noire

L’Ă©largir de cette façon

Ajouter un autre rectangle

Enlever le contour du rectangle

Élargir le rectangle de cette façon

Copier ce rectangle

Coller ce rectangle

Copier le encore jusqu’Ă  obtenir 5 rectangles

Prendre le premier rectangle

Le copier

Le coller

faire un clic droit/Format de la forme…

Aller dans l’onglet taille et passer la hauteur Ă  3,86cm

Fermer cette fenĂȘtre

Mettre ce rectangle en noir

Copier ce rectangle

Coller le rectangle

Voici les 2 rectangle

Copier Ă  nouveau, jusqu’Ă  obtenir 5 rectangle noirs

Mettre chaque rectangles noirs sur les rectangles bleus (Ă  des hauteurs diffĂ©rentes, mais pas trop diffĂ©rentes non plus…)

Mettre les rectangles noirs en blancs

Insérer un nouveau rectangle

Enlever le contour du rectangle

Mettre le rectangle en rouge

Faire un clic droit sur le rectangle rouge et cliquer sur Taille et propriétés

Mettre la hauteur Ă  2,06cm

Mettre la largeur Ă  1,98cm

Fermer la fenĂȘtre

Faire un clic droit sur l’onglet Format

Cliquer sur « Personnaliser le Ruban »

Vérifier que « Développeur » est bien coché

Cliquer sur OK

Aller dans l’onglet DĂ©veloppeur

Cliquer sur Insérer

Cliquer sur le bouton (le premier icone)

Cliquer sur OK

Mettre le bouton Ă  cette position et faire un clic droit

Copier

Coller

Encore copier

Et coller

Positionner le bouton comme sur l’image

Quand tu cliques sur un bouton , tu ne peux pas le déplacer. Pour le déplacer : clic droit sur le bouton, puis bouton « échap » du clavier

Positionner un bouton au milieu

Agrandir le bouton

Pour renommer un bouton : clic droit sur le bouton, puis bouton « échap » du clavier, puis cliquer sur le texte. Renommer le bouton en « SAUTER »

Le bouton de gauche en « DEMARRER », le bouton de droite en « ARRETER »

Dans la partie qui va suivre, je vais renommer les Ă©lĂ©ments pour mieux m’y retrouver

  • Vous pouvez faire comme moi ou adapter les noms comme vous le voulez
  • Je vais commencer par le premier grand rectangle que je vais renommer « cadre »
  • Pour ne pas qu’il y ai 2 Ă©lĂ©ments avec le mĂȘme nom pendant la phase de renommage, je vais rajouter un 0 sur chaque nom que je vais enlever par la suite


Le rectangle vertical noir Ă  droite (qui s’appelle actuellement « Rectangle1 », je le renomme « cadre ».

Pour renommer un Ă©lĂ©ment, il faut cliquer sur le cadre Ă  gauche oĂč est inscrit le nom de l’Ă©lĂ©ment. Une fois le nouveau nom rentrĂ©, cliquer sur la touche « Entrer » du clavier pour valider le nom

Rectangle14 devient 0Rectangle14

Rectangle3 devient 0rectangle3

Je vais faire pareil pour tous les Ă©lĂ©ments (mĂȘme les boutons)

On voit que le Bouton4 devient 0Bouton4

Pour ne rien vous cacher, je modifie les nom pour qu’ils coĂŻncident avec le codage que j’avais dĂ©jĂ  fait (et qui Ă  permis de faire marcher le jeu que vous voyez au dĂ©but). Donc normalement, si vous renommez les Ă©lĂ©ments exactement comme je le fais et que vous reprenez exactement mon code vous aurez un jeu fonctionnel


Rectangle 5 (il y a un espace entre « Rectangle » et « 5 »)

Rectangle 1

Rectangle 2

Rectangle 3

Rectangle 4

Rectangle 16

Rectangle 15

Rectangle 11

Rectangle 12

Rectangle 13

Rectangle 14

Bouton 3

Bouton 2

Bouton 1

player

Maintenant la partie codage

  • Dans la suite, je vais reprendre le code que j’ai fait et vous expliquer toutes les lignes

Dans l’onglet DĂ©veloppeur, cliquer sur « Enregistrer une macro »

Cliquer sur OK

DĂ©placer le carrĂ© rouge (pour qu’il y ai quelque chose dans la macro), ensuite, cliquer sur « ArrĂȘter l’enregistrement »

Cliquer sur « Macro »

Cliquer sur Modifier

Ouvrir le fichier texte (lien dans la description de la vidĂ©o) ▌▌▌▌

fichier texte : lien

Public ProchainChrono, DĂ©part
Sub Demarre()
 DĂ©part = Timer()
 majChrono
End Sub
Sub aleatoire()

‘Initialiser le gĂ©nĂ©rateur de nombres alĂ©atoires
‘=> Randomize : Ă  ajouter avant d’utiliser Rnd pour obtenir des valeurs complĂštement alĂ©atoires
Randomize

‘Nombre alĂ©atoire entier entre 1 et 50 :
nombre_aleatoire = Int((ActiveSheet.Shapes.Range(Array(« cadre »)).Height – ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Height) * Rnd)
Range(« A4 »).FormulaR1C1 = nombre_aleatoire

Range(« A18 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« player »)).Top ‘- ActiveSheet.Shapes.Range(Array(« player »)).Height
‘MsgBox nombre_aleatoire

End Sub

Sub majChrono()

‘Sheets(« Feuil1 »).[A1] = Format((Timer() – DĂ©part) / 3600 / 24, « hh:mm:ss »)
ProchainChrono = Now + TimeValue(« 00:00:1 »)

Application.OnTime ProchainChrono, « majChrono »

‘Fait avancer vers la gauche le rectangle1 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 1 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 11 »)).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle2 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 2 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle3 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 3 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle4 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle5 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).IncrementLeft -15

‘Fait descendre le rectangle (player) de 30
ActiveSheet.Shapes.Range(Array(« player »)).IncrementTop 30

‘Affiche la position horizontale du rectangle
Range(« B1 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« Rectangle 1 »)).Left

‘Affiche la largeur du cadre
Range(« B2 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« cadre »)).Width

‘Si le rectangle 1 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 1 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 1 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 11 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
‘Call Arret
End If

‘Si le rectangle 2 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 2 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 2 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

‘Si le rectangle 3 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 3 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 3 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

‘Si le rectangle 4 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

‘Si le rectangle 5 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

‘quand le rectangle 11 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 11 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 11 »)).Top = Range(« A4 »).Text
End If

‘quand le rectangle 12 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).Top = Range(« A4 »).Text
End If
‘quand le rectangle 13 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).Top = Range(« A4 »).Text
End If

‘quand le rectangle 14 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Top = Range(« A4 »).Text
End If

‘quand le rectangle 15 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Top = Range(« A4 »).Text
End If

‘si le rectangle (player) toucle le bas t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« cadre »)).Height Then
Call Arret
End If

‘si le rectangle (player) toucle les parois de rectangle 11 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Left Then
Call Arret
End If
End If
End If

‘si le rectangle (player) toucle les parois de rectangle 12 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 12 »)).Left Then
Call Arret
End If
End If
End If

‘si le rectangle (player) toucle les parois de rectangle 13 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left Then
Call Arret
End If
End If
End If

‘si le rectangle (player) toucle les parois de rectangle 14 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 14 »)).Left Then
Call Arret
End If
End If
End If

‘si le rectangle (player) toucle les parois de rectangle 15 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left Then
Call Arret
End If
End If
End If

Call aleatoire

Range(« A18 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height
Range(« A19 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Top
Range(« A20 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« player »)).Left
Range(« A21 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« player »)).Top
Range(« A22 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« rectangle 11″)).Top

End Sub

Sub Arret()
On Error Resume Next
Application.OnTime ProchainChrono, Procedure:= »majChrono », Schedule:=False
MsgBox « Perdu »

End Sub

Sub Saut()
ActiveSheet.Shapes.Range(Array(« player »)).IncrementTop -15
End Sub

Sélectionner tout le texte présent dans la macro

Supprimer tout le texte

Coller tout le texte présent dans le fichier texte

Cliquer sur la disquette pour enregistrer

Quand on met du code dans un fichier Excel, il faut l’enregistrer dans un format particulier

Dans type de fichier, sélectionner « Classeur Excel (prenant en charge les macros) (*.xlsm)

Cliquer sur Enregistrer

Baisser cette fenĂȘtre pour retourner sue Excel

Faire un clic droit sur le bouton DEMARRER

Cliquer sur « Affecter une macro… »

Sélectionner « Demarre »

Cliquer sur OK

Faire un clic droit sur le bouton SAUTER

Cliquer sur « Affecter une macro »

Sélectionner « Saut »

Cliquer sur OK

Faire un clic droit sur le bouton ARRETER

Cliquer sur « Affecter une macro… »

Sélectionner « Arret »

Cliquer sur OK

Vous pouvez maintenant tester le jeu

On peut voir que des nombres se sont affichés à gauche, nous allons donc les cacher

Aller dans Acceuil et changer la couleur des caractĂšres pour les mettre en blanc

Nous allons maintenant personnaliser le carré rouge

Faire clic droit et cliquer sur « Format de la forme »

Dans remplissage, cliquer sur « Remplissage avec image ou texture »

Cliquer sur « Fichier »

SĂ©lectionner une image

Cliquer sur Fermer

On voit que l’image est maintenant dans le carrĂ©

Explications du code :

Les parties en vert sont des commentaires (elles n’influent pas sur le code, elles servent à donner des indications sur le code ou à faire des tests)

Public ProchainChrono, DĂ©part
Sub Demarre()
 DĂ©part = Timer()
 majChrono
End Sub
Sub aleatoire()

Et

Sub majChrono()

‘Sheets(« Feuil1 »).[A1] = Format((Timer() – DĂ©part) / 3600 / 24, « hh:mm:ss »)
ProchainChrono = Now + TimeValue(« 00:00:1 »)

Application.OnTime ProchainChrono, « majChrono »

Permet de faire avancer les colonnes automatiquement (possibilité de changer le délais). La partie du haut permet de lancer le chrono en cliquant sur le bouton et celle du bas permet de définir les paramÚtres.

Sub aleatoire()

‘Initialiser le gĂ©nĂ©rateur de nombres alĂ©atoires
‘=> Randomize : Ă  ajouter avant d’utiliser Rnd pour obtenir des valeurs complĂštement alĂ©atoires
Randomize

‘Nombre alĂ©atoire entier entre 1 et 50 :
nombre_aleatoire = Int((ActiveSheet.Shapes.Range(Array(« cadre »)).Height – ActiveSheet.Shapes.Range(Array(« rectangle 11 »)).Height) * Rnd)

Permet de mettre le rectangle 11 Ă  une hauteur alĂ©atoire (le rectangle 11 Ă©tant le premier rectangle blanc oĂč doit passager le joueur)

Range("A4").FormulaR1C1 = nombre_aleatoire
    
    Range("A18").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("player")).Top '- ActiveSheet.Shapes.Range(Array("player")).Height
    'MsgBox nombre_aleatoire

Dans la cellule A4 est mise cette valeur alĂ©atoire et dans la cellule A18 est mise la position du joueur (se sont les nombres que l’on voyait avant que je les mette en blanc)

'Fait avancer vers la gauche le rectangle1 de 15
 ActiveSheet.Shapes.Range(Array("Rectangle 1")).IncrementLeft -15
 ActiveSheet.Shapes.Range(Array("Rectangle 11")).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle2 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 2 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).IncrementLeft -15

Les rectangles qui reprĂ©sentent les obstacles et les rectangles qui reprĂ©sentent les trous de passage avancent de 15 pixel (le – devant le 15 est Ă  cause de l’orientation des axes dans excel)

'Fait avancer vers la gauche le rectangle3 de 15
 ActiveSheet.Shapes.Range(Array("Rectangle 3")).IncrementLeft -15
 ActiveSheet.Shapes.Range(Array("Rectangle 13")).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle4 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).IncrementLeft -15

‘Fait avancer vers la gauche le rectangle5 de 15
ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).IncrementLeft -15
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).IncrementLeft -15

Les rectangles qui reprĂ©sentent les obstacles et les rectangles qui reprĂ©sentent les trous de passage avancent de 15 pixel (le – devant le 15 est Ă  cause de l’orientation des axes dans excel)

 'Fait descendre le rectangle (player) de 30
 ActiveSheet.Shapes.Range(Array("player")).IncrementTop 30

Fait descendre le joueur de 30 pixels automatiquement (d’oĂč le besoin de cliquer pour sauter)

 'Affiche la position horizontale du rectangle
 Range("B1").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("Rectangle 1")).Left

‘Affiche la largeur du cadre
Range(« B2 »).FormulaR1C1 = ActiveSheet.Shapes.Range(Array(« cadre »)).Width

Affiche dans B1 la position du premier obstacle

Affiche dans B2 la position du cadre

'Si le rectangle 1 dĂ©passe le cadre alors ça s'arrĂȘte
 If ActiveSheet.Shapes.Range(Array("Rectangle 1")).Left = 0 Then
 ActiveSheet.Shapes.Range(Array("Rectangle 1")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 ActiveSheet.Shapes.Range(Array("Rectangle 11")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 'Call Arret
 End If

Si l’obstacle arrive au dĂ©but du cadre, alors il retourne Ă  la fin du cadre (pour faire quelque chose d’infini) (en anglais : if = si et then = alors)

'Si le rectangle 2 dĂ©passe le cadre alors ça s'arrĂȘte
 If ActiveSheet.Shapes.Range(Array("Rectangle 2")).Left = 0 Then
 'Call Arret
 ActiveSheet.Shapes.Range(Array("Rectangle 2")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 ActiveSheet.Shapes.Range(Array("Rectangle 12")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 End If

MĂȘme principe pour le deuxiĂšme obstacle

'Si le rectangle 3 dĂ©passe le cadre alors ça s'arrĂȘte
 If ActiveSheet.Shapes.Range(Array("Rectangle 3")).Left = 0 Then
 'Call Arret
 ActiveSheet.Shapes.Range(Array("Rectangle 3")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 ActiveSheet.Shapes.Range(Array("Rectangle 13")).Left = ActiveSheet.Shapes.Range(Array("cadre")).Width
 End If

‘Si le rectangle 4 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 4 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

‘Si le rectangle 5 dĂ©passe le cadre alors ça s’arrĂȘte
If ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).Left = 0 Then
‘Call Arret
ActiveSheet.Shapes.Range(Array(« Rectangle 5 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Left = ActiveSheet.Shapes.Range(Array(« cadre »)).Width
End If

MĂȘme principe pour les autres obstacles

 'quand le rectangle 11 revient au début il change de hauteur aléatoirement
 If ActiveSheet.Shapes.Range(Array("Rectangle 11")).Left = 0 Then
 ActiveSheet.Shapes.Range(Array("Rectangle 11")).Top = Range("A4").Text
 End If

‘quand le rectangle 12 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 12 »)).Top = Range(« A4 »).Text
End If
‘quand le rectangle 13 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 13 »)).Top = Range(« A4 »).Text
End If

‘quand le rectangle 14 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 14 »)).Top = Range(« A4 »).Text
End If

‘quand le rectangle 15 revient au dĂ©but il change de hauteur alĂ©atoirement
If ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Left = 0 Then
ActiveSheet.Shapes.Range(Array(« Rectangle 15 »)).Top = Range(« A4 »).Text
End If

Quand les rectangles blancs reviennent au début, il changent de hauteur aléatoirement (pour ne pas rendre le jeu identique)

 'si le rectangle (player) toucle le bas t'as perdu
 If ActiveSheet.Shapes.Range(Array("player")).Top + ActiveSheet.Shapes.Range(Array("player")).Height > ActiveSheet.Shapes.Range(Array("cadre")).Height Then
 Call Arret
 End If

Si le joueur touche le bas, alors il a perdu

 'si le rectangle (player) toucle les parois de rectangle 11 t'as perdu
 If ActiveSheet.Shapes.Range(Array("player")).Top + ActiveSheet.Shapes.Range(Array("player")).Height > ActiveSheet.Shapes.Range(Array("rectangle 11")).Height + ActiveSheet.Shapes.Range(Array("rectangle 11")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 11")).Left + ActiveSheet.Shapes.Range(Array("rectangle 11")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 11")).Left Then
 Call Arret
 End If
 End If
 End If
 If ActiveSheet.Shapes.Range(Array("player")).Top < ActiveSheet.Shapes.Range(Array("rectangle 11")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 11")).Left + ActiveSheet.Shapes.Range(Array("rectangle 11")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 11")).Left Then
 Call Arret
 End If
 End If
 End If

Si le joueur touche une des parois du premier obstacle, alors il a perdu

 'si le rectangle (player) toucle les parois de rectangle 12 t'as perdu
 If ActiveSheet.Shapes.Range(Array("player")).Top + ActiveSheet.Shapes.Range(Array("player")).Height > ActiveSheet.Shapes.Range(Array("rectangle 12")).Height + ActiveSheet.Shapes.Range(Array("rectangle 12")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 12")).Left + ActiveSheet.Shapes.Range(Array("rectangle 12")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 12")).Left Then
 Call Arret
 End If
 End If
 End If
 If ActiveSheet.Shapes.Range(Array("player")).Top < ActiveSheet.Shapes.Range(Array("rectangle 12")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 12")).Left + ActiveSheet.Shapes.Range(Array("rectangle 12")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 12")).Left Then
 Call Arret
 End If
 End If
 End If

‘si le rectangle (player) toucle les parois de rectangle 13 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 13 »)).Left Then
Call Arret
End If
End If
End If

Si le joueur touche une des parois du 2Ăšme et 3Ăšme obstacle, alors il a perdu

  'si le rectangle (player) toucle les parois de rectangle 14 t'as perdu
 If ActiveSheet.Shapes.Range(Array("player")).Top + ActiveSheet.Shapes.Range(Array("player")).Height > ActiveSheet.Shapes.Range(Array("rectangle 14")).Height + ActiveSheet.Shapes.Range(Array("rectangle 14")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 14")).Left + ActiveSheet.Shapes.Range(Array("rectangle 14")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 14")).Left Then
 Call Arret
 End If
 End If
 End If
 If ActiveSheet.Shapes.Range(Array("player")).Top < ActiveSheet.Shapes.Range(Array("rectangle 14")).Top Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width < ActiveSheet.Shapes.Range(Array("rectangle 14")).Left + ActiveSheet.Shapes.Range(Array("rectangle 14")).Width Then
 If ActiveSheet.Shapes.Range(Array("player")).Left + ActiveSheet.Shapes.Range(Array("player")).Width > ActiveSheet.Shapes.Range(Array("rectangle 14")).Left Then
 Call Arret
 End If
 End If
 End If

‘si le rectangle (player) toucle les parois de rectangle 15 t’as perdu
If ActiveSheet.Shapes.Range(Array(« player »)).Top + ActiveSheet.Shapes.Range(Array(« player »)).Height > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Height + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left Then
Call Arret
End If
End If
End If
If ActiveSheet.Shapes.Range(Array(« player »)).Top < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Top Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width < ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left + ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Width Then
If ActiveSheet.Shapes.Range(Array(« player »)).Left + ActiveSheet.Shapes.Range(Array(« player »)).Width > ActiveSheet.Shapes.Range(Array(« rectangle 15 »)).Left Then
Call Arret
End If
End If
End If

Si le joueur touche une des parois du 4Ăšme et 5Ăšme obstacle, alors il a perdu

Range("A18").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("player")).Top + ActiveSheet.Shapes.Range(Array("player")).Height
 Range("A19").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("rectangle 11")).Height + ActiveSheet.Shapes.Range(Array("rectangle 11")).Top
 Range("A20").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("player")).Left
 Range("A21").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("player")).Top
 Range("A22").FormulaR1C1 = ActiveSheet.Shapes.Range(Array("rectangle 11")).Top

Calculs qui permettent de savoir la position du joueur

Sub Arret()
 On Error Resume Next
 Application.OnTime ProchainChrono, Procedure:="majChrono", Schedule:=False
 MsgBox "Perdu"

ArrĂȘte le chrono donc le jeu

Sub Saut()
 ActiveSheet.Shapes.Range(Array("player")).IncrementTop -15
End Sub

Permet de faire sauter le joueur

Autres possibilités :

Aller dans la feuille 2 de mon fichier Excel (lien)

Cliquer sur les boutons que vous voulez

Vous pouvez aller voir le code de ces actions dans les macros

Attention quand on enregistre


Sachant que c’est vous qui Ă©crivez le code, il n’y a aucun risque

Comme vous pouvez le constater, beaucoup de choses sont possibles

  • Il ne vous reste plus qu’à faire marcher votre imagination

Astuce :

  • Pour commencer Ă  dĂ©velopper sur Excel, je me suis aidĂ© de Google, en tapant des choses simples comme « utiliser un chronomĂštre sur Excel »
  • Je me suis aussi beaucoup aidĂ© des macros directement sur Excel, notamment pour les mouvements.
  • En effet, une macro est un peu comme un enregistreur de mouvements. On lance l’enregistrement de la macro, on fait les mouvements qu’on veut (avec la souris et le clavier) et la macro convertie les mouvements en code

Cliquer sur « Enregistrer une macro »

Cliquer sur OK

Changer de position le rectangle

Changer la taille

Changer la couleur

Retourner dans l’onglet DĂ©veloppeur

Cliquer sur « ArrĂȘter l’enregistrement »

Cliquer sur Macros

Cliquer sur « Macro2 » ou le nom de votre macro si elle a un autre nom

Cliquer sur Modifier

Changement de position

Changement de taille

Changement de couleur

On voit que tous vos mouvements ont été écrit

A VOUS DE JOUER MAINTENANT!!!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *