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

  • Initiateur de la discussion Initiateur de la discussion Jgral
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jgral

Guest
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

Solution
J
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 : " &...
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour