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")
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @sebastaupole :),

Ou encore si vous préférez les IF tout simple:
VB:
If OptionButton1 Then Cells(1, 1) = "COM" Else If OptionButton2 Then Cells(1, 1) = "VAL" Else If OptionButton3 Then Cells(1, 1) = "Lit"
 
Dernière édition:

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
 

Fichiers joints

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+
 

Fichiers joints

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
 

eriiiic

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
 

eriiiic

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
 

sebastaupole

XLDnaute Nouveau
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
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
j'ai trouvé comme un grand et ce n’était pas si compliqué j'ai remplacé Else par Or évidement ce qui donne

If UCase(.Cells(RecordNumber, 11)) = "COM" Then Me.OPTComAlu = True Or Me.OPTValAlu = True Or Me.OPTLitAlu = True

maintenant quand je revient sur mon formulaire et recherche avec le combobox un nom de chantier que je souhaite modifier les infos du chantier ainsi que les cases options reprennent les valeurs enregistrer " je sais pas si c'est clair mais ça marche"
Merci a tous pour votre aide j'ai appris des choses utiles
 

eriiiic

XLDnaute Barbatruc
Bonjour,

heuuu
VB:
Then Me.OPTComAlu = True Or Me.OPTValAlu = True Or Me.OPTLitAlu = True
parait plus que très bizarre...
eric
 

sebastaupole

XLDnaute Nouveau
Bonjour,

heuuu
VB:
Then Me.OPTComAlu = True Or Me.OPTValAlu = True Or Me.OPTLitAlu = True
parait plus que très bizarre...
eric
Bonjour tu a raison je me suis emballé quand je ferme et ré ouvre mon formulaire les cases options ne se remette pas en position comme elle devrais
 

eriiiic

XLDnaute Barbatruc
C'est quand tu veux pour décrire comment sont constitués les groupes d'options et ce que tu veux obtenir groupe par groupe.
 

sebastaupole

XLDnaute Nouveau
C'est quand tu veux pour décrire comment sont constitués les groupes d'options et ce que tu veux obtenir groupe par groupe.
Bonjour j'ai 9 groupes de 3 boutons option qui sont dans un formulaire pour exemple le premier groupe se nomme "Alubrut" qui contient 1er bouton "OPTComAlu" 2eme boutons "OPTValAlu" 3eme boutons "OPTLitAlu" suivant le bouton que je sélectionne ils affichent dans une cellule de feuille "plan" soit les mots com ou val ou alors lit pour faire cela pas de soucis mais je souhaite que dans mon formulaire en sélectionnant le nom d'un chantier dans un combobox puis en appuyant sur un bouton MODIFIER les boutons option ai la même valeur que le tableau "si j'avais mis com alors je retrouve le bouton option "OPTComAlu validé, avec un groupe de 2 boutons je n'ai pas de problème mais avec plus de deux je bloque . je joint mon fichier en pièce jointe mon problème doit ce situé sur la ligne de code lecture de l'enregistrement enfin je pense !!
 

Fichiers joints

Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas