[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 : [Résolu] Checkbox dans MultiPage

J''ai un Userform avec un Multipage (5 pages) et dans chaque pages des checkboxs.

Le nom des checkboxs (Caption) est "Test1", "Test2"...
Ce sont des noms que j'ai utilisé pour l'exemple car je ne peux pas mettre le fichier d'origine)

Lorsque j'appuie sur le bouton "Suivant" qui se trouve dans l'Userform et non pas dans le "Multipage" la valeur du caption de chaque checkbox cochée est reportée dans le tableau de la sheet "report" de la colonne V à Y sachant que je ne peux pas cocher plus que 4 checkboxs.

Ci dessous le code que tu m'avais donné avec les explications :

Code:
Private Sub CommandButton_suivant_Click()

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

'Boucle sur chaque Checkbox de chaque Page du Multipage
For Each p In editer_un_incident_part2.MultiPage_KE.Pages
    For Each c In editer_un_incident_part2.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

"Si aucune checkbox cochée, message d'erreur
If i = 0 Then
Call MsgBox("Vous n'avez coché aucun system defects", vbExclamation, Application.Name)
"Si plus que 4 checkbox cochées, message d'erreur
ElseIf i > 4 Then Call MsgBox("Vous avez coché plus de 4 system defects", vbExclamation, Application.Name)


"Vérifie que si juste 1 2 ou 3 checkboxs sont cochées, la valeur de la 2è 3è et 4è cellule sera égale à Non applicable" Cela permet d'avoir aucune cellule vide
Else:

    Do While UBound(T) < 4
        i = i + 1
        ReDim Preserve T(1 To i)
        T(i) = "Non applicable"
        Loop

End If

'Rempli les colonnes V à Y avec la valeur (caption) des checkboxs cochées
x = Columns(22).Find("", Cells(Rows.Count, 22), xlValues, , 1, 1, 0).Row
        Cells(x, 22).Resize(1, Columns.Count - 21).Find("", Cells(x, Columns.Count), xlValues, , 2, 1, 0).Resize(1, UBound(T)).Value = T

End Sub

Tout cela fonctionnement correctement et c'est toi qui me l'avais écrit :)

Maintenant le but serait de faire l'inverse.

Cocher les checkboxs à l'ouverture de l'userform en fonction de la valeur des cellules de V à Y.

Pour me placer sur une ligne, j'utilise le code ci dessous en rentrant une valeur dans une textbox d'un autre userform

Code:
Dim a As Integer

a = edit.TextBox_num.Value + 2

Code:
Private Sub UserForm_Initialize()
'Code à faire
End Sub

Merci pour ta patience en espérant avoir été précis
 

maninwhite

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

Re,

tu n'as pas répondu à mes questions....



quel tableau ? Quelle cellule pour quelle "checkbox" ? plusieurs "test1" ?, sans plus de détails, perso peux pas t'en dire plus... désolé....

quel tableau ?

Le tableau de la sheet "report"

Quelle cellule pour quelle "checkbox" ?
Il n'y a pas de cellule dédiée à une checkbox. Peu importe les checkbox cochées, les captions iront de V à Y

plusieurs "test1" ?

On retrouve plusieurs fois test1 car à chaque fois que tu appuies sur le bouton "Suivant" la valeur est reportée à la cellule vide suivante donc si tu appuies 20 fois sur Test1 tu auras 20 lignes de suite avec Test1

En espérant avoir répondu correctement :)
 

Pierrot93

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

Re,

essaye ceci :
Code:
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 5
    With Me.Controls("CheckBox_KE1_" & i)
        .Value = Cells(1000, 21 + i).End(xlUp) = .Caption
    End With
Next i
End Sub
attention des données sont présentes au milieu de la feuille (ligne 1001).... pas top quand tu veux automatiser....
 

maninwhite

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

Merci, cela fonctionne dans le cas présent.

Le soucis qu'il y a c,'est qu' à la base (pas dans mon exemple), j'ai une dizaine de checkboxs dans chaque Multipage.

Sachant que dans la Page KEi1 les checkboxs s'appellent CheckBox_KE1_" & i, dans la page KEII&III, les checkbos s'appellent CheckBox_KE2_" & i...

D'où le fait que dans le code d'origine pour reporter les captions des checkbos dans le tableau, tu avais fait une boucle sur chaque Checkbos de chaque Page avec le code ci dessous

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

For Each p In editer_un_incident_part2.MultiPage_KE.Pages
    For Each c In editer_un_incident_part2.MultiPage_KE.Pages(p.Name).Controls
        If TypeName(c) = "CheckBox" Then
        If c.Value = True Then
...

Merci
 

Pierrot93

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

Bonjour,

bah... te reste plus qu'à adapter.... tu as tous les codes qu'il faut... je ne vais tout de même pas tout faire..... surtout avec le peut d'explication que tu donnes...

bon courage pour la suite.
 

Discussions similaires

Réponses
2
Affichages
275

Statistiques des forums

Discussions
312 361
Messages
2 087 604
Membres
103 605
dernier inscrit
gabriel morency