Programmation Msgbox si Caption = X

Fermé
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 - 26 juil. 2009 à 13:27
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 27 juil. 2009 à 18:02
Bonjour, j'aurais voulu avoir votre aide pour cette commande.

Je n'arrive pas a faire en sorte que qu'une fenêtre s'ouvre si les 3 premiers boutons sont cochés.
J'ai 3 buttons et 2 CheckBox
Si je coche la première CheckBox cela va me mettre un X sur le ou les boutons que je clic
Et je veux qu'une fois avoir cliquer sur les 3 boutons donc rempli de X j'ai une fenetre qu'il souvre



If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
La sa ne met rien mais la fenetre ne s'ouvre pas


La sa met une erreur
If bt1.valeur = Check1.Text And bt2.valeur = Check1.Text Then MsgBox "ok"

Concretement je veux dire:
If les 3 boutons ont pour caption "X" alors mettre fenetre.

Merci
A voir également:

49 réponses

jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 14:00
la bonne solution c'est la 1 :
If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"

Maintenant, ca ne te l affiche pas, donc je suppose:
1) soit tu n a pas mis la ligne au bon endroit (moi je dirais qu il faut la mettre dans ta checkbox_change)
2) soit que bt1.caption (ou 2 ou 3) <>"X"

pour voir si il va voire ta ligne, clique dans la marge, ca doit t'afficher un point rouge (le code s'arretera sur cette ligne) et ensuite F8 (pas à pas=> ligne jaune) pour continuer. tu peux voir la valeur cd bt1.caption en pointant ta sourie sur le code (sans cliquer)
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 14:52
Hey merci de ta réponse :)

Effectivement la premiere m'a lair plus concrète
j'ai essayer de mettre la commande dans

Private Sub Check1_Click()


Private Sub Check2_Click()

mais sa ne marche toujours pas.

En fait je fais un tic tac toe (morpion)
vu que je débute j'essaie de me débrouiller sans m'inspirer de code pour apprendre seul.


Private Sub bt1_Click()
If Check1.Value = 1 Then bt1.Caption = "X"
If Check2.Value = 1 Then bt1.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt2_Click()
If Check1.Value = 1 Then bt2.Caption = "X"
If Check2.Value = 1 Then bt2.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt3_Click()
If Check1.Value = 1 Then bt3.Caption = "X"
If Check2.Value = 1 Then bt3.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt4_Click()
If Check1.Value = 1 Then bt4.Caption = "X"
If Check2.Value = 1 Then bt4.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt5_Click()
If Check1.Value = 1 Then bt5.Caption = "X"
If Check2.Value = 1 Then bt5.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt6_Click()
If Check1.Value = 1 Then bt6.Caption = "X"
If Check2.Value = 1 Then bt6.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt7_Click()
If Check1.Value = 1 Then bt7.Caption = "X"
If Check2.Value = 1 Then bt7.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt8_Click()
If Check1.Value = 1 Then bt8.Caption = "X"
If Check2.Value = 1 Then bt8.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End Sub

Private Sub bt9_Click()
If Check1.Value = 1 Then bt9.Caption = "X"
If Check2.Value = 1 Then bt9.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"

End Sub

Private Sub btexit_Click()
End
End Sub

Private Sub btreset_Click()
bt1.Caption = ""
bt2.Caption = ""
bt3.Caption = ""
bt4.Caption = ""
bt5.Caption = ""
bt6.Caption = ""
bt7.Caption = ""
bt8.Caption = ""
bt9.Caption = ""
Check1.Value = 0
Check2.Value = 0

End Sub

Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single)

End Sub

Private Sub Calcul_DragDrop(Source As Control, X As Single, Y As Single)
If bt1.Text = "X" And bt2.Text = "X" Then MsgBox "winner"

End Sub

Private Sub Check1_Click()
If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
End Sub

Private Sub Check2_Click()
If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
End Sub


Le code ne doit pas ressembler a grand chose mais bon :)
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 15:21
Lol.. mais non.. c'est un bon début le morpion pour apprendre à programmer et se faire une logique !! :D

mais bon, c'est sur que ca doit etre améliorrer ;)

j'ai bien compris que bt1 -> bt9 ce sont les cases du jeu... mais que vient faire Check1.Value et Check2.Value ?
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 15:36
:) merci :p

Check1 et Check 2 c'est deux petites cases qui me servent a :

Label 1 CheckBox1

X Case pour cocher X

Label 2 CheckBox2

O Case pour cocher O

Pour choisir le symbole.
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 15:37
Ainsi en faisant reset les bouttons 1 a 9 s'effacent tout comme la case cochée pour choisir soit x soit o
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 15:47
ok... je comprend un peu mieux...

donc pour les bouton de 1=>9ca donne quelquechose comme ca :

1 | 2 | 3
4 | 5 | 6
7 | 8 | 9

If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
ca ca ne marche que si il y a un "X" dans 1 2 3 pas pour 1 4 7 par exemple...

de plus.. tu l as mis dans Private Sub Check1_Click()... ce qui veut dire qu il ne va la vérifié que lorsque que l utilisateur va cocher une des 2 cases à coher..
Perso, je l'aurais mis ici : (a faire pour tous les boutons.. apres, je t'expliquerais comment les indexés afin de n'avoir qu un seul bouton duppliqué et ainsi, une seul commande pour tous les boutons ;) ...mais allons y pas à pas...

Private Sub bt1_Click()
If Check1.Value = 1 Then bt1.Caption = "X"
If Check2.Value = 1 Then bt1.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"

If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"

End Sub


Derniere remarque (apres c'est long à lire et ca pique les yeux :p

If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"

=>

If Check1.Value = 1 And Check2.Value = 1 Then
bt1.Caption = ""
MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
End if
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 16:04
[quote]
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
[/quote]

Exactement de cette sorte la.

[quote]ca ca ne marche que si il y a un "X" dans 1 2 3 pas pour 1 4 7 par exemple... [/quote]

Oui je pensais par la suite le faire pour toutes les combinaisons soit:

123
456
789
147
258
369
159

If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
If bt4.Caption = "X" And bt5.Caption = "X" And bt6.Caption = "X" Then MsgBox "X Gagne"
If bt7.Caption = "X" And bt8.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
If bt1.Caption = "X" And bt4.Caption = "X" And bt7.Caption = "X" Then MsgBox "X Gagne"
If bt2.Caption = "X" And bt5.Caption = "X" And bt8.Caption = "X" Then MsgBox "X Gagne"
If bt3.Caption = "X" And bt6.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
If bt1.Caption = "X" And bt5.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
else MsgBox "O Gagne"

[quote] apres, je t'expliquerais comment les indexés afin de n'avoir qu un seul bouton duppliqué et ainsi, une seul commande pour tous les boutons ;) [/quote]

Euhhh ... Sa marche :p :)
[quote]de plus.. tu l as mis dans Private Sub Check1_Click()[/quote]

Oui, je l'ai mis la après pour tester mais à la base il était dans boutton 1 ^^

[quote]If Check1.Value = 1 And Check2.Value = 1 Then
bt1.Caption = ""
MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"

C'est vrai que c'est mieux xD
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 16:12
donc apres avoir modifier pour bt1 2 et 3, dis moi si ca marche qd tu met un "X" dans bt 1 2 et 3 ;)
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 16:22
Alors avec ce code :

Private Sub bt1_Click()
If Check1.Value = 1 Then bt1.Caption = "X"
If Check2.Value = 1 Then bt1.Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then
bt1.Caption = ""
MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"
If bt1.Caption = "X" And bt2.Caption = "X" And bt3.Caption = "X" Then MsgBox "X Gagne"
If bt4.Caption = "X" And bt5.Caption = "X" And bt6.Caption = "X" Then MsgBox "X Gagne"
If bt7.Caption = "X" And bt8.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
If bt1.Caption = "X" And bt4.Caption = "X" And bt7.Caption = "X" Then MsgBox "X Gagne"
If bt2.Caption = "X" And bt5.Caption = "X" And bt8.Caption = "X" Then MsgBox "X Gagne"
If bt3.Caption = "X" And bt6.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
If bt1.Caption = "X" And bt5.Caption = "X" And bt9.Caption = "X" Then MsgBox "X Gagne"
End Sub

C'est très bizarre
Tout aller sa marchais dans le sens inverse (Lorsque je cliquais sur 1 puis 2 puis 3 sa marchait pas mais quand je faisais 3 puis 2 puis 1 sa marchait)
Et la il me met

Compile Error:
Block If without End If

Sa ne me le faisais pas il y a quelques secondes je suis légèrement perdu ^^
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 16:24
J'ai rajouté End If sa corrige le probleme mais la sa ne le fait plus du tout meme plus dans l'ordre 3 puis 2 puis 1 ^^
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 16:27
Alors attend mdr
J'ai remis les deux lignes
If Check1.Value = 1 And Check2.Value = 1 Then bt1.Caption = ""
If Check1.Value = 1 And Check2.Value = 1 Then MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"

Enlever le End if
et sa remarche
Mais toujours dans un seul sens
Quand je clique sur 3 puis sur 2 puis sur 1

Bizare
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 16:55
If Check1.Value = 1 And Check2.Value = 1 Then
bt1.Caption = ""
MsgBox "Vous ne devez cocher qu'un seul symbol à la fois", vbExclamation, "Erreur"


elle est la l erreur...

ptite note sur le if/else/endif


si une seule ligne :

if ... then ....

si plusieurs ligne :
if ... then
'ligne 1
'ligne2
end if

et pour else:
if ... then
'ligne 1
'ligne 2
else
'ligne 1
'ligne 2
end if

donc remet le end if apres le msgbox
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:04
Ah ok merci beaucoup jjsteing
Je ne comprenAIS pas a quoi servait end if :)

C'est bon plus de problème après cette ligne de commande.

Au niveau des boutons toujours le même soucis
Dans l'ordre 3 puis 2 puis 1 = fenêtre
Dans l'ordre 7 puis 4 puis 1 = fenêtre
Dans l'ordre 9 puis 5 puis 1 = fenêtre

Sinon rien.

Bizarre je trouve
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 17:07
As tu mis le meme code dans bt1 2 et 3 ?
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:11
Non mais quesque je peux etre c ..

Mdr merci t'es un géni
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 17:31
lol.. bon... maintenant.. comment faire un bouton indexé (c'est valable aussi pour plein d autres choses), a quoi ca sert et comment on programme dedans...

1) créer un bouton indexé:

Choisir un bouton (bt1 dans ton cas que je renommerais BtJeu) puis copier coller.. la un message apparait "il y a déjà un control nomé BtJeu, voulez vous créer un groupe de control ? => Oui

Un nouveau bouton apparait...
Pour toi, refaire la manip jusqu a avoir tes 10 boutons.. 10 oui oui... lis la suite
Dans les propriété de chaque bouton, il y a une propriété 'Index' (qui commence à 0 -> 9).. donc supprime celui à l index 0 et place correctement les autres en fonction de l 'index...

Une fois placés passons à l'étape 2

2) A quoi ca sert :

Le fait d avoir un control indexé (ici un bouton) nous permet d'avoir un seul et meme code qui s'applique à tous ces boutons.. tres utile pour un jeu comme le morpion (ou un jeu de taquin ;) )

3) comment programmer un bouton indéxé...

Les commandes sont les memes qu'avec un bouton normal, sauf qu'il se nomme BtJeu(1) pour le bouton index 1, BtJeu(2) pour le 2 ect...

Dans le code, pour ton jeu de morpion ca devient donc :

If BtJeu(1).Caption = "X" And BtJeu(2).Caption = "X" And BtJeu(3).Caption = "X" Then MsgBox "X Gagne"

pour savoir sur quel bouton l'utilisateur à cliquer, dans la procédure du bouton BtJeu tu as :
Private Sub BtJeu _Click(Index As Integer)

End Sub

la variable Index t'indiquera quel est le bouton cliqué... mais dans ton cas, tu t'en fou de savoir sur quel bouton l'utilisateur à cliqué, vu que tu test tous les boutons ;) mais garde ca en mémoire.. pour la suite des opérations afin d améliorer encore + le code...

Tu verra, au final, le jeu tient en une dizaine de ligne de code :p
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:32
Et encore une petite question je ne sais pas si c'est possible mais plutot que de mettre une fenetre je voyais plutot sa :

Comme sa L'un des deux se décoche automatiquement mais j'aimerais le mettre dans l'ordre genre:

Si la première case cochée est X et la deuxième 0
décocher automatiquement le X (Sa sa se fait tout seul)
Si la première case cochée est 0 et la deuxième X
Décocher automatiquement le 0 (Sa je ne sais pas si on peut le faire ?)

Mais te prend pa la tete hein il n'y a rien d'urgent tu ma deja bcp aidé et je t'en remerci !!
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 17:33
Ca me prend pas la tete.. ca me rappel mes debut en prog.. j'ai fais le meme style de prog... mais y avait personne pour m aider ;)
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:32
Ps: je lis ton poste sur le boutton indexé j'avais pas vu :)
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:40
mais y avait personne pour m aider ;)

+1
0
napster94700 Messages postés 76 Date d'inscription samedi 14 février 2009 Statut Membre Dernière intervention 7 août 2009 16
26 juil. 2009 à 17:51
C'est pas mal ce system mais j'arrive pas trop a le coder

Genre j'ai essayer d'adapter en renoman les 9 boutons qui sont indexé bt1 comme avant

mais plein d'erreurs

Private Sub bt1_Click(Index As Integer)

If Check1.Value = 1 Then bt1(1).Caption = "X"
If Check2.Value = 1 Then bt1(1).Caption = "O"
If Check1.Value = 1 And Check2.Value = 1 Then
Check1.Value = 0
End If

If Check2.Value = 1 And Check1.Value = 1 Then
Check1.Value = 1
End If

If bt1(1).Caption = "X" And bt1(2).Caption = "X" And bt1(3).Caption = "X" Then MsgBox "X Gagne"
If bt1(4).Caption = "X" And bt1(5).Caption = "X" And bt1(6).Caption = "X" Then MsgBox "X Gagne"
If bt1(7).Caption = "X" And bt1(8).Caption = "X" And bt1(9).Caption = "X" Then MsgBox "X Gagne"
If bt1(1).Caption = "X" And bt1(4).Caption = "X" And bt1(7).Caption = "X" Then MsgBox "X Gagne"
If bt1(2).Caption = "X" And bt1(5).Caption = "X" And bt1(8).Caption = "X" Then MsgBox "X Gagne"
If bt1(3).Caption = "X" And bt1(6).Caption = "X" And bt1(9).Caption = "X" Then MsgBox "X Gagne"
If bt1(1).Caption = "X" And bt1(5).Caption = "X" And bt1(9).Caption = "X" Then MsgBox "X Gagne"

End Sub

Private Sub btexit_Click()
End

End Sub

Private Sub btreset_Click()

bt(1).Caption = ""
bt(2).Caption = ""
bt(3).Caption = ""
bt(4).Caption = ""
bt(5).Caption = ""
bt(6).Caption = ""
bt(7).Caption = ""
bt(8).Caption = ""
bt(9).Caption = ""
Check1.Value = 0
Check2.Value = 0

End Sub
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
26 juil. 2009 à 22:53
Au final, c'est ca que tu veux ??

En 18 lignes hors déclaration de variables :D :D

http://dl.free.fr/getfile.pl?file=/yQqC2yzU

Mais je t expliquerais pas à pas comment y arriver ;)
0