Userform insérer des groupes de cases d'options

Bonjour,

Après moult recherche n'arrivant pas à trouver solution, je reviens par ici poser la question. J'ai donc travailler sur un formulaire permettant à la fois de la saisie afin de pouvoir renseigner une base de données mais aussi de pouvoir l'enrichir, la modifier etc... J'ai insérer par 3 listbox avec fonction "Array" pour créer des cases d'options. Avec le codage de mes connaissances je peux insérer une ligne et valider cette dernière, peut-être si vous êtes expert pas des plus optimum, mais ça marcheµ.

PAr contre je suis coincée car si dans ma base de données (feuille excel), ça renseigne correctement toutes les colonnes au bon endroit, lorsque je lance l'userform en mode consultation, je n'ai pas les boutons d'options coché selon le bon choix et une partie de mes informations se trouvent décalées dans les textbox.

Je ne sais pas comment faire, et malgré plusieurs tentatives, je n'arrive pas à me dépêtrer de mon souci.

Voici le code utilisé!

Option Compare Text
Dim F, ligne
Private Sub UserForm_Initialize()
  Dim a()
  Set F = Sheets("Op")
  a = Application.Transpose(F.Range("A2:A" & F.[A65000].End(xlUp).Row).Value)
  Me.ComboBox1.List = SansDoublonsTrié(a()) ' ou SansDoublonsTriéMAC()

  Me.SUBVENTION.List = Array("OUI", "NON")
  Me.AVISDR.List = Array("ACCORD", "REFUS")
  Me.AVISELU.List = Array("OUI", "NON", "OUI avec")

End Sub
Private Sub ComboBox1_Click()
  Dim K As Integer

  nettoie
  Me.ComboBox2.Clear
  a = F.Range("A2:C" & F.[B65000].End(xlUp).Row).Value
  Dim c(): ReDim c(1 To UBound(a))
  J = 0
  For I = 1 To UBound(a)
     If a(I, 1) = Me.ComboBox1 Then J = J + 1: c(J) = a(I, 3)
  Next I
  ReDim Preserve c(1 To J)
  'Call Tri(b, LBound(g), UBound(g))
  Me.ComboBox2.List = c
End Sub
Private Sub ComboBox2_click()

  nettoie
  For I = 2 To F.[g65000].End(xlUp).Row
     If F.Cells(I, "c") = Me.ComboBox2 And F.Cells(I, "a") = Me.ComboBox1 Then
       ligne = I

    For K = 1 To 32
        Me.Controls("TextBox" & K) = F.Cells(I, K + 0)
      Next K
    End If
  Next I
  Me.TextBox1.SetFocus
End Sub
Private Sub VALIDER_Click()

  If MsgBox("Validez saisie nouvelle ou modification apportée ?", vbYesNo, "Demande de confirmation") = vbYes And ligne > 1 Then

  '--- Transfert Formulaire dans Op
   F.Cells(ligne, 1) = Me.TextBox1
   F.Cells(ligne, 2) = Me.TextBox2
   F.Cells(ligne, 3) = Me.TextBox3
   F.Cells(ligne, 4) = Me.TextBox4
   F.Cells(ligne, 5) = Me.TextBox5
   F.Cells(ligne, 6) = Me.TextBox6
   F.Cells(ligne, 7) = Me.TextBox7
   F.Cells(ligne, 8) = Me.TextBox8
   F.Cells(ligne, 9) = Me.TextBox9
   F.Cells(ligne, 10) = Me.TextBox10
   F.Cells(ligne, 11) = Me.TextBox11
   F.Cells(ligne, 12) = Me.TextBox12
   F.Cells(ligne, 13) = Me.TextBox13
   F.Cells(ligne, 14) = Me.TextBox14
   F.Cells(ligne, 15) = Me.TextBox15
   F.Cells(ligne, 16) = Me.TextBox16
   F.Cells(ligne, 17) = Me.TextBox17
   F.Cells(ligne, 18) = Me.TextBox18
   F.Cells(ligne, 19) = Me.TextBox19
   F.Cells(ligne, 20) = Me.SUBVENTION
   F.Cells(ligne, 21) = Me.TextBox20
   F.Cells(ligne, 22) = Me.TextBox21
   F.Cells(ligne, 23) = Me.TextBox22
   F.Cells(ligne, 24) = Me.TextBox23
   F.Cells(ligne, 25) = Me.TextBox24
   F.Cells(ligne, 26) = Me.TextBox25
   F.Cells(ligne, 27) = Me.TextBox26
   F.Cells(ligne, 28) = Me.TextBox27
   F.Cells(ligne, 29) = Me.TextBox28
   F.Cells(ligne, 30) = Me.TextBox29
   F.Cells(ligne, 31) = Me.AVISDR
   F.Cells(ligne, 32) = Me.TextBox30
   F.Cells(ligne, 33) = Me.AVISELU
   F.Cells(ligne, 34) = Me.TextBox31
   F.Cells(ligne, 35) = Me.TextBox32
   'f.Cells(ligneEnreg, 4) = CDate(Me.Date_naissance)
   'f.Cells(ligneEnreg, 7) = CDbl(Me.Salaire)

  nettoie
  End If
End Sub
Private Sub AJOUT_Click()
 nettoie
 ligne = F.[A65000].End(xlUp).Row + 1
 Me.TextBox1.SetFocus
End Sub
Sub nettoie()

Me.TextBox1 = ""
Me.TextBox2 = ""
Me.TextBox3 = ""
Me.TextBox4 = ""
Me.TextBox5 = ""
Me.TextBox6 = ""
Me.TextBox7 = ""
Me.TextBox8 = ""
Me.TextBox9 = ""
Me.TextBox10 = ""
Me.TextBox11 = ""
Me.TextBox12 = ""
Me.TextBox13 = ""
Me.TextBox14 = ""
Me.TextBox15 = ""
Me.TextBox16 = ""
Me.TextBox17 = ""
Me.TextBox18 = ""
Me.TextBox19 = ""
Me.SUBVENTION = ""
Me.TextBox20 = ""
Me.TextBox21 = ""
Me.TextBox22 = ""
Me.TextBox23 = ""
Me.TextBox24 = ""
Me.TextBox25 = ""
Me.TextBox26 = ""
Me.TextBox27 = ""
Me.TextBox28 = ""
Me.TextBox29 = ""
Me.AVISDR = ""
Me.TextBox30 = ""
Me.AVISELU = ""
Me.TextBox31 = ""
Me.TextBox32 = ""

End Sub

Function SansDoublonsTrié(a())
   Set d = CreateObject("Scripting.Dictionary")
   For Each c In a
      d(c) = ""
   Next c
   c = d.keys

   SansDoublonsTrié = Application.Transpose(c)
End Function

Je ne sais pas non plus comment faire pour passer à la modification d'une ligne sans pour autant qu'elle soit rajoutée en plus. Car là c'est le cas je ne peux que valider une saisie nouvelle.

Si quelqu'un peut m'aider, merci d'avance.

bonjour,

joindre le fichier svp

A=

Je joint un fichier dont de ce fait j'ai modifié le code mais qui reste sur la même base pour des questions de confidentialités. Attention mon tableau se compose de plus de 35 colonnes.

D'avance merci.

10classeurtest.xlsm (19.57 Ko)
Rechercher des sujets similaires à "userform inserer groupes cases options"