Convertir Macro prevu pour checkBox en ComboBox dans un UserForm
bonjour
j'ai trouvé une macro pour checkBox qui permet de mémoriser l’état des CheckBox et de pouvoir la restituer
j’essaie en vain de faire la même chose avec ComboBox et CommandButton et échec total
voici la macro pour memoriser (qui se trouve dans le commandButton "Memorise")
Dim Ctrl As Control, Com$, cbval$ 'OK memorise CheckBox en ligne B
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Value = True Then Com = Com & ", " & Ctrl.Caption
End If
Next Ctrl
Com = Replace(Com, ", ", "", 1, 1)
Feuil2.Range("B" & lgn) = Com
'--------------------------------OK memorise ComboBox en ligne M
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.ComboBox Then
cbval = cbval & ", " & Ctrl.Value
End If
Next Ctrl
cbval = Replace(cbval, ", ", "", 1, 1)
Feuil2.Range("M" & lgn) = cbval
Unload Meet la macro pour restituer ( dans le UserForm_Initialyze )
Dim Com, i%, y%, Ctrl As Control, cbval 'marche bien pour CheckBox
lgn = ActiveCell.Row
Com = Split(", " & Feuil2.Range("B" & lgn), ", ")
For i = 1 To UBound(Com)
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Caption = Com(i) Then
Ctrl.Value = True: Exit For
End If
End If
Next Ctrl
Next i
'--------------'restitution pour ComboBox cette macro ne marche pas
lgn = ActiveCell.Row
cbval = Split(", " & Feuil2.Range("M" & lgn), ", ")
For i = 1 To UBound(cbval)
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.ComboBox Then
If Ctrl.Value = cbval(i) Then
Ctrl = cbval(i): Exit For
End If
End If
Next Ctrl
Next iFichier joint
Merci d'avance
Bonjour,
Private Sub CommandButtonMemo_Click() 'mikakawel OK memorise CheckBox
Dim Ctrl As Control, Com$
Dim cbval(3) As Variant
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Value = True Then Com = Com & ", " & Ctrl.Caption
End If
Next Ctrl
'Next i
Com = Replace(Com, ", ", "", 1, 1)
Feuil2.Range("B" & lgn) = Com
'--------------------------------OK memorise ComboBox
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.ComboBox Then
Select Case Ctrl.Name
Case "ComboBox1"
cbval(0) = Ctrl.Object.Text
Case "ComboBox2"
cbval(1) = Ctrl.Object.Text
Case "ComboBox3"
cbval(2) = Ctrl.Object.Text
Case "ComboBox4"
cbval(3) = Ctrl.Object.Text
End Select
End If
Next Ctrl
Feuil2.Range("M" & lgn) = Join(cbval, ",")
Unload Me
End SubEt
Private Sub UserForm_Initialize()
'-----------No Reset
CheckBoxReset1.Caption = False
CheckBoxReset2.Caption = False
' restitution pour CheckBox
Dim Com, i%, y%, Ctrl As Control, cbval
lgn = ActiveCell.Row
Com = Split(", " & Feuil2.Range("B" & lgn), ", ")
For i = 1 To UBound(Com)
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Caption = Com(i) Then
Ctrl.Value = True: Exit For
End If
End If
Next Ctrl
Next i
'--------------'restitution pour ComboBox
lgn = ActiveCell.Row
cbval = Split(Feuil2.Range("M" & lgn), ",")
ComboBox1.Value = cbval(0)
ComboBox2.Value = cbval(1)
ComboBox3.Value = cbval(2)
ComboBox4.Value = cbval(3)
End SubEDIT : Après 5 jours d'attente, on poste à 10 minutes d'intervale avec Eric
J'efface donc mon premier texte car il semble qu'Eric propose une solution alors que je posais des quesstions.
Cordialement.
Bonjour votre Macro Eric Kergresse marche trés bien
mais j'ai trouvé une solution très simpliste pour ComboBox et commandButton et Label
VB:
Dim lgn As Long (en déclaration )
''dans la macro du commandbutton pour memoriser
lgn = ActiveCell.Row 'Formule magique
Feuil2.Cell(lgn, 1) = ComboBox1.Value 'pour CommandButton.Caption et pour Label.Caption
Feuil2.Cell(lgn, 2) = ComboBox2.Value
'et pour relire dans intialize
ComboBox1.Value = Feuil2.Cell(lgn, 1)
ComboBox2.Value = Feuil2.Cell(lgn, 2)le seul problème c'est que chaque ComboBox commandbutton et Label me prend une colonne et une cellule dans la feuil2
(12 combobox et 6 commandbutton et 2 label +48 checkBox) cela fait 21 colonnes en tout
mais vu que j'ai une feuille qui ne sert qu'a cela ça ne me dérange pas
merci encore
Cordialement Rodger85