Resultat(caption) de 2 OptionButton dans la même cellule

je n'arrive pas à mettre le résultat (caption) de 2 OptionButton (coché) dans la même cellule

Private Sub Valider_Click()
Dim Ctrl As Control

For Each Ctrl In Frame1.Controls
If Ctrl.Object.Value = True Then
Range("A1").Select
ActiveCell.Offset(0, 11).Value = Ctrl.Object.Caption
Range("A1").Select
Exit For
End If
Next Ctrl

End Sub

Merci D'avance

7optionbutton.xlsm (20.02 Ko)

Bonjour,

Private Sub Valider_Click()

Dim Ctrl As Control
Dim Contenu As String

        Contenu = ""
        For Each Ctrl In Me.Controls
            If Mid(Ctrl.Name, 1, 6) = "Option" Then
              If Ctrl.Object.Value = True Then Contenu = Contenu & Ctrl.Caption & " "
            End If
        Next Ctrl
        If Contenu <> "" Then
           Range("L11") = Mid(Contenu, 1, Len(Contenu) - 1)
        End If

End Sub

Trop Fort

le temps de l'adapter à ma config

rien à dire ça marche nickel

la seule chose que j'ai à dire c'est BRAVO cela faisait une semaine que j' était dessus

par contre je pige Pas "Mid" et les chiffres à quoi cela correspond ?

If Mid(Ctrl.Name, 1, 6)

Merci Beaucoup

Il permet de supprimer le dernier caractère blanc de la chaine dans la variable Contenu. J'aurais pu également et plus simplement utiliser :

Range("L11") = Trim(Contenu)

Merci pour la réponse

Mais j'ai encore deux demandes

la première demande :

je rebloque pour inverser Mid(Contenu, 1, Len(Contenu) - 1)

Range("L11") = Mid(Contenu, 1, Len(Contenu) - 1)

ce que j’obtiens avec la macro c'est <1Type> " 1 (qui est le Mid ) Type (qui est Len)" j'aurais voulu l'inverse comme cela < Type 1>

et la 2° demande toujours avec cette Macro magique

c'est d’insérer le caption dans un commentaire qui est déjà rempli (j'y arrive mais cela m'efface tout le commentaire et me rajoute "le caption"

est ce qu'il est possible d’insérer le caption juste à la deuxième ligne du commentaire et à partir de la 9° lettre sans effacer le commentaire

si impossible alors d’insérer à la deuxième ligne (il y a 10 lignes en tout) en sachant qu'elle sera vierge pour attente de la macro qui la remplira avec le "caption"

Merci d'avance

Je ne comprends pas ce que vous voulez faire (inverser le contenu des combobox ?, les captions des OptionButtons ?), je ne vois pas d'où vient "1 Type". Mettez un fichier en indiquant visuellement ce que vous voulez faire.

je m'excuse pour les explications il y a des jours ou je n'arrive pas à m'exprimer correctement

voici le fichier

3optionbutton2.xlsm (30.33 Ko)

Lorsque vous avez Fast : et Bass : présents, peut-il y avoir quelque chose d'écrit derrière ?

capture

oui car ceux la je l''ai rempli manuellement ce n'est que des chiffres

et souvent mais commentaire ont 10 lignes

ceux que je veux remplir par macro ce sont des options qui comporte jusqu’à 20 choix c'est pour cela que j'utilise des userform

pour vous faire une idée

gt100 2

Salut,

Je ne sais pas si j'ai tout compris mais bon je tente

c'est d’insérer le caption dans un commentaire qui est déjà rempli (j'y arrive mais cela m'efface tout le commentaire et me rajoute "le caption"

petite fonction...

Function SetComment(ByRef TheRange As Range)
    Dim Ctrl As Control
    Dim strTemp As String
    strTemp = "Fast :" & Chr(10) & "Type : " & Chr(10) & "Bass :" & Chr(10) & "" & Chr(10) & ""
    With Me
        For Each Ctrl In .Controls
            If TypeName(Ctrl) = "OptionButton" And Ctrl.Value = True Then
                strTemp = Replace(strTemp, .TextBox16 & " : ", .TextBox16 & " : " & Ctrl.Caption)
            End If
        Next
TheRange.Comment.Text Text:=strTemp
    End With
End Function

et pour l'appel tu fais

Private Sub Valider_Click()
   SetComment Range("L8")
   Unload Me
End Sub

Pour rendre universelle la Fonction SetComment, je conseille de renommer les TextBox de tes UserForm en TextBox1 et de changer ce nom dans la fonction. Tu pourrais aussi remplacer le textBox par un ComboBox et attribuer un Array pour sa propriété list.

La fonction RemetComment peut aussi être généralisée avec une variable optionnelle.

' // RemetComment By Jean-Paul (Valtrase) le : 08/04/2022
' // Réinitialise un commentaire de cellule, si TheRange n'est pas défini c'est L8 qui est pris par défaut
Sub RemetComment(Optional ByRef TheRange As Range)
    Application.ScreenUpdating = False
    If TheRange Is Nothing Then Set TheRange = Range("A1").Offset(0, 11)

    With TheRange
        .Comment.Text Text:="Fast :" & Chr(10) & "Type : " & Chr(10) & "Bass : "
        .Comment.Shape.Height = 50
    End With
    Application.ScreenUpdating = True
End Sub

Voilà, en attente d'un retour.

Pour Eric

la 1° Demande est OK

pour la 2°demande cela marche ,mais ce que j'ai oublié de dire c'est que le mot "Type " est un mot parmi 36 autres

et pareil pour Fast et Bass ,j'ai essayer en changeant dans le "comment" les mots fast et Bass par d'autres et soulagement les nouveaux sont restés il n'y a que "Type" qui revient avec le caption ,je peux faire 36 macros , mais une idée me viens ,est il possible tout simplement de s'appuyer sur le mot que j'aurais mis dans le "TextBox16"qui remplacerais le mot "Type" comme cela je n'aurais qu'une macro

pour jean Paul

cela marche également mais avec le même problème qu'Eric

et merci pour "remetComment"

Il faut définir le type à l'ouverture :

Sub Open_UserForm2()
    Application.ScreenUpdating = False
    With UserForm2
         .TextBox16 = "Truc" ' A adapter
         .Show vbModeless
    End With
    Application.ScreenUpdating = True
End Sub
Sub ModificationCommentaire(ByVal Cellule As Range, ByVal TypeChoisi As String, ByVal Contenu2 As String)

Dim TabCommentaire As Variant

    With Cellule.Offset(0, 11)
        If Not .Comment Is Nothing Then
           Select Case InStr(1, .Comment.Text, Chr(10), vbTextCompare)
                  Case 0
                       .Comment.Text Text:="Fast : " & Chr(10) & "Type : " & Contenu2 & Chr(10) & "Bass : "
                  Case Else
                       TabCommentaire = Split(.Comment.Text, Chr(10))
                       .Comment.Delete
                       .AddComment.Text Text:=TabCommentaire(0) & Chr(10) & TypeChoisi & " : " & Contenu2 & Chr(10) & TabCommentaire(2)
                       .Comment.Shape.Height = 50
           End Select
        Else
           .AddComment.Text Text:="Fast : " & Chr(10) & "Type : " & Contenu2 & Chr(10) & "Bass : "
        End If
    End With

End Sub

Dans le Userform :

Private Sub Valider_Click()

Dim Ctrl As Control
Dim Contenu As String

    Contenu = ""
    For Each Ctrl In Me.Controls
        If Mid(Ctrl.Name, 1, 6) = "Option" Then
           If Ctrl.Object.Value = True Then Contenu = Contenu & Ctrl.Caption
        End If
    Next Ctrl
    If Contenu <> "" Then ModificationCommentaire Range("A1"), Me.TextBox16, Contenu
    Range("A1").Select
    Unload Me

End Sub

Re,

Tu n'as pas bien lu mon post c'est ce que je te proposais de faire.

Si tu testes mon code en changeant la valeur du TextBox cela fonctionnera aussi si tant-est que le commentaire contient la valeur du textbox

Re Bonjour Eric

pour la 1° demande j'ai juste modifié = "Range : " & Contenu par = TextBox16 & Contenu et ça marche Nickel

j'ai donc essayé avec la 2° demande (userForm2) mais là Echec cela aurait été trop beau

j'ai essayé avec votre nouveau code et la miracle c'est exactement ce que je voulais

je pensais pas que c’était si compliqué

Pour jean Paul

Mille excuses j' était barré dans la lecture des codes et j'ai lu ses 3 lignes en vitesse et effectivement

tu proposais cette idée ,mais cela ne sera pas perdu parque cette idée de ComboBox est à retenir

Merci à vous deux pour votre patience et vos connaissances

sujet résolu

Bonjour Eric et Jean Paul

pour Jp j'ai essayé ta macro mais cela m'indique une erreur

donc j'ai continué avec Eric

la macro marche très bien

maintenant c'est pour 2 group d'option button ou je galere car comme le titre l'indique ce n'est plus dans une cellule que

je veux le résultats mais dans le "comment" pour 1 group c'est ok mais pour 2 groupe ça coince

voir le fichier joint pour plus d'info

merci d'avance

Bonjour

j'ai réussi à faire ce que je voulais (peut être pas trop académique mais cela fonctionne, mais si je sélectionne qu'une voice cela efface l'autre ,

il y aurai t'il une possibilité pour que cela l'efface pas ou alors dés l'ouverture de l'UserForm que mes optionButton soit cochés

par rapport au contenu1 et 2

ou une textBox qui m'indique le contenu1 et 2 du choix précédant

merci d'avance

Bonjour

j'ai encore un probleme

avec la même macro mais au lieu que cela soit des optionButton j'essaie en vain avec des ComboBox

cela me met un espace vide au lieu de la valeur du Combobox pourtant en pas à pas la macro vois la valeur mais ne va pas dans le contenu

Private Sub Valider_Click()
Dim Ctrl As Control
Dim Contenu1 As String
Dim Contenu2 As String

        For Each Ctrl In Me.Controls
        If Mid(Ctrl.Name, 1, 6) = "Combo1" Then
           If Ctrl.Object.Value = True Then Contenu1 = Contenu & Ctrl.Value
           End If
           Next Ctrl
    For Each Ctrl In Me.Controls
        If Mid(Ctrl.Name, 1, 6) = "Combo2" Then
           If Ctrl.Object.Value = True Then Contenu2 = Contenu & Ctrl.Value
        End If
    Next Ctrl
        ModificationCommentaire ActiveCell, Contenu1, Contenu2
End Sub

à mon avis c'est dans cette ligne ou je n'arrive pas à integrer le ComboBox

If Ctrl.Object.Value = True Then Contenu1 = Contenu & Ctrl.Value

Merci d'avance

Salut,

Contenu n'existe pas dans ta procédure. Tu as Contenu1 et contenu2

Rechercher des sujets similaires à "resultat caption optionbutton meme"