[Résolu] Checkbox dans MultiPage

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maninwhite

XLDnaute Occasionnel
Bonjour à toutes et à tous.

Je reviens vers vous pour deux questions.

Dans un userform, j'ai crée un Multipage avec 5 pages.
Chacune des page contient des checkboxs.
Je valide le tout avec un bouton qui se trouve dans l'userform et non pas dans le MultiPage.

1è question :
Comment puis je faire pour que lorsque je clique sur le bouton, cela vérifie que j'ai maximum 4 checkboxs cochées et si plus un msgbox.

J'ai essayé le code ci dessous mais celà ne marche pas

Code:
Private Sub CommandButton_suivant_Click()

Dim Ctrl As Control
Dim I As Long

    For Each Ctrl In MultiPage_KE.Controls
    If TypeName(Ctrl) = "CheckBox" Then
        If Ctrl.Value = True Then
            I = I + 1                         ' boucle pour connaitre le nombre de checkbox cochées
        End If
    End If
Next Ctrl
If I = 3 Then
    Call MsgBox("Test", vbExclamation, Application.Name)
End If


2è question, comme fais t'on pour reporter les valeurs dans un tableau? Je sais les reporter de manière individuelle, mais pas aléatoire.
Partons du principe que la 1è checkbox cochée va en A1, la 2è en B1...

Merci d'avance
 
Dernière édition:
Re : Checkbox dans MultiPage

Bonjour,

Petite astuce pour ta première demande: mets un compteur, que tu initialises à zéro à l'affichage de ton userform.

Après, pour chacun de tes checkbox, sur l'évènement "Change" (ou Click, mais Change me parait plus viable), tu incrémentes ou décrémentes de 1 le compteur en fonction de la valeur du checkbox en question.

Code:
Private Sub CheckBox1_Click()
    Select Case CheckBox1.Value
        Case True
            If i_Compteur_Chk = 4 Then
                CheckBox1.Value = False
            Else
                i_Compteur_Chk = i_Compteur_Chk + 1
            End If
        Case False
            If i_Compteur_Chk > 0 Then
                i_Compteur_Chk = i_Compteur_Chk - 1
            End If
    End Select
End Sub

2 avantages: tu peux vérifier pendant la saisie même à quel nombre de checkbox tu es, ce qui est plus simple pour la validation de données, et tu peux, à la validation de ton formulaire, afficher un message en fonction du nombre de checkbox cochés, référencés par le compteur.

Cordialement,
 
Dernière édition:
Re : Checkbox dans MultiPage

Bonjour,

il faut boucler sur les différentes pages de ton "multipage", code ci-dessous à adapter :
Code:
Dim p As Page, c As Control, i As Integer
For Each p In Me.MultiPage1.Pages
    For Each c In Me.MultiPage1.Pages(p.Name).Controls
        If TypeName(c) = "CheckBox" Then If c Then i = i + 1
    Next c
Next p
MsgBox i
bonne journée
@+

Edition : re Orodreth🙂
 
Re : Checkbox dans MultiPage

Re,

Bonjour Pierrot, décidément, ce matin, on se croise ^^

Sinon, autre solution, tu peux partir sur une collection.
C'est dans la même idée que le compteur, la différence étant que là, tu manipules des ajouts/suppressions de Checkbox dans la collection, c'est l'équivalent d'une pile.

Le compteur étant natif dans la collection, ça me parait plus simple 🙂

Exemple:
Code:
Private o_Collection_CHK as collection

public sub UserForm1_Initialize()
    Set o_Collection_CHK = New Collection
End Sub

Private Sub CheckBox1_Click()
    Select Case CheckBox1.Value
        Case True
            o_Collection_CHK.Add Checkbox1    
        Case False
            o_Collection_CHK.Delete Checkbox1 'Là, j'ai un petit doute sur la suppression dans la collection, tu dois peut-être boucler pour retrouver le bon
    End Select
End Sub

Cordialement,
 
Re : Checkbox dans MultiPage

Merci à vous deux.

J'ai retenu la solution de Pierrot, mais j'ai un "type mismatch" sur la ligne
Code:
For Each p In Me.MultiPage_KE.Pages

J'ai juste remplacer Multipage1 par Multipage_KE qui est le nom de mon multipage
.

Merci
 
Re : Checkbox dans MultiPage

Moi je l'ai placé dans Private Sub CommandButton_suivant_Click() car c'est au moment de passer à l'usf suivant que je veux que le nombre de checkbox cochées soit vérifié avant d'enregistrer les données dans la feuille.

Merci
 
Re : Checkbox dans MultiPage

Le problème c'est que je ne peux pas envoyer le fichier, c'est un fichier pour le travail donc sensible, je suis désolé.

Le code du bouton

Code:
Private Sub CommandButton_suivant_Click()

Dim p As Page, c As Control, i As Integer
For Each p In reporter_un_incident_part2.MultiPage_KE.Pages
    For Each c In reporter_un_incident_part2.MultiPage_KE.Pages(p.Name).Controls
        If TypeName(c) = "CheckBox" Then If c Then i = i + 1
    Next c
Next p
MsgBox i

reporter_un_incident_part3.Show
Unload Me

End Sub

Un screentshot de l'usf
Ce lien n'existe plus

Le but est :

Lorsque je clique sur le bouton suivant, j'ai un code qui vérifie qu'il n'y est pas plus de 4 checkboxs cochées dans toutes les pages du Multipages.
Si il y en a plus que 4, msg pour erreur et GoTo fin
Si 4 ou moins, affichage de l'usf suivant.

Merci pour ta patience
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
300
Retour