[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:

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

Et concernant ma 2è question, peux tu m'aider?
A savoir reporter la valeur des checkboxs dans un tableau?, sachant que la checkbox est variable?
manque un peu de précision... reporter quoi ? le nom, la valeur.... et selon quel critère.... peut être profiter de la boucle pour envoyer l'instruction....
 

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

Renvoyer le caption de chaque checkbox cochée sur une ligne, genre A1, B1, C1, D1 vu que je n'autorise qu'à cocher 4 checkboxs maxi.
Il faut également qu'à chaque nouvelle saisie, je remplisse la ligne suivante comme je vais avec des textboxs sauf que la j'ai une variable pour ma checkbox

Code:
        With Sheets("report")
            .Cells(.Cells(Rows.Count, "A").End(xlUp).Row + 1, "A") = TextBox_redacteur.Value
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

essaye ceci, pas sûr que ce soit précisement ce que tu veux mais tu devrais pouvoir adapter :
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim p As MSForms.Page, c As Control, i As Integer, x As Long
x = Columns(1).Find("", Cells(Rows.Count, 1), xlValues, , 1, 1, 0).Row  'Première ligne
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
                Cells(x, Rows(x).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Column) = c.Caption
            End If
        End If
    Next c
Next p
If i > 2 Then Unload Me: UserForm2.Show
End Sub
 

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

Merci après adaptation, je n'arrive pas à faire une chose.

Je veux commencer à la première ligne vide et à la colonne T numéro 20 si je ne me trompe pas et que mettre les valeurs cochées mais je n'arrive pas à l'adapter merci

Avec ton code, on commence en A1
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

bah.. tu disais ca au début....
Renvoyer le caption de chaque checkbox cochée sur une ligne, genre A1, B1, C1, D1 vu que je n'autorise qu'à cocher 4 checkboxs maxi.
Il faut également qu'à chaque nouvelle saisie, je remplisse la ligne suivante comme je vais avec des textboxs sauf que la j'ai une variable pour ma checkbox

modifie comme suit :
Code:
x = Columns(20).Find("", Cells(Rows.Count, 20), xlValues, , 1, 1, 0).Row  'Première ligne

et :
Code:
Cells(x, cells(x, 20).resize(, Columns.Count).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Column) = c.Caption

pas retesté....
 

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

Mon code
Code:
Option Explicit

Private Sub CommandButton_suivant_Click()
Dim p As MSForms.Page, c As Control, i As Integer, X As Long

X = Columns(20).Find("", Cells(Rows.Count, 20), xlValues, , 1, 1, 0).Row  'Première ligne

For Each p In Me.MultiPage_KE.Pages
    For Each c In Me.MultiPage_KE.Pages(p.Name).Controls
        If TypeName(c) = "CheckBox" Then If c Then i = i + 1
        
Cells(X, Cells(X, 20).Resize(, Columns.Count).Find("", Cells(X, Columns.Count), xlValues, , 2, 1, 0).Column) = c.Caption

    Next c
Next p

If i = 0 Then
Call MsgBox("Vous n'avez coché aucun system defects", vbExclamation, Application.Name)
Exit Sub
End If

If i > 4 Then
Call MsgBox("Vous avez coché plus de 4 system defects", vbExclamation, Application.Name)
Exit Sub
End If

If 1 < i < 4 Then
Unload Me: reporter_un_incident_part3.Show
Exit Sub
End If

End Sub

J'ai une erreur "application defined or object defined avec :
Code:
Cells(X, Cells(X, 20).Resize(, Columns.Count).Find("", Cells(X, Columns.Count), xlValues, , 2, 1, 0).Column) = c.Caption
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

modifie comme suit :
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim p As MSForms.Page, c As Control, i As Integer, x As Long, r As Range
x = Columns(20).Find("", Cells(Rows.Count, 20), xlValues, , 1, 1, 0).Row
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
                Cells(x, 20).Resize(1, Columns.Count - 19).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Value = c.Caption
            End If
        End If
    Next c
Next p
If i > 2 Then Unload Me: UserForm2.Show
End Sub
 

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

Merci.

J'ai encore rajouter une ligne pour vérifier si C.Value = True car comme le code était écrit cela me reportait toutes les checkboxs, qu'elles soient cochées ou non.

Le dernier problème est que je n'arrive pas à placer mon code pour vérifier le nombre de checkboxs cochées car j'ai 3 conditions et je veux que les valeurs soient uniquement reportées si Il y a entre 1 et 4 checkboxs cochées.

Peux tu me dire ou placer ce code car je l'ai mis un peu partout mais cela ne marche pas Merci

Je remet le code ci dessous

Code:
Option Explicit

Private Sub CommandButton_suivant_Click()
Dim p As MSForms.Page, c As Control, i As Integer, X As Long, R As Range

X = Columns(21).Find("", Cells(Rows.Count, 21), xlValues, , 1, 1, 0).Row

For Each p In Me.MultiPage_KE.Pages
    For Each c In Me.MultiPage_KE.Pages(p.Name).Controls
        If TypeName(c) = "CheckBox" Then
        If c.Value = True Then
        i = i + 1
        
        Cells(X, 21).Resize(1, Columns.Count - 20).Find("", Cells(X, Columns.Count), xlValues, , 2, 1, 0).Value = c.Caption

        End If
        End If

    Next c
Next p

'If i = 0 Then
'Call MsgBox("Vous n'avez coché aucun system defects", vbExclamation, Application.Name)
'Exit Sub
'End If

'If i > 4 Then
'Call MsgBox("Vous avez coché plus de 4 system defects", vbExclamation, Application.Name)
'Exit Sub
'End If
'
'If 1 < i < 4 Then
'Unload Me: reporter_un_incident_part3.Show
'Exit Sub
'End If

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Bonjour,

essaye avec ceci :
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim p As MSForms.Page, c As Control, i As Integer, x As Long
x = Columns(20).Find("", Cells(Rows.Count, 20), xlValues, , 1, 1, 0).Row
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
                Cells(x, 20).Resize(1, Columns.Count - 19).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Value = c.Caption
            End If
        End If
    Next c
Next p
If i = 0 Then
    MsgBox "aucune de cochée..."
    ElseIf i > 4 Then MsgBox "Plus de 4"
    Else
        Unload Me: UserForm2.Show
End If
End Sub

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

essaie avec ceci :
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim p As MSForms.Page, c As Control, i As Integer, x As Long, t() As Variant
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
                ReDim Preserve t(1 To i)
                t(i) = c.Caption
            End If
        End If
    Next c
Next p
If i = 0 Then
    MsgBox "aucune de cochée..."
    ElseIf i > 4 Then MsgBox "Plus de 4"
    Else
    x = Columns(20).Find("", Cells(Rows.Count, 20), xlValues, , 1, 1, 0).Row
    Cells(x, 20).Resize(1, Columns.Count - 19).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Resize(1, UBound(t)).Value = t
        Unload Me
        UserForm2.Show
End If
End Sub
 

Discussions similaires

Réponses
2
Affichages
275

Statistiques des forums

Discussions
312 361
Messages
2 087 613
Membres
103 607
dernier inscrit
lolo1970