Problème avec ... Erreur de compilation: Procédure Sub ou Function non définie [Résolu]

Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 10:02 - Dernière réponse :
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 21 sept. 2007 à 23:38
Bonjours, voilà j'ai créer une procédure public dans un module, que je souhaite appeler dans ma form1, 2 et bientot 4, problème comme le titre de mon topic le dit, il me sors Erreur de compilation: Procédure Sub ou Function non définie

Voilà un ptit bout de ma procédure:
Public Sub test_V_D()

'Test Victoire, ou Nul
If (CmdCase(0).Tag = CmdCase(1).Tag) And (CmdCase(1).Tag = CmdCase(2).Tag) And _
  (CmdCase(0).Tag = CmdCase(2).Tag) Then
    If (CmdCase(0).Tag <> "New") And (CmdCase(1).Tag <> "New") _
      And (CmdCase(2).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Capt, ----
(Coloration syntaxique automatique par Kenji)

et mon appel n'est pas dure c'est soit Call test_V_D ou test_V_D

si vous pouvez m'éclairer ca m'arrangerais, moi je vois pas ou est le problème, plus je le commprend même pas

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe
Afficher la suite 

Votre réponse

29 réponses

Meilleure réponse
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 10:56
3
Merci
Re,

Tes CmdCase, sont utilisés dans combiens de Form? Plusieurs? Si oui portent-ils tous le même nom ? Si oui essaye cela :

Public Sub test_V_D(MyForm As Form)


'Test Victoire, ou NulIf (MyForm.CmdCase(0).Tag MyForm.CmdCase(1).Tag) And (MyForm.CmdCase(1).Tag MyForm.CmdCase(2).Tag) And _
  (MyForm.CmdCase(0).Tag = MyForm.CmdCase(2).Tag) Then
    If (MyForm.CmdCase(0).Tag <> "New") And (MyForm.CmdCase(1).Tag <> "New") _
      And (MyForm.CmdCase(2).Tag <> "New") Then
            MyForm.LblF.Visible = True
            MyForm.ImF.Visible = True
        V = MsgBox("Joueur " & MyForm.LblJoueur.Caption)
End Sub


Utilisation :


 test_V_D (NomDeTonFormulaire)


A+
Exploreur

 Linux a un noyau, Windows un pépin


 

Merci cs_Exploreur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Exploreur
Meilleure réponse
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 11:18
3
Merci
Re,

Alors : test_V_D NomDeTonFormulaire << sans les parenthèses

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

Merci cs_Exploreur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Exploreur
Meilleure réponse
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 12:05
3
Merci
Salut,

Dans ta Sub, tu n'as appliqué nul part le MyForm >> Exemple : Myform.
CmdCase(0).Tag 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

Merci cs_Exploreur 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_Exploreur
Meilleure réponse
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 21 sept. 2007 à 00:42
3
Merci
Pour l'optimisation, tu pourrais commencer par ces conditions, je pense
If (CmdCase(0).Tag = CmdCase(1).Tag) And (CmdCase(1).Tag = CmdCase(2).Tag) And _
  (CmdCase(0).Tag = CmdCase(2).Tag) Then
    If (CmdCase(0).Tag <> "New") And (CmdCase(1).Tag <> "New") _
      And (CmdCase(2).Tag <> "New") Then

Ta première condition demande si les Tags sont identiques
Si oui, on entre dans la deuxième condition
Pas besoin de demander si les 3 sont = "New"... un seul tag suffit puisque les 3 sont identiques.
Tu pourrais même l'insérer dans une seule condition
If (CmdCase(0).Tag = CmdCase(1).Tag) And (CmdCase(1).Tag = CmdCase(2).Tag) And _
  (CmdCase(0).Tag = CmdCase(2).Tag) And (CmdCase(0).Tag <> "New")  Then

Puis tu pourrais changer tous ces IF par un Select Case qui serait éventuellement plus lisible
Une idée comme ça en passant

MPi

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_MPi
Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 21 sept. 2007 à 01:08
3
Merci
MPi
-> si 0 = 1 et 1= 2, besoin de tester 0=2 ?
voir msg du 20/09/2007 11:59:57

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de PCPT
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 10:36
0
Merci
Salut,

Ce n'est pas par rapport à ce que tu as mis justement dans ta function(Cmdcase,LblF,ImF) ?

Car si tu appelle ta function d'une autre form, ben c'est sur que Vb ne trouve pas Cmdcase,LblF,ImF..Je pense que ton problème vient de là...

D'ailleurs à quoi correspond Cmdcase,LblF,ImF ? Sur quel formulaire se trouvent-ils ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 10:40
0
Merci
c'est des objets,
cmd ... pour commandbutton
lbl ... pour label
im ... pour image
etc. ...

Et donc tu pense que c'est ca, moi je pense pas trop (peut être que je me trompe) vue que dans une autre appli j'ai déjà créée des fonctions dans des modules utilisant des fonctions d'objets existant dans une form et tout c'est bien passer voilà pourquoi je ne comprend pas le fit qu'il me sorte cette erreur de compilation.

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe
Commenter la réponse de VB_PtitCat
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 10:50
0
Merci
Re,

L'erreur te souligne quelle ligne ?

"V" est-il bien déclarer dans ton module ? Car si tu as mit option explicit et qu'il n'est pas déclarer déjà là plantage...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Commenter la réponse de cs_Exploreur
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 10:53
0
Merci
il surligne CmdCase ... puis quand click sur ok, il surligne la ligne d'ouverture de ma procédure c.à.d Public Sub test_V_D()

V est déclarer, Public V As Integer

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe
Commenter la réponse de VB_PtitCat
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
- 20 sept. 2007 à 11:03
0
Merci
Salut,

Si ce sont des objets appartenant à une form(surtout si tu as plusieurs formes avec les noms d'objet sur chaque form) , il faudrait spécifier la form sur lequel cet objet se trouve..Enfin je pense que c'est un autre problème vu que tu n'aurais pas cette erreur mais que tu aurais "un objet est requis"
Commenter la réponse de lolokun
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 11:07
0
Merci
J'ai essayé et il me dit Erreur d'exécution '13': Type incompatible, et il me surligne dans mon script de form l'appel de procédure ...

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe
Commenter la réponse de VB_PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 11:36
0
Merci
 ... On retourne au problème de base, il me resort Erreur de compilation: Procédure Sub ou Function non définie ...
Mais j'aprécie ton idée ca rend mon code plus propre je trouve, als je la garde quand même !!

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe

Un peu de pub ^^
forum d'aide OFFICE et VBA :  http://aide-office-vba.monforum.com/index.php
Commenter la réponse de VB_PtitCat
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
- 20 sept. 2007 à 11:41
0
Merci
Pourrais-tu mettre ton code en entier?le module est bien public?
Il n'y aurait pas un if ou un end sub qui manque ou quelque chose comme ça?
dans ta sub tu n'appelle pas une fonction qui manquerait??
Commenter la réponse de lolokun
Messages postés
4824
Date d'inscription
lundi 11 novembre 2002
Dernière intervention
15 novembre 2016
- 20 sept. 2007 à 11:46
0
Merci
Re,

Allez on essaye un dernier truc du genre(j'suis pas sûr lol..) :

Public Sub test_V_D(MyForm As Form, MyCmd As CommandButton, MyLbl As Label, MyIm As Image)


'Test Victoire, ou NulIf (MyForm.MyCmd(0).Tag MyForm.MyCmd(1).Tag) And (MyForm.MyCmd(1).Tag MyForm.MyCmd(2).Tag) And _
  (MyForm.MyCmd(0).Tag = MyForm.MyCmd(2).Tag) Then
    If (MyForm.MyCmd(0).Tag <> "New") And (MyForm.MyCmd(1).Tag <> "New") _
      And (MyForm.MyCmd(2).Tag <> "New") Then
            MyForm.MyLbl.Visible = True
            MyForm.MyIm.Visible = True
        V = MsgBox("Joueur " & MyForm.MyLbl.Caption)
End Sub

Utilisation :
 test_V_D NomDeTonFormulaire,NomDeTonBoutton,,NomDeTonLabel,NomDeTonImage


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
Commenter la réponse de cs_Exploreur
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 11:57
0
Merci
Ok je poste mon appli mais c'est long ... attention les yx ...

Script Form1:
Private Sub CmdAcc_Click()
Form3.Show
Form1.Hide
End Sub

Private Sub CmdCase_Click(Index As Integer)
Dim t As Integer
Dim l As Integer
Dim mi_ok As Integer
'Vérifie si un nouveau jeu est mis en place
If LblJoueur.Caption = "0" Then
    MsgBox _
      ("Il faut commencer, ou continuer un partie pour pouvoir faire celà !!")
End If
'Vérifie quel joueur joue pour placer la bonne image, compléter le bon tag, et _
  ajout une case coché
If LblJoueur.Caption = "1" Then
    If (CmdCase(Index).Picture <> Empty) Then
        mi_ok = MsgBox("Cette case a déjà était jouée !!")
    Else
        CmdCase(Index).Picture = LoadPicture(Chemin & "\black.jpg")
        CmdCase(Index).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        mi_ok = 0
        test_V_D Form1
    End If
End If
If LblJoueur.Caption = "2" Then
    If (CmdCase(Index).Picture <> Empty) Or (CmdCase(Index).Picture _
      <> Empty) Then
        mi_ok = MsgBox("Cette case a déjà était jouée !!")
    Else
        CmdCase(Index).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(Index).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        mi_ok = 0
        test_V_D Form1
    End If
End If

If mi_ok = 0 Then
'change la main
If LblJoueur.Caption = "1" Then
    LblJoueur.Caption = "2"
Else
If LblJoueur.Caption = "2" Then
    LblJoueur.Caption = "1"
End If
End If
End If
End Sub

Private Sub CmdEnd_Click()
'fermeture
End
End Sub

Private Sub CmNewP_Click()
'initialisation ou réinitialisation de la grille et des score
Dim m As Integer
Label4.Visible = True
Label5.Visible = True
LblJoueur.Visible = True
LblJoueur.Caption = "1"
i = 0
j = 0
LblScore(1).Caption = "0"
LblScore(2).Caption = "0"
For m = 0 To 8 Step 1
    CmdCase(m).Picture = LoadPicture(Empty)
    CmdCase(m).Tag = "New"
Next m
CaseCoch = 0
End Sub

Private Sub Form_Load()
'initialisation de la fenêtre
Dim n As Integer
Chemin = App.Path
Label4.Visible = False
Label5.Visible = False
LblJoueur.Caption = "0"
LblJoueur.Visible = False
For n = 0 To 8 Step 1
CmdCase(n).Tag = "New"
Next n
End Sub, ----
(Coloration syntaxique automatique par Kenji)

Script Form2:
Private Sub CmdAcc_Click()
Form3.Show
Form2.Hide
End Sub

Private Sub CmdCase_Click(Index As Integer)
Dim t As Integer
Dim l As Integer
Dim mi_ok As Integer
Dim SelCase As Integer
'Vérifie si un nouveau jeu est mis en place
If LblJoueur.Caption = "0" Then
    MsgBox _
      ("Il faut commencer, ou continuer un partie pour pouvoir faire celà !!")
End If
'Vérifie quel joueur joue pour placer la bonne image, compléter le bon tag, et _
  ajout une case coché
If LblJoueur.Caption = "1" Then
    If (CmdCase(Index).Picture <> Empty) Or (CmdCase(Index).Picture _
      <> Empty) Then
        mi_ok = MsgBox("Cette case a déjà était jouée !!")
    Else
        CmdCase(Index).Picture = LoadPicture(Chemin & "\black.jpg")
        CmdCase(Index).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        mi_ok = 0
        R = test_V_D(Form2)
    End If
End If

test_V_D Form2

If mi_ok = 0 Then
    'change la main
    If LblJoueur.Caption = "1" Then
        LblJoueur.Caption = "2"
    ElseIf LblJoueur.Caption = "2" Then
        LblJoueur.Caption = "1"
    End If
End If
End Sub

Private Sub CmdCase_MouseUp(Index As Integer, Button As Integer, Shift As _
  Integer, X As Single, Y As Single)
Dim l As Integer
If LblJoueur.Caption = "2" Then
'Test de possibilité de victoire ou defait
PC:
    If (CmdCase(0).Tag = CmdCase(1).Tag) And (CmdCase(0).Tag <> "New") _
      Then
        If (CmdCase(2).Picture <> Empty) Then
            GoTo PC1
        Else
        CmdCase(2).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(2).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC1:
    ElseIf (CmdCase(0).Tag = CmdCase(2).Tag) And (CmdCase(0).Tag <> _
      "New") Then
        If (CmdCase(1).Picture <> Empty) Then
            GoTo PC2
        Else
        CmdCase(1).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(1).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC2:
    ElseIf (CmdCase(0).Tag = CmdCase(3).Tag) And (CmdCase(0).Tag <> _
      "New") Then
        If (CmdCase(6).Picture <> Empty) Then
            GoTo PC3
        Else
        CmdCase(6).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(6).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC3:
    ElseIf (CmdCase(0).Tag = CmdCase(6).Tag) And (CmdCase(0).Tag <> _
      "New") Then
        If (CmdCase(3).Picture <> Empty) Then
            GoTo PC4
        Else
        CmdCase(3).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(3).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC4:
    ElseIf (CmdCase(0).Tag = CmdCase(4).Tag) And (CmdCase(0).Tag <> _
      "New") Then
        If (CmdCase(8).Picture <> Empty) Then
            GoTo PC5
        Else
        CmdCase(8).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(8).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC5:
    ElseIf (CmdCase(0).Tag = CmdCase(8).Tag) And (CmdCase(0).Tag <> _
      "New") Then
        If (CmdCase(4).Picture <> Empty) Then
            GoTo PC6
        Else
        CmdCase(4).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(4).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC6:
    ElseIf (CmdCase(1).Tag = CmdCase(2).Tag) And (CmdCase(1).Tag <> _
      "New") Then
        If (CmdCase(0).Picture <> Empty) Then
            GoTo PC7
        Else
        CmdCase(0).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(0).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC7:
    ElseIf (CmdCase(1).Tag = CmdCase(4).Tag) And (CmdCase(1).Tag <> _
      "New") Then
        If (CmdCase(7).Picture <> Empty) Then
            GoTo PC8
        Else
        CmdCase(7).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(7).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC8:
    ElseIf (CmdCase(1).Tag = CmdCase(7).Tag) And (CmdCase(1).Tag <> _
      "New") Then
        If (CmdCase(4).Picture <> Empty) Then
            GoTo PC9
        Else
        CmdCase(4).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(4).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC9:
    ElseIf (CmdCase(2).Tag = CmdCase(5).Tag) And (CmdCase(2).Tag <> _
      "New") Then
        If (CmdCase(8).Picture <> Empty) Then
            GoTo PC10
        Else
        CmdCase(8).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(8).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC10:
    ElseIf (CmdCase(2).Tag = CmdCase(8).Tag) And (CmdCase(2).Tag <> _
      "New") Then
        If (CmdCase(5).Picture <> Empty) Then
            GoTo PC11
        Else
        CmdCase(5).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(5).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC11:
    ElseIf (CmdCase(2).Tag = CmdCase(4).Tag) And (CmdCase(2).Tag <> _
      "New") Then
        If (CmdCase(6).Picture <> Empty) Then
            GoTo PC12
        Else
        CmdCase(6).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(6).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC12:
    ElseIf (CmdCase(2).Tag = CmdCase(6).Tag) And (CmdCase(2).Tag <> _
      "New") Then
        If (CmdCase(4).Picture <> Empty) Then
            GoTo PC13
        Else
        CmdCase(4).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(4).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC13:
    ElseIf (CmdCase(3).Tag = CmdCase(4).Tag) And (CmdCase(3).Tag <> _
      "New") Then
        If (CmdCase(5).Picture <> Empty) Then
            GoTo PC14
        Else
        CmdCase(5).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(5).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC14:
    ElseIf (CmdCase(3).Tag = CmdCase(5).Tag) And (CmdCase(3).Tag <> _
      "New") Then
        If (CmdCase(4).Picture <> Empty) Then
            GoTo PC15
        Else
        CmdCase(4).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(4).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC15:
    ElseIf (CmdCase(3).Tag = CmdCase(6).Tag) And (CmdCase(3).Tag <> _
      "New") Then
        If (CmdCase(0).Picture <> Empty) Then
            GoTo PC16
        Else
        CmdCase(0).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(0).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC16:
    ElseIf (CmdCase(4).Tag = CmdCase(5).Tag) And (CmdCase(4).Tag <> _
      "New") Then
        If (CmdCase(3).Picture <> Empty) Then
            GoTo PC17
        Else
        CmdCase(3).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(3).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC17:
    ElseIf (CmdCase(4).Tag = CmdCase(7).Tag) And (CmdCase(4).Tag <> _
      "New") Then
        If (CmdCase(1).Picture <> Empty) Then
            GoTo PC18
        Else
        CmdCase(1).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(1).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC18:
    ElseIf (CmdCase(4).Tag = CmdCase(8).Tag) And (CmdCase(4).Tag <> _
      "New") Then
        If (CmdCase(0).Picture <> Empty) Then
            GoTo PC19
        Else
        CmdCase(0).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(0).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC19:
    ElseIf (CmdCase(5).Tag = CmdCase(8).Tag) And (CmdCase(5).Tag <> _
      "New") Then
        If (CmdCase(2).Picture <> Empty) Then
            GoTo PC20
        Else
        CmdCase(2).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(2).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC20:
    ElseIf (CmdCase(6).Tag = CmdCase(7).Tag) And (CmdCase(6).Tag <> _
      "New") Then
        If (CmdCase(8).Picture <> Empty) Then
            GoTo PC21
        Else
        CmdCase(8).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(8).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC21:
    ElseIf (CmdCase(6).Tag = CmdCase(8).Tag) And (CmdCase(6).Tag <> _
      "New") Then
        If (CmdCase(7).Picture <> Empty) Then
            GoTo PC22
        Else
        CmdCase(7).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(7).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC22:
    ElseIf (CmdCase(7).Tag = CmdCase(8).Tag) And (CmdCase(7).Tag <> _
      "New") Then
        If (CmdCase(6).Picture <> Empty) Then
            GoTo PC23
        Else
        CmdCase(6).Picture = LoadPicture(Chemin & "\blue.jpg")
        CmdCase(6).Tag = LblJoueur.Caption
        CaseCoch = CaseCoch + 1
        End If
PC23:
    Else
'Initialise le générateur de nombres aléatoires.
        Randomize
        SelCase = Int((8 * Rnd))
        If (CmdCase(SelCase).Picture <> Empty) Then
            GoTo PC
        Else
            CmdCase(SelCase).Picture = LoadPicture(Chemin & "\blue.jpg")
            CmdCase(SelCase).Tag = LblJoueur.Caption
            CaseCoch = CaseCoch + 1
        End If
    End If
End If

test_V_D Form2

'change la main
If LblJoueur.Caption = "1" Then
    LblJoueur.Caption = "2"
ElseIf LblJoueur.Caption = "2" Then
    LblJoueur.Caption = "1"
End If

End Sub

Private Sub CmdEnd_Click()
'fermeture
End
End Sub

Private Sub CmNewP_Click()
'initialisation ou réinitialisation de la grille et des score
Dim m As Integer
Label4.Visible = True
Label5.Visible = True
LblJoueur.Visible = True
LblJoueur.Caption = "1"
i = 0
j = 0
LblScore(1).Caption = "0"
LblScore(2).Caption = "0"
For m = 0 To 8 Step 1
    CmdCase(m).Picture = LoadPicture(Empty)
    CmdCase(m).Tag = "New"
Next m
CaseCoch = 0
End Sub

Private Sub Form_Load()
'initialisation de la fenêtre
Dim n As Integer
Chemin = App.Path
Label4.Visible = False
Label5.Visible = False
LblJoueur.Caption = "0"
LblJoueur.Visible = False
For n = 0 To 8 Step 1
CmdCase(n).Tag = "New"
Next n
End Sub, ----
(Coloration syntaxique automatique par Kenji)

Script Module1:
Public Chemin As String
Public i As Integer
Public j As Integer
Public CaseCoch As Integer
Public V As Integer
Public R As Integer

Public Sub test_V_D(MyForm As Form)
'Test Victoire, ou Nul
If (CmdCase(0).Tag = CmdCase(1).Tag) And (CmdCase(1).Tag = CmdCase(2).Tag) And _
  (CmdCase(0).Tag = CmdCase(2).Tag) Then
    If (CmdCase(0).Tag <> "New") And (CmdCase(1).Tag <> "New") _
      And (CmdCase(2).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(3).Tag = CmdCase(4).Tag) And (CmdCase(4).Tag = CmdCase(5).Tag) _
  And (CmdCase(3).Tag = CmdCase(5).Tag) Then
    If (CmdCase(3).Tag <> "New") And (CmdCase(4).Tag <> "New") _
      And (CmdCase(5).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(6).Tag = CmdCase(7).Tag) And (CmdCase(7).Tag = CmdCase(8).Tag) _
  And (CmdCase(6).Tag = CmdCase(8).Tag) Then
    If (CmdCase(6).Tag <> "New") And (CmdCase(7).Tag <> "New") _
      And (CmdCase(8).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(0).Tag = CmdCase(3).Tag) And (CmdCase(3).Tag = CmdCase(6).Tag) _
  And (CmdCase(0).Tag = CmdCase(6).Tag) Then
    If (CmdCase(0).Tag <> "New") And (CmdCase(3).Tag <> "New") _
      And (CmdCase(6).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(1).Tag = CmdCase(4).Tag) And (CmdCase(4).Tag = CmdCase(7).Tag) _
  And (CmdCase(1).Tag = CmdCase(7).Tag) Then
    If (CmdCase(1).Tag <> "New") And (CmdCase(4).Tag <> "New") _
      And (CmdCase(7).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(2).Tag = CmdCase(5).Tag) And (CmdCase(5).Tag = CmdCase(8).Tag) _
  And (CmdCase(2).Tag = CmdCase(8).Tag) Then
    If (CmdCase(2).Tag <> "New") And (CmdCase(5).Tag <> "New") _
      And (CmdCase(8).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(0).Tag = CmdCase(4).Tag) And (CmdCase(4).Tag = CmdCase(8).Tag) _
  And (CmdCase(0).Tag = CmdCase(8).Tag) Then
    If (CmdCase(0).Tag <> "New") And (CmdCase(4).Tag <> "New") _
      And (CmdCase(8).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf (CmdCase(2).Tag = CmdCase(4).Tag) And (CmdCase(4).Tag = CmdCase(6).Tag) _
  And (CmdCase(2).Tag = CmdCase(6).Tag) Then
    If (CmdCase(2).Tag <> "New") And (CmdCase(4).Tag <> "New") _
      And (CmdCase(6).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
        V = MsgBox("Joueur " & LblJoueur.Caption & " GAGNE !!", 64, _
          "VICTOIRE !!")
        If V = 1 Then
            LblF.Visible = False
            ImF.Visible = False
        End If
        If LblJoueur.Caption = "1" Then
            i = i + 1
            LblScore(1).Caption = CStr(i)
        End If
        If LblJoueur.Caption = "2" Then
            j = j + 1
            LblScore(2).Caption = CStr(j)
        End If
'réinitialisation de la grille
        For l = 0 To 8 Step 1
            CmdCase(l).Picture = LoadPicture(Empty)
            CmdCase(l).Tag = "New"
        Next l
        CaseCoch = 0
'change la main
        If LblJoueur.Caption = "1" Then
          LblJoueur.Caption = "2"
        ElseIf LblJoueur.Caption = "2" Then
            LblJoueur.Caption = "1"
        End If
        Exit Sub
    End If
ElseIf CaseCoch = 9 Then
    V = MsgBox("Et c'est un match nul", 64, "NUL !!")
'réinitialisation de la grille
    For l = 0 To 8 Step 1
        CmdCase(l).Picture = LoadPicture(Empty)
        CmdCase(l).Tag = "New"
    Next l
    CaseCoch = 0
'change la main
    If LblJoueur.Caption = "1" Then
      LblJoueur.Caption = "2"
    ElseIf LblJoueur.Caption = "2" Then
        LblJoueur.Caption = "1"
    End If
    Exit Sub
End If

End Sub, ----
(Coloration syntaxique automatique par Kenji)

Voilà, c'est pour mon source S.V.P aidez moi, je veux rendre ma mise en forme correct, pour pouvoir plus aisaiment corriger, les différent bug, et apporté plus facillement les modification qui vont bien ...

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe

Un peu de pub ^^
forum d'aide OFFICE et VBA :  http://aide-office-vba.monforum.com/index.php
Commenter la réponse de VB_PtitCat
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 20 sept. 2007 à 11:59
0
Merci
salut,

reprenons au début.

taform est-elle unique ou est-ce une instance d'une form ?
(c'est à dire, elle est ouverte par me.show ou f as new form_truc etc..)

ton code est bien dans une module standart?

d'ailleurs le test des if est bien amusant.....

Public V As Integer

Public Sub test_V_D(MyForm As Form)
'Test Victoire, ou Nul
    With MyForm
        If ((.CmdCase(0).Tag = .CmdCase(1).Tag) And
(.CmdCase(0).Tag = .CmdCase(2).Tag)) And (.CmdCase(0).Tag <> "New") Then
            LblF.Visible = True
            ImF.Visible = True
            V = MsgBox("Joueur " & .LblJoueur.Capt, vbYesNoCancel)
        '..... [IL MANQUE QUOI ENSUITE?!!]

que doit-on deviner?
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 20 sept. 2007 à 12:03
0
Merci
woups ^^

ok.
mais sans savoir avec certitude où sont les objets...

édites les form1 et 2 avec le bloc note et copie stp, çà sera plus pratique

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 12:10
0
Merci
Et b'hein, ca marche ... :-D c'est super !!
Mrc Mrc Mrc surtout toi Exploreur

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe

<font color="#0000
Commenter la réponse de VB_PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
13 mai 2009
- 20 sept. 2007 à 12:14
0
Merci
Oui oui j'avais vue, just après avoir post, j'ai fais n'imp, je susi dsl,  mais j'ai vue, j'ai modifier et ca marche même plutot bien ^^
Merci encore

Sujet Clos ... ... ... Enfin pour le moment, lol

MerZi ... Zi ... Zi ... PtitCat   
                                 P.S:DSL pour l'orthographe

<font color="#0000
Commenter la réponse de VB_PtitCat
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
6 avril 2012
- 20 sept. 2007 à 12:32
0
Merci
Salut,
QUESTION totalement  hors sujet: T'as pas moyen d'optimiser le code???? il est un peu répétitif la je trouve...

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.