XL 2016 groupe de trois boutons options

sebastaupole

XLDnaute Nouveau
bonjour je recherche un code pour un groupe de trois boutons d'options j'ai celui la avec la fonction IIF mais bien sur il ne sert que pour deux boutons pouvez vous m'aider svp
.Cells(RecordNumber, 11) = IIf(Me.OPTComAlu = True, "COM", "VAL", "Lit")
 

sebastaupole

XLDnaute Nouveau
Super mapomme merci beaucoup ça marche nickel j'ai encore appris quelque chose merci encore

j'aurais une autre question ma première demande était pour l'écriture de l'enregistrement mais ma deuxième interrogation est pour la lecture de l'enregistrement j'ai ce code pour deux boutons d'options mais moi il m'en faudrait trois alors j'ai écrit le code comme cela
If UCase(.Cells(RecordNumber, 11)) = "lit" Then Me.OPTComAlu.Value = True Else Me.OPTValAlu = True
mais bien sur cela ne marche pas pouvez vous m'aider une dernière fois merci par avance.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Voir le fichier joint qui marche dans les deux sens (modif options ou modif cellule A1)

Pour la lecture de la cellule vers les options:
VB:
   Select Case Cells(1, 1).Value
      Case "COM": OptionButton1 = True
      Case "VAL": OptionButton2 = True
      Case "Lit": OptionButton3 = True
   End Select
 

Pièces jointes

  • sebastaupole- choix options- v2.xlsm
    24.3 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonjour sebastopaule, mapomme,

Si l'on ne connaît pas les fonctions Switch et Match c'est le moment :
VB:
Sub lequel()
Cells(1) = Switch(OptionButton1, "COM", OptionButton2, "VAL", OptionButton3, "Lit")
End Sub

Private Sub UserForm_Initialize()
On Error Resume Next
Me("OptionButton" & Application.Match(Cells(1), Array("COM", "VAL", "Lit"), 0)) = True
End Sub
A+
 

Pièces jointes

  • sebastaupole- choix options(1).xlsm
    21.2 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @job75 ;),

Switch : je l'ai déjà croisée mais ce n'est pas ma copine. Je n'arrive pas à me la mettre dans un coin de la tête. J'en ai au moins deux autres comme ça.
Je devrais peut-être commencer une analyse :p;

Quand au MATCH, je l'ai laissé tombé car rien ne dit que les options sont nommées et numérotées de manière consécutives. Mais je reconnais que c'est la bonne méthode à prendre quand on a affaire à des groupes d'options.

Bonne soirée...
 

sebastaupole

XLDnaute Nouveau
Bonjour sebastopaule, mapomme,

Si l'on ne connaît pas les fonctions Switch et Match c'est le moment :
VB:
Sub lequel()
Cells(1) = Switch(OptionButton1, "COM", OptionButton2, "VAL", OptionButton3, "Lit")
End Sub

Private Sub UserForm_Initialize()
On Error Resume Next
Me("OptionButton" & Application.Match(Cells(1), Array("COM", "VAL", "Lit"), 0)) = True
End Sub
A+

bonjour job75 en faite je vous donne mon code complet il est intégré dans un formulaire qui me sert a écrire, consulter et modifier le contenu de mon tableau quand je veux modifier mes données tous ce remet en place dans mon formulaire ainsi que les boutons d' options "normalement" le problème est que le code est fait pour des groupes de deux boutons actions et que moi j'ai besoin de groupe de trois boutons il me manque plus que cela et j'aurais terminé mon frm et je n'y arrive pas et j'ai besoin de votre aide. Merci d'avance

Private Sub ReadRecord(ByVal RecordNumber As Long)
' Lecture de l'enregistrement
RecordNumber = RecordNumber + 1
With rng
Me.txtAffaire = .Cells(RecordNumber, 2)
Me.txtClient = .Cells(RecordNumber, 3)
Me.txtLivraison = .Cells(RecordNumber, 4)
Me.TxtCouleur = .Cells(RecordNumber, 5)
Me.TxtTemps = .Cells(RecordNumber, 6)
Me.cboPays = .Cells(RecordNumber, 7)
Me.cboGamme = .Cells(RecordNumber, 8)
'partie du code qui me fait tirer les cheveux il doit finir pour la 1er ligne en ex avec OptlitAlu
If UCase(.Cells(RecordNumber, 11)) = "Com" Then Me.OptComAlu.Value = True Else Me.OptValAlu = True
If UCase(.Cells(RecordNumber, 12)) = "Com" Then Me.OptComAluDivers.Value = True Else Me.OptValAluDivers = True
If UCase(.Cells(RecordNumber, 13)) = "Com" Then Me.OptComAcces.Value = True Else Me.OptValAcces = True
If UCase(.Cells(RecordNumber, 14)) = "Com" Then Me.OptComAcier.Value = True Else Me.OptValAcier = True
If UCase(.Cells(RecordNumber, 15)) = "Com" Then Me.OptComPlastique.Value = True Else Me.OptValPlastique = True
If UCase(.Cells(RecordNumber, 16)) = "Com" Then Me.OptComBois.Value = True Else Me.OptValBois = True
If UCase(.Cells(RecordNumber, 17)) = "Com" Then Me.OptComVitrage.Value = True Else Me.OptValVitrage = True
If UCase(.Cells(RecordNumber, 18)) = "Com" Then Me.OptComTransport.Value = True Else Me.OptValTransport = True
If UCase(.Cells(RecordNumber, 19)) = "Com" Then Me.OptComElectronique.Value = True Else Me.OptValElectronique = True
Me.frmMember.Caption = "Fiche " & Format(RecordNumber, "R000")
End With
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

Ucase converti en majuscules.
VB:
If UCase(.Cells(RecordNumber, 11)) = "Com"
n'a aucune chance d'être VRAI
faire ="COM"

En pas à pas en espionnant les variables et les expressions tu aurais trouvé.
Il faut apprendre les rudiments du débogages bien utiles ;-)
eric
 

sebastaupole

XLDnaute Nouveau
Bonjour à tous,

Ucase converti en majuscules.
VB:
If UCase(.Cells(RecordNumber, 11)) = "Com"
n'a aucune chance d'être VRAI
faire ="COM"

En pas à pas en espionnant les variables et les expressions tu aurais trouvé.
Il faut apprendre les rudiments du débogages bien utiles ;-)
eric

Bonjour eriiiic merci pour ton aide je ne l'avais pas vu car ca na pas fait de bug par contre je cherche la façon de passer mon code pour un groupe de deux boutons actions a un groupe de trois, si tu a une idée je suis preneur, en tout cas Merci.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Juste histoire d'ajouter de la variante aux variantes ;)
(aprés IIF, Choose et Switch il restait de la place pour Mid)
VB:
Private Sub CommandButton1_Click()
Cells(1) = Mid("COMVALLit", -((1 * OptionButton1) + (4 * OptionButton2) + (7 * OptionButton3)), 3)
End Sub

Private Sub UserForm_Initialize()
On Error Resume Next
Me("OptionButton" & Application.Match(Cells(1), Array("COM", "VAL", "Lit"), 0)) = True
End Sub
 

eriiic

XLDnaute Barbatruc
'partie du code qui me fait tirer les cheveux il doit finir pour la 1er ligne en ex avec OptlitAlu
Tu as déjà eu 4 ou 5 propositions...
Si tu n'expliques pas en détail le fonctionnement voulu tu risques d'attendre...
En principe pour un groupe d'option button, que tu en aies 2 ou 3 ou 72 c'est pareil. Tu en mets un True, les autres passent False.
Encore faut-il que les groupes soient constitués. Soit les boutons dans un même frame, soit ils ont le même GroupName.
eric
 

Discussions similaires