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é.
 

Pièces jointes

  • Concepteur d'étude.xlsm
    818.8 KB · Affichages: 20
Solution
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 : " &...

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
 

Discussions similaires

Réponses
0
Affichages
129