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

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

J'ai encore besoin de rajouter une dernière condition.

J'aimerai que
si j'ai 1 checkbox cochée sur 4 la valeur de la première cellule = valeur caption et les 3 autres cellules = NA
si j'ai 2 checkbox cochées sur 4 la valeur des 2 premières cellules = valeur caption et les 2 autres cellules = NA
...

En fait dans le tableau où je veux reporter les valeurs je veux aucune case vide.

Code:
Dim p As MSForms.Page, c As Control, i As Integer, X As Long, T() As Variant

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
        
                ReDim Preserve T(1 To i)
                T(i) = 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)
ElseIf i > 4 Then Call MsgBox("Vous avez coché plus de 4 system defects", vbExclamation, Application.Name)
Else:
X = Columns(21).Find("", Cells(Rows.Count, 21), xlValues, , 1, 1, 0).Row
        Cells(X, 21).Resize(1, Columns.Count - 20).Find("", Cells(X, Columns.Count), xlValues, , 2, 1, 0).Resize(1, UBound(T)).Value = T





Unload Me: reporter_un_incident_part3.Show
End If

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Bonjour,

essaye avec ce qui suit :
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

Do While UBound(t) < 4
    i = i + 1
    ReDim Preserve t(1 To i)
    t(i) = "NA"
Loop

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

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Checkbox dans MultiPage

Re,

ou leplacer dans le "else", remarque :
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
    Do While UBound(t) < 4
        i = i + 1
        ReDim Preserve t(1 To i)
        t(i) = "NA"
    Loop
    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
 

maninwhite

XLDnaute Occasionnel
Re : Checkbox dans MultiPage

Trop fort, je pense que je peux enfin dire que c e problème est clos mais une autre discussion est déjà ouverte pour un autre, qui sera pour toi, du gâteau au vu du code que tu viens de m"écrire.

J'avais ne comprendre que la moitié du code, mais il me manque avant tout la base, c'est à dire le langage.

Merci
 

maninwhite

XLDnaute Occasionnel
Re : [Résolu] Checkbox dans MultiPage

Bonjour à toutes et à tous

Pierrot93 m'avait grandement aidé pour cette macro super compliquée (à mon niveau).

Dans un UserForm, j'ai 5 Multipages avec des checkboxs.
Le but de cette macro est de reporter dans un tableau la valeur du Caption de chaque Checkbox, sachant qu'on peut cocher entre 1 et 4 checkbox maximum.
Un bout de code a été ajouté pour vérifier cela.

Maintenant, j'aimerai pouvoir faire l'inverse, c'est à dire récupérer les valeurs reportées dans le tableau pour cocher les chekboxs correspondantes à ces valeurs.

Je suis désolé, mais je ne peux pas mettre en pj le fichier pour des raisons de confidentialité :(

Merci
 

maninwhite

XLDnaute Occasionnel
Re : [Résolu] Checkbox dans MultiPage

Tu m'avais écrit le code pour reporter la valeur des captions des checkboxs dans le tableau.
J'aimerai maintenant faire l'inverse avec Unserform Initialise pour que les checkboxs soient cochées en fonction des valeurs dans le tableau
 

maninwhite

XLDnaute Occasionnel
Re : [Résolu] Checkbox dans MultiPage

Quand tu ouvres le fichier, active les macros et l'userform apparaitra.

Lorsque tu coches une checkbox, la caption de la checkbox est reporté dans le tableau en appuyant sur le bouton suivant.

Ce que j'aimerai, c'est que quand l'userform apparait, les cheboxs soient cochées en fonction des valeurs reportées dans le tableau.
 

Discussions similaires

Réponses
2
Affichages
275

Statistiques des forums

Discussions
312 355
Messages
2 087 552
Membres
103 588
dernier inscrit
Tom59300Tom