Cacher et faire réapparaître des images
Bonsoir à tous et merci d'avance à ceux ou celles qui m'aideront (cela ne devrait pas prendre beaucoup de temps),
J'ai réalisé le code suivant et il comporte une ligne à la fin qui ne s'effectue pas, en effet, j'aimerais faire réapparaître les images qui ont été cachées, quand l'utilisateur réussit à faire des paires avant de passer au UserForm suivant (afin que le prochain utilisateur voie toutes les images à l'arrivée sur le userform). Seulement j'ai beau placer "Me.Image1.Visible = True And Me.Image2.Visible = True And Me.Image3.Visible = True And Me.Image4.Visible = True And Me.Image5.Visible = True And Me.Image6.Visible = True" à la fin du UserForm, à la prochaine partie mes images restent cachées.
Qu'est-ce qui cloche ?
Private Sub Image1_Click()
carte1 = 1
coup = coup + 1
If coup = 1 Then
Else
If carte1 = 1 And carte2 = 2 Then
score = score + 4
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple d'eiders à duvet !")
Me.Image1.Visible = False
Me.Image5.Visible = False
coup = 0
Else
If carte1 = 1 And carte1 = 2 Or carte1 = 1 And carte1 = 3 Or carte1 = 1 And carte2 = 1 Or carte1 = 1 And carte2 = 3 Then
score = score - 2
Cells(nojoueur, "h") = score
MsgBox ("Mauvaise réponse !" & vbCr & "-2 points" & vbCr & "" & vbCr & "Ce n'est pas la même espèce !")
Else
If carte1 = 1 And carte2 = 2 Then
score = score + 4
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple d'eiders à duvet !")
Me.Image3.Visible = False
Me.Image4.Visible = False
coup = 0
End If
End If
End If
End If
If Me.Image1.Visible = False And Me.Image2.Visible = False And Me.Image3.Visible = False And Me.Image4.Visible = False And Me.Image5.Visible = False And Me.Image6.Visible = False Then
UserForm16.Hide
Me.Image1.Visible = True And Me.Image2.Visible = True And Me.Image3.Visible = True And Me.Image4.Visible = True And Me.Image5.Visible = True And Me.Image6.Visible = True
UserForm17.Show
Else
End If
End SubBonsoir,
Je ne sais pas si c'est rapide mais enfin ça a le mérite d'être une réponse
Voici le code "restructuré", mais attention, non testé par manque de fichier :
Private Sub Image1_Click()
carte1 = 1
coup = coup + 1
If coup = 1 Then
If carte1 = 1 And carte2 = 2 Then
score = score + 4
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple d'eiders à duvet !")
Me.Image1.Visible = False
Me.Image5.Visible = False
coup = 0
ElseIf carte1 = 1 And carte1 = 2 Or carte1 = 1 And carte1 = 3 Or carte1 = 1 And carte2 = 1 Or carte1 = 1 And carte2 = 3 Then
score = score - 2
Cells(nojoueur, "h") = score
MsgBox ("Mauvaise réponse !" & vbCr & "-2 points" & vbCr & "" & vbCr & "Ce n'est pas la même espèce !")
ElseIf carte1 = 1 And carte2 = 2 Then
score = score + 4
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple d'eiders à duvet !")
Me.Image3.Visible = False
Me.Image4.Visible = False
coup = 0
End If
If Me.Image1.Visible = False And Me.Image2.Visible = False And Me.Image3.Visible = False And Me.Image4.Visible = False And Me.Image5.Visible = False And Me.Image6.Visible = False Then
UserForm16.Hide
Me.Image1.Visible = True And Me.Image2.Visible = True And Me.Image3.Visible = True And Me.Image4.Visible = True And Me.Image5.Visible = True And Me.Image6.Visible = True
UserForm17.Show
End If
End If
End SubEn règle générale n'hésitez pas à utiliser l'indentation (c'est à dire la touche du clavier) afin de "créer" des groupes d'instruction structurés afin de vous y retrouver plus facilement. Sous VBA dans la barre de menu édition c'est les icônes avec une flèche noir suivi de traits bleus qui simule le code (lune flèche à droite l'autre à gauche afin de faire avancer ou reculer les lignes de codes sélectionnées)
@ bientôt
LouReeD
Bonsoir, tout d'abord merci beaucoup pour votre réponse !
Ensuite, j'ai copié collé votre code pour l'une de mes carte et le problème est toujours le même, elle n'apparaît pas quand on relance une partie.
(le problème se situe sur les UserForm 16-17-18 pour vous éviter de tous les parcourir)
RE
voici le code restructuré "correctement" c'est plus lisible... je maintien et je persiste !
Private Sub Image4_Click()
carte2 = 1
coup = coup + 1
If coup = 1 Then
Else
If carte2 = 1 And carte1 = 3 Then
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple de canards colverts !")
Me.Image3.Visible = False
Me.Image4.Visible = False
coup = 0
Else
If carte2 = 1 And carte2 = 2 Or carte2 = 1 And carte2 = 3 Or carte2 = 1 And carte1 = 1 Or carte2 = 1 And carte1 = 2 Then
score = score - 2
Cells(nojoueur, "h") = score
MsgBox ("Mauvaise réponse !" & vbCr & "-2 points" & vbCr & "" & vbCr & "Ce n'est pas la même espèce !")
Else
If carte2 = 1 And carte1 = 3 Then
Cells(nojoueur, "h") = score
MsgBox ("Bonne réponse !" & vbCr & "+4 points" & vbCr & "" & vbCr & "C'est un couple de canards colverts !")
Me.Image3.Visible = False
Me.Image4.Visible = False
coup = 0
End If
End If
End If
End If
If Me.Image1.Visible = False And Me.Image2.Visible = False And Me.Image3.Visible = False And Me.Image4.Visible = False And Me.Image5.Visible = False And Me.Image6.Visible = False Then
UserForm16.Hide
Me.Image1.Visible = True And Me.Image2.Visible = True And Me.Image3.Visible = True And Me.Image4.Visible = True And Me.Image5.Visible = True And Me.Image6.Visible = True UserForm17.Show
Else
End If
End Subpar contre la ligne surlignée est "fausse" pour passer chaque contrôle à "visible" il faut le faire 1 par 1 :
Me.Image1.Visible = True
Me.Image2.Visible = True
Me.Image3.Visible = True
Me.Image4.Visible = True
Me.Image5.Visible = True
Me.Image6.Visible = TrueEvidemment il est possible de faire une boucle :
For i=1 to 6
Contrôles("Image" & i).Visible = True
Next iVoilà, à vous d'essayer
@ bientôt
LouReeD
Après réflexion, il serait plus économique de s'assurer que les images sont visibles lors de l'initialisation du Userform, donc :
Private Sub UserForm_Initialize()
For i = 1 To 6
Contrôles("Image" & i).Visible = True
Next i
End SubVoilà, bonne soirée
LouReeD
Merci, tout joue pour le mieux à présent !
De rien, bonne soirée et @ bientôt
LouReeD