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 :

Userform : problème de réinitialisation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut Userform : problème de réinitialisation
    Bonjour à tous

    je débute en programmation VBA sur Excel...

    j'ai tenté de créer le JEU DU MORPION en langage VBA, avec des Userform.

    Alors le code pourrait sûrement être simplifié hein... mais comme dit je débute...

    J'ai réussi à faire des petits trucs déjà sympa je pense pour commencer, par exemple verrouiller la saisie dans les cases en acceptant juste "x" ou "o", et selon le joueur aussi.

    Une fois une case renseignée elle change de couleur et se verrouille...

    Bref pour le jeu en lui même pas de problème...

    Mon soucis actuel est vers la fin de la procédure...

    Une fois le jeu fini j'ai lancé une nouvelle userform où je donne le nom du gagnant et où je propose soit de faire une VENGEANCE (les noms des joueurs resteraient alors identiques) ou alors une NOUVELLE PARTIE (on entre des nouveaux noms de joueurs).

    Le jeu se relance normalement par contre là il n'y a plus aucun contrôle actif dans les cases ... On peut rentrer n'importe quelle lettre, ça ne se met plus en couleur etc...

    là je bloque...

    pourtant j'ai bien fais unload et à nouveau show pour relancer en théorie depuis le début...

    Mais un truc se passe mal quelque part... ça ne se réinitialise par correctement...

    Si vous pourriez jeter un petit coup d'oeil ça serait cool...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour,

    https://www.developpez.net/forums/d8...s-discussions/

    Et de montrer ton code dans les balises codes #
    Cà t'aideras à avoir plus de réponses

    Merci

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    salut perso pour ce genre de petite choses j'utiliserais les module classes controls sinon le code dans ton userform devient vite une usine a gaz
    un exemple comme ca vite fait a l'arrache

    prend un userform
    met lui un label que tu nomme "joueurs"
    met lui 9 textbox pour la grille que tu nomme "T" 1 a 9 (T1,T2,T3,etc....)
    met lui un bouton pour nouvelle partie
    ajoute un module classe
    voila tu a ton morpion
    comment me diras tu ?
    et bien c'est simple
    met ce code dans le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim cl As New Classe1
    Private Sub CommandButton1_Click()
    cl.eraze Me
    End Sub
    Private Sub UserForm_Activate()
    cl.INIT Me
    End Sub
    maintenant met ce code dans le module classe
    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
    18
    19
    20
    21
    22
    23
    Public WithEvents CAS As MSForms.TextBox
    Private TxT(10) As New Classe1
    Function INIT(usf)
    For i = 1 To 9: Set TxT(i).CAS = usf.Controls("T" & i): Next
    usf.joueurs.Caption = "joueur1"
    eraze usf
    End Function
    Private Sub CAS_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     joueur = CAS.Parent.Controls("joueurs").Caption
    Select Case joueur
    Case "joueur1"
    If CAS.Value <> "" Or KeyCode <> 88 Then KeyCode = 0 Else CAS.Parent.Controls("joueurs").Caption = "joueur2": CAS.BackColor = vbGreen
    Case "joueur2"
    If CAS.Value <> "" Or KeyCode <> 79 Then KeyCode = 0 Else CAS.Parent.Controls("joueurs").Caption = "joueur1":: CAS.BackColor = vbRed
    End Select
    End Sub
    Function eraze(usf)
    For i = 1 To 9
    usf.Controls("T" & i).Value = ""
    usf.Controls("T" & i).BackColor = vbWhite
    Next
    usf.joueurs.Caption = "joueur1"
    End Function
    voila ton morpion est opérationnel
    il te reste plus qu'a ajouter la fonction de test des 3 valeurs identique a chaque click dans la classe bien sur
    comme tu peux le constater il y a qu'un seul évènement textbox dans la classe
    libre a toi de l'agrémenter de ce que tu veux tu a la base
    Nom : demo4.gif
Affichages : 629
Taille : 77,8 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [AC-2007] Problème après réinitialisation de Access
    Par solaar dans le forum VBA Access
    Réponses: 0
    Dernier message: 11/09/2009, 16h09
  2. Réponses: 9
    Dernier message: 08/06/2009, 14h08
  3. Réponses: 7
    Dernier message: 19/05/2009, 15h57
  4. Problème de réinitialisation
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 3
    Dernier message: 08/08/2007, 14h56
  5. Réponses: 1
    Dernier message: 11/08/2006, 18h54

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