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 Sub

Bonsoir,

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 Sub

En 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 Sub

par 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 = True

Evidemment il est possible de faire une boucle :

For i=1 to 6
     Contrôles("Image" & i).Visible = True
Next i

Voilà, à 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 Sub

Voilà, bonne soirée

LouReeD

Merci, tout joue pour le mieux à présent !

De rien, bonne soirée et @ bientôt

LouReeD

Rechercher des sujets similaires à "cacher reapparaitre images"