IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA Excel Projet Yahtzee


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut VBA Excel Projet Yahtzee
    Bonjour, je fais appel à vos service afin résoudre un petit problème.

    Je réalise un projet sur vba sur le jeu du Yahtzee. Le jeu est assez simple, on lance 5 dés au hasard en espérant faire la meilleure combinaison possible (brelan, full, suite,etc...). Pour créer les 5 dés j'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim d1 As Integer
    Dim d2 As Integer
    Dim d3 As Integer
    Dim d4 As Integer
    Dim d5 As Integer
    puis pour que les dés soient de 1 à 6 et pour voir les résultats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    d1 = Int(Rnd() * 5 + 1)
    d2 = Int(Rnd() * 5 + 1)
    d3 = Int(Rnd() * 5 + 1)
    d4 = Int(Rnd() * 5 + 1)
    d5 = Int(Rnd() * 5 + 1)
     
    MsgBox ("Vos résultats sont : " & d1 & " ," & d2 & " ," & d3 & " ," & d4 & " ," & d5)
    Enfin au niveau des combinaisons voici par exemple ce que j'ai fait si on obtenait un full:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If ((d1 = d2) And (d2 = d3) And (d4 = d5)) Or ((d1 = d2) And (d2 = d4) And (d3 = d5)) Or ((d1 = d2) And (d2 = d5) And (d3 = d4)) Or ((d1 = d3) And (d3 = d4) And (d2 = d5)) Or ((d1 = d3) And (d3 = d5) And (d2 = d4)) Or ((d1 = d4) And (d4 = d5) And (d2 = d3)) Or ((d2 = d3) And (d3 = d4) And (d5 = d1)) Or ((d2 = d4) And (d4 = d5) And (d3 = d1)) Or ((d3 = d4) And (d4 = d5) And (d1 = d2)) Then
        MsgBox ("Bravo vous avez fait un Full")
    Vous l'aurez compris ma méthode a été de réunir toutes les solutions possibles de full

    Mon problème est que je ne trouve pas le moyen de réunir toutes les solutions pour obtenir une suite de 4 chiffres (1,2,3,4 ou 2,3,4,5 ou 3,4,5,6)
    voici ce que j'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ((d1 Or d2 Or d3 Or d4 Or d5 = 1) And (d1 Or d2 Or d3 Or d4 Or d5 = 2) And (d1 Or d2 Or d3 Or d4 Or d5 = 3) And (d1 Or d2 Or d3 Or d4 Or d5 = 4) And (d1 And d2 And d3 And d4 And d5 <> 5)) Or ((d1 Or d2 Or d3 Or d4 Or d5 = 2) And (d1 Or d2 Or d3 Or d4 Or d5 = 3) And (d1 Or d2 Or d3 Or d4 Or d5 = 4) And (d1 Or d2 Or d3 Or d4 Or d5 = 5) And (d1 And d2 And d3 And d4 And d5 <> 1) And (d1 And d2 And d3 And d4 And d5 <> 6)) Or ((d1 Or d2 Or d3 Or d4 Or d5 = 3) And (d1 Or d2 Or d3 Or d4 Or d5 = 4) And (d1 Or d2 Or d3 Or d4 Or d5 = 5) And (d1 Or d2 Or d3 Or d4 Or d5 = 6) And (d1 And d2 And d3 And d4 And d5 <> 2)) Then
     
        MsgBox ("Bravo vous avez fait une suite")
    En gros pour la suite 1,2,3,4 j'ai écris que d1 ou d2 ou d3 ou d4 devrait être égale à 1 ou 2 ou 3 ou 4 mais pas à 5 car sinon on aurait une suite de 5 chiffres, et j'ai recommencé pour les 2 autres suites de 4 chiffres possibles.

    Voilà, j'espère que vous trouverez la solution, ou peut être une méthode plus simple

    Merci d'avance pour votre aide !

  2. #2
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Bonjour,
    Je ne connais pas le jeu mais je vous propose quand même une méthode à le faire et que vous pourrez tripoter à votre guise.

    Trés facile sans complications.

    -- Le code suivant récupère vos chiffres aléatoires dans la plage A1:A5
    -- Dans la plage B1:B5 sont listées les valeurs entre 1 et 5
    -- La plage C1:C5 je met la formule: NB.SI (CountIf en Anglais) exemple: =NB.SI(A1:A5,B1)

    En suite le code qui suit dans un bouton ActiveX je propose:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim rng As Range
    Range("A1").Value = Int(Rnd() * 5 + 1)
    Range("A2").Value = Int(Rnd() * 5 + 1)
    Range("A3").Value = Int(Rnd() * 5 + 1)
    Range("A4").Value = Int(Rnd() * 5 + 1)
    Range("A5").Value = Int(Rnd() * 5 + 1)
     
    For Each rng In Range("c1:c5")
    Select Case rng.Value
    Case 3
    MsgBox "Bravo ! vous obtenez un full de " & rng.Offset(0, -1) & "."
    Case 4
    MsgBox "Bravo ! vous obtenez un brelan de " & rng.Offset(0, -1) & "."
    Case 5
    MsgBox "Bravo ! vous obtenez une suite de " & rng.Offset(0, -1) & "."
    End Select
    Next
    Jettez un coup d’œil dans le fichier joint.

    Cordialement
    Karim
    Fichiers attachés Fichiers attachés
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  3. #3
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut
    Pardon,
    Dans le fichier joint, au niveau de la folrmule NB.SI je devais fixer les références de la plage source à l'aide de la touche F4 (marqué par le signe du dollar), cela permet de glisser les cellules vers le bas sans toutefois altérer la formule: cela nous donnerai comme formule : NB.SI($A$1:$A$5,B1) au lieu de NB.SI(A1:A5,B1).

    Désolé.

    Cordialement.
    Karim
    Fichiers attachés Fichiers attachés
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour combisuit

    puis pour que les dés soient de 1 à 6, cette commande ne donnera jamais 6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = Int(Rnd() * 5 + 1)
    La bonne commande est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = Int(Rnd() * 6 + 1)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut
    Docmarti: Ah oui tiens effectivement, merci beaucoup je change cela tout de suite !


    XLRATOR: j'ai finalement trouvé la solution à mon problème, sans votre méthode (bien que j'ai essayé mais décidément je ne suis pas très doué sur VBA), mais merci tout de même pour l'aide proposée

    Cordialement,

    Combisuit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA Excel] Projet - derniere étape
    Par lyraaa dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/07/2007, 10h42
  2. Réponses: 1
    Dernier message: 23/07/2006, 22h15
  3. [Excel]Projet VBA protégé, comment déprotéger ?
    Par tonf dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/06/2006, 19h05
  4. [VBA-E]Projet VB perdu dans un fichier Excel 2003
    Par cotmar dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/03/2006, 17h39
  5. Migrer un projet VBA Excel vers VB
    Par Phoon0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo