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 Me

et 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 i

Fichier 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 Sub

Et

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 Sub

EDIT : 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 YVouille,

Désolé...

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

Rechercher des sujets similaires à "convertir macro prevu checkbox combobox userform"