Check de 14 checkbox + fermeture d'un user et ouverture d'un autre

Bonjour à toutes et tous,

Je suis à la recherche d'un peu d'aide concernant du code VBA pour effectuer les opérations suivante:

J'ai un userform avec 14 checkbox plus deux boutons de commande quitter (ça ça va pas de soucis) et vérification finie (c'est là le soucis).

Je cherche à faire la chose suivante:

1- faire en sorte que quand je clique sur vérification finie, il y ai un code qui verifie que les 14 checkbox soient bien toutes cochées sinon cela m'affiche une msgbox me disant qu'il me manque des étapes.

2- Si tout est ok (les 14 checkbox bien cochées) il ferme le userform 2 et ouvre une msg box qui m'indique de rentrer les données d'un dossier dans la userform1 en l'ouvrant.

J'ai ce code qui fonction sur la partie vérification check box mais c'est tout:

Dim I As Byte, Ok As Boolean
  For I = 14 To 14
    If Me.Controls("checkbox" & I) = True Then Ok = True: Exit For
    Next I:
   If Ok = False Then
    msgbox "Vous n'avez pas tout vérifie"
     End If
        If Ok = True Then
    msgbox("Vous avez fini la verification!", vbOKOnly) As vbOK
    Unload Me
    UserForm1.Show
     End If
     Exit Sub

Merci d'avance pour les réponses.

Cordialement.

Bonjour

Là avec votre boucle For i = 14 to 14, votre code vérifie uniquement la checkbox 14

Essayez plutôt ceci :

Dim I As Byte
For I = 1 To 14
    If Me.Controls("checkbox" & I) = False Then
        Msgbox "Vous n'avez pas tout vérifié"
        Exit Sub
    End If
Next I
Msgbox "Vous avez fini la vérification!"
Unload Me
userform1.Show
End Sub

A voir le Userform.show et le Unload me car il y a surement moyen de faire autrement. Il faudrait comprendre pourquoi vous voulez décharger et relancer l'USF ?

Vous pourriez peut-être plutôt reboucler sur les checkbox et les décocher si elles sont bien toutes cochées lors de la vérification

si ok -->

Crdlt

Salut le fil,

Avec une fonction qui te permet de récupérer le contrôle :

Function IsChecked() As MSForms.CheckBox
    Dim I As Byte
    Dim ctrl As Control
    Dim ctrlMax As Byte
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "CheckBox" Then ctrlMax = ctrlMax + 1
    Next
    For I = 1 To ctrlMax
        If Me.Controls("CheckBox" & I) = False Then Set IsChecked = Me.Controls("CheckBox" & I): Exit For
    Next I
End Function

Et pour l'appel :

Private Sub cmdQuit_Click()
    Dim objTemp As Object
    Set objTemp = IsChecked
    If Not objTemp Is Nothing Then
        msgbox "Oupssss... Vous avez omis de cocher " & objTemp.Caption
        Exit Sub
    End If
    Unload Me

End Sub

On aurait pu aussi passer par une classe.

Merci Dan ça marche nickel!

Rechercher des sujets similaires à "check checkbox fermeture user ouverture"