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 !

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

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 : " &...
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