[Résolu] Checkbox dans MultiPage

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:

Orodreth

XLDnaute Impliqué
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:

Pierrot93

XLDnaute Barbatruc
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:)
 

Orodreth

XLDnaute Impliqué
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,
 

maninwhite

XLDnaute Occasionnel
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
 

maninwhite

XLDnaute Occasionnel
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
 

maninwhite

XLDnaute Occasionnel
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
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

rarement besoin du fichier original... un exemple qui fonctionne chez moi... à toi d'adapter.
 

Pièces jointes

  • classeur2.xls
    34 KB · Affichages: 94
  • classeur2.xls
    34 KB · Affichages: 110
  • classeur2.xls
    34 KB · Affichages: 106

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 178
Membres
103 152
dernier inscrit
Karibu