Résolu XL 2016 Récupération de Valeur de CheckBox (dans un UserForm) et placement dans une zone de texte

Jgral

XLDnaute Nouveau
Bonjour,

J'en convient mon titre est long :)

Comme je le dis dans le titre je souhaite récupérer les valeurs des CheckBox présentent dans le UserForm5 (cliquer sur TRAVAUX CLIENT à gauche) afin de les écrire dans une zone de texte générée.

VB:
Sub zone_de_txt04()

L = ActiveCell.Column  '<-- position horizontale
T = ActiveCell.Row '<-- position verticale'Insertion de la zone de texte

        'Dimensions et position de la zone de texte
        h = 50
        W = 500 '<-- largeur
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, h).Select
        'Selection.Name = "ztxt1" '<-- nom de la zone de texte
       
        'Paramètres de la zone de texte
            With Selection
                .AutoSize = msoAutoSizeShapeToFitText
                '.Name = "txt3" '<-- nom de la zone de texte
                .Characters.Text = "TRAVAUX A REALISER PAR LE CLIENT :"

                'On Error Resume Next

                Dim i As Integer
                For i = 1 To UserForm5.Controls.Count
               
                    If i < 2 Or (i > 4 And i <> 13 And i < 18) Then
                        .Characters.Text = .Characters.Text & Chr(10) & Me.Controls.Item("CheckBox" & i).Caption
                    ElseIf CheckBox1 = True And i = 2 Then
                        .Characters.Text = .Characters.Text & Me.Controls.Item("TextBox" & i).Value
                    ElseIf CheckBox2 = True And i = 3 Then
                        .Characters.Text = .Characters.Text & " , Largeur : " & Me.Controls.Item("TextBox" & i).Value
                    ElseIf CheckBox3 = True And i = 4 Then
                        .Characters.Text = .Characters.Text & " , Profondeur : " & Me.Controls.Item("TextBox" & i).Value
                    ElseIf i <> 13 And i < 18 Then
                        .Characters.Text = .Characters.Text & " , Autre : " & Me.Controls.Item("TextBox" & i).Text
                    End If
                   

                    'If Left(i.Name, 8) = "CheckBox" Then
                    '    If i.Value = True Then
                    '        .Characters.Text = .Characters.Text & Chr(10) & i.Caption
                    '    End If
                    'ElseIf i.Name = "TextBox1" And CheckBox1 = True Then
                    '    .Characters.Text = .Characters.Text & i.Value
                    'ElseIf i.Name = "TextBox2" And CheckBox1 = True Then
                    '    .Characters.Text = .Characters.Text & " , Largeur : " & i.Value
                    'ElseIf i.Name = "TextBox3" And CheckBox1 = True Then
               '     '    .Characters.Text = .Characters.Text & " , Profondeur : " & i.Value
                    'ElseIf i.Name = "TextBox14" And CheckBox14 = True Then
                    'End If
                    'Debug.Print (i.Name)
                Next i
           '.HorizontalAlignment = xlCenter '<-- texte centré horizontalement
            .VerticalAlignment = xlCenter '<-- texte centré verticalement
            .ShapeRange.Fill.ForeColor.SchemeColor = 45 '<-- couleur de fond
            .ShapeRange.Line.Weight = 2.5 '<-- épaisseur du cadre
            .ShapeRange.Line.ForeColor.SchemeColor = 0 '<-- couleur du cadre
            .Top = Cells(T, L).Top + 10
            .Left = Cells(T, L).Left + 10
        End With
       
        'Mise en forme du texte
        With Selection.Font
            .Name = "Calibri" '<-- police
            .Size = 12 '<-- taille
            .ColorIndex = 0 '<-- couleur
        End With
       
         'Mise en forme d'une partie du texte
        With Selection.Characters(Start:=1, Length:=34).Font '<-- du 1ème au 34ème caractère
            .Underline = xlUnderlineStyleSingle '<-- soulignement
            .Bold = True '<-- mise en gras
            .ColorIndex = 1 '<-- couleur
            .Bold = True
           
        End With
        Range("A1").Activate '<-- quitter la sélection de la zone de texte
End Sub
Je vous joins le fichier et reste à votre disposition c'est besoin de précision ... ou de plus de clarté.
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour Jgral,

D'après ce que je comprends il faut vérifier que la CheckBox est cochée donc remplacez :
VB:
 .Characters.Text = .Characters.Text & Chr(10) & Me.Controls.Item("CheckBox" & i).Caption
par :
VB:
If Me("CheckBox" & i) Then .Characters.Text = .Characters.Text & Chr(10) & Me("CheckBox" & i).Caption
A+
 

Jgral

XLDnaute Nouveau
Merci ça fonctionne niquel j'ai un peu modifié le code pour faire exactement ce que je souhaitais :

VB:
Dim i As Integer
                For i = 1 To UserForm5.Controls.Count
                
                    If i < 2 Or (i > 4 And i < 18) Then
                        If Me("CheckBox" & i) Then
                            .Characters.Text = .Characters.Text & Chr(10) & Me("CheckBox" & i).Caption
                        End If
                    ElseIf CheckBox1 = True And i = 2 Then
                        .Characters.Text = .Characters.Text & Me.Controls.Item("TextBox" & i).Value
                    ElseIf CheckBox1 = True And i = 3 Then
                        .Characters.Text = .Characters.Text & " , Largeur : " & Me.Controls.Item("TextBox" & i).Value
                    ElseIf CheckBox1 = True And i = 4 Then
                        .Characters.Text = .Characters.Text & " , Profondeur : " & Me.Controls.Item("TextBox" & i).Value
                    ElseIf CheckBox17 = True And i = 18 Then
                        .Characters.Text = .Characters.Text & Chr(10) & Me.Controls.Item("TextBox" & i).Value
                    End If
                Next i
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas