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

Résultat de 5 optionbutton d'une même frame dans une seule celulle

piga25

XLDnaute Barbatruc
Bonjour,

Est il possible de mettre le résultat de 5 optionbutton d'une même frame dans une seule celulle?

J'ai un choix de 5 possibilités sur une frame d'un Userform, et j'aimerai que le résultat soit affiché dans une seule cellule qui est située sur le n° de ligne correspondant (vlign) en colonne 49.
Je sais que cela est possible pour deux optionbutton mais pour plus je ne sait pas faire.

Code:
Sub Transfert(vLign As Long)
Dim i As Byte
Dim a As Byte
With ActiveSheet
    .Unprotect
    .Cells(vLign, 1) = CLng(Label2)
    .Cells(vLign, 2) = UCase(TextBox1)
    .Cells(vLign, 3) = Application.Proper(TextBox2)
    .Cells(vLign, 4) = ComboBox1
    .Cells(vLign, 5) = Format(TextBox3, "0# ###")
    .Cells(vLign, 6) = UCase(TextBox4)
    .Cells(vLign, 7) = UCase(TextBox5)
    .Cells(vLign, 8) = Format(TextBox6, "0# ## ## ## ##")
    .Cells(vLign, 9) = Format(TextBox7, "0# ## ## ## ##")
    .Cells(vLign, 10) = Format(TextBox8, "0# ## ## ## ##")
    .Cells(vLign, 11) = Format(TextBox9, "0# ## ## ## ##")
    .Cells(vLign, 12) = TextBox10
    For i = 1 To 15
        If Controls("CheckBox" & i) Then .Cells(vLign, i + 12) = 1 Else: .Cells(vLign, i + 12) = ""
    Next
    .Cells(vLign, 28) = TextBox11
    For a = 16 To 30
        If Controls("CheckBox" & a) Then .Cells(vLign, a + 13) = 1 Else: .Cells(vLign, a + 13) = ""
    Next
    .Cells(vLign, 44) = Application.Proper(TextBox13)
    .Cells(vLign, 45) = ComboBox2
    .Cells(vLign, 46) = ComboBox3
    .Cells(vLign, 47) = ComboBox4
    .Cells(vLign, 48) = TextBox14
   [COLOR=red]With .Cells(vLign, 49)[/COLOR]
[COLOR=red]       Select Case OptionButton1[/COLOR]
[COLOR=red]       Case True[/COLOR]
[COLOR=red]       .Value = "1"[/COLOR]
[COLOR=red]       Case False[/COLOR]
[COLOR=red]       If OptionButton2 Then .Value = "2"[/COLOR]
[COLOR=red]       If OptionButton3 Then .Value = "3"[/COLOR]
[COLOR=red]       If OptionButton4 Then .Value = "4"[/COLOR]
[COLOR=red]       If OptionButton5 Then .Value = "5"[/COLOR]
[COLOR=red]       End Select[/COLOR]
[COLOR=red]   End With[/COLOR]
    
    Tri
    .Protect
End With
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonjour,

essaye peut être ainsi, si j'ai bien compris :

Code:
   With .Cells(1, 49)
        If OptionButton1 Then
             .Value = "1"
            ElseIf OptionButton2 Then .Value = "2"
            ElseIf OptionButton3 Then .Value = "3"
            ElseIf OptionButton4 Then .Value = "4"
            ElseIf OptionButton5 Then .Value = "5"
        End If
   End With

bon après midi
@+
 

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonjour le fil
Bonjour Pierrot93,

Merci pour la réponse, mais cela ne me conviens pas, le résultat comme tu l'indique va dans la ligne 1 colonne 49. Ce que je souhaite avoir c'est le résultat dans ma ligne choisie par "vLign".
De plus je constate que si on change d'optionbutton cela affiche toujours 1.

Ci joint le code comme tu le propose mais avec l'option "vLign" et la je n'ai plus rien qui s'affiche dans ma base.

Je pense qu'il doit manquer le signe " = " comme ceci : With .Cells(vLign, 49)= OptionButton1 Then .Value = "1" mais cela m'indique une erreur.



Code:
Sub Transfert(vLign As Long)
Dim i As Byte
Dim a As Byte
With ActiveSheet
    .Unprotect
    .Cells(vLign, 1) = CLng(Label2)
    .Cells(vLign, 2) = UCase(TextBox1)
    .Cells(vLign, 3) = Application.Proper(TextBox2)
    .Cells(vLign, 4) = ComboBox1
    .Cells(vLign, 5) = Format(TextBox3, "0# ###")
    .Cells(vLign, 6) = UCase(TextBox4)
    .Cells(vLign, 7) = UCase(TextBox5)
    .Cells(vLign, 8) = Format(TextBox6, "0# ## ## ## ##")
    .Cells(vLign, 9) = Format(TextBox7, "0# ## ## ## ##")
    .Cells(vLign, 10) = Format(TextBox8, "0# ## ## ## ##")
    .Cells(vLign, 11) = Format(TextBox9, "0# ## ## ## ##")
    .Cells(vLign, 12) = TextBox10
    For i = 1 To 15
        If Controls("CheckBox" & i) Then .Cells(vLign, i + 12) = 1 Else: .Cells(vLign, i + 12) = ""
    Next
    .Cells(vLign, 28) = TextBox11
    For a = 16 To 30
        If Controls("CheckBox" & a) Then .Cells(vLign, a + 13) = 1 Else: .Cells(vLign, a + 13) = ""
    Next
    .Cells(vLign, 44) = Application.Proper(TextBox13)
    .Cells(vLign, 45) = ComboBox2
    .Cells(vLign, 46) = ComboBox3
    .Cells(vLign, 47) = ComboBox4
    .Cells(vLign, 48) = TextBox14
   [COLOR=red]With .Cells(vLign, 49)= OptionButton1 Then .Value = "1""[/COLOR]
            ElseIf OptionButton2 Then .Value = "2"
            ElseIf OptionButton3 Then .Value = "3"
            ElseIf OptionButton4 Then .Value = "4"
            ElseIf OptionButton5 Then .Value = "5"
        End If
   End With
 
    Tri
    .Protect
End With
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re,

non, devrait fonctionner ainsi enfin fonctionne chez moi...

Code:
    With .Cells(vLign, 49)
        If OptionButton1 Then
             .Value = "1"
            ElseIf OptionButton2 Then .Value = "2"
            ElseIf OptionButton3 Then .Value = "3"
            ElseIf OptionButton4 Then .Value = "4"
            ElseIf OptionButton5 Then .Value = "5"
        End If
   End With

sinon mets un tout petit fichier exemple sur le forum...
 

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonjour le fil
Re Pierrot93

Ci joint le lien pour le fichier

Cijoint.fr - Service gratuit de dépôt de fichiers
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re

désolé peux pas y accéder, problème de proxy... il s'entend bien évidement que ce code doit être inséré dans un bloc "with" identifiant la feuille de destination....
 

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re,

Oui je suis bien dans un bloc with qui indique la feuille active. La commande est en début de procédure et avant le End With
Je ne pense pas que je dois remettre le nom de la feuille avec le nouveau bloc With

Edit : Je dois m'absenter donc à plus tard. Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re,

le code ci-dessous, placé dans le module de l'usf, fonctionne chez moi, 5 "OptionButton" sur une "frame" dans un USF, la cellule AW5 de la feuille active est bien valorisée, attention peut être si tu as des cellules fusionnées dans ton fichier :

Code:
Dim vLign As Long
vLign = 5
With ActiveSheet
   With .Cells(vLign, 49)
        If OptionButton1 Then
             .Value = "1"
            ElseIf OptionButton2 Then .Value = "2"
            ElseIf OptionButton3 Then .Value = "3"
            ElseIf OptionButton4 Then .Value = "4"
            ElseIf OptionButton5 Then .Value = "5"
        End If
   End With
End With

l
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re

je te joins le fichier utilisé à titre d'exemple...
 

Pièces jointes

  • classeur1.zip
    8.8 KB · Affichages: 44
  • classeur1.zip
    8.8 KB · Affichages: 45
  • classeur1.zip
    8.8 KB · Affichages: 38

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re,

Ok j'ai trouvé mon erreur, je n'avais pas bien numéroté mes OptionButton. Aucun problème avec ton code. Merci.

Néanmoins, maintenant lorsque j'effectue ma recherche avec l'Userform, cela m'indique toujours l'OptionButton n°12 de coché. J'aimerai avoir le bon OptionButton de coché.

Ci joint le code que j'ai:

Code:
Sub Inictl(ByVal nLign As Long, ByVal WS As Worksheet, ByVal Numero As Long)
Dim i As Byte
Dim a As Byte
With WS
    Label2 = CStr(Numero)
    TextBox1 = .Cells(nLign, 2)
    TextBox2 = .Cells(nLign, 3)
    ComboBox1 = .Cells(nLign, 4)
    TextBox3 = .Cells(nLign, 5)
    TextBox4 = .Cells(nLign, 6)
    TextBox5 = .Cells(nLign, 7)
    TextBox6 = .Cells(nLign, 8)
    TextBox7 = .Cells(nLign, 9)
    TextBox8 = .Cells(nLign, 10)
    TextBox9 = .Cells(nLign, 11)
    TextBox10 = .Cells(nLign, 12)
    For i = 1 To 15
        If .Cells(nLign, i + 12) = 1 Then Controls("CheckBox" & i) = True Else: Controls("CheckBox" & i) = False
    Next
    TextBox11 = .Cells(nLign, 28)
    For a = 16 To 30
        If .Cells(nLign, a + 13) = 1 Then Controls("CheckBox" & a) = True Else: Controls("CheckBox" & i) = False
    Next
    TextBox13 = .Cells(nLign, 44)
    ComboBox2 = .Cells(nLign, 45)
    ComboBox3 = .Cells(nLign, 46)
    ComboBox4 = .Cells(nLign, 47)
    TextBox14 = .Cells(nLign, 48)
    [COLOR=red]OptionButton8 = .Cells(nLign, 49)[/COLOR]
[COLOR=red]   OptionButton9 = .Cells(nLign, 49)[/COLOR]
[COLOR=red]   OptionButton10 = .Cells(nLign, 49)[/COLOR]
[COLOR=red]   OptionButton11 = .Cells(nLign, 49)[/COLOR]
[COLOR=red]   OptionButton12 = .Cells(nLign, 49)[/COLOR]
    
End With
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re

normal, les "OptionButton" s'excluent l'un l'autre en d'autres termes, tu ne peux en avoir qu'un seul de cocher dans un même conteneur (frame, usf, etc..), comme à priori c'est le 12 qui reçoit la dernière valeur, pour moi ceci expliquerait cela....

Code:
    OptionButton8 = .Cells(nLign, 49)
   OptionButton9 = .Cells(nLign, 49)
   OptionButton10 = .Cells(nLign, 49)
   OptionButton11 = .Cells(nLign, 49)
   OptionButton12 = .Cells(nLign, 49)

bonne soirée
@+
 

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Re,
Donc si je comprends bien, le résultat de 5 optionButtons peut aller dans une cellule unique mais la valeur d'une cellule ne peut valider un OptionButton parmis d'autre dans une même frame.
Dommage

Edit : Si cela fonctionne dans un sens cela doit bien être possible dans l'autre !!!!!
 
Dernière édition:

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonsoir le fil
Pierrot93 et Le Requin

Merci Pierrot pour ton code, il fonctionne parfaitement et est très facile à adapter.

Merci le Requin, comme toujours tu as de très bonne solution. Ton code fonctionne parfaitement et est très facile à adapter.

Encore merci à vous deux et à tous ces très bon bénévoles avec qui nous pouvons avancer dans la programation VBA.
 

Pierrot93

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonjour,

Aarf.. rien compris moi... cc, tu fais une boucle de 5 à 5, autant renseigner directement la valeur dans la cellule... enfin quelque chose doit m'échapper...

bonne journée
@+
 

piga25

XLDnaute Barbatruc
Re : Résultat de 5 optionbutton d'une même frame dans une seule celulle

Bonjour,

Tant qu'il y a des chiffres de 1 à 5 cela fonctionne mais lorsque c'est du texte ou d'autres chiffres là problème

Le code suivant met bien les bonnes valeur, mais a l'inverse lorsque l'on ouvre Userforme cela met erreur.

Code:
Private Sub CommandButton1_Click()
 
    vLign = 5
    With ActiveSheet
        With .Cells(vLign, 49)
            If OptionButton1 Then
                .Value = "NOIR"
            ElseIf OptionButton2 Then .Value = "VERT"
            ElseIf OptionButton3 Then .Value = "BLEU"
            ElseIf OptionButton4 Then .Value = "MAUVE"
            ElseIf OptionButton5 Then .Value = "ROUGE"
            End If
        End With
    End With
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…