Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
155
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…