Créer une boucle de mise à jour des CheckBox et Combobox

Bonjour,

Je suis toute nouvelle à la programmation VBA et je suis actuellement en train de créer un formulaire à usage externe.

J'ai créer le code suivant pour que le formulaire actualise les informations lorsque l'utilisateur choisi un nom d'un site (une ligne) :

Private Sub ComboBox1_Change()

    Dim Ligne As Long
    Dim J As Integer
    Dim I As Integer

    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox1.ListIndex + 4

    'For I = 10 To 14
    'Me.Controls("TextBox" & I) = Worksheets("BDD").Cells(Ligne, I + 3)
    'Next I

 'Mise à jour des checkboxs et optionbuttons
 '#1
    If Worksheets("BDD").Cells(Ligne, "I") = "Oui" Then
        CheckBox1.Value = True
        OptionButton1.Value = True
    End If

    If Worksheets("BDD").Cells(Ligne, "I") = "Non" Then
        CheckBox1.Value = True
        OptionButton2.Value = True
    End If
 '#2
    If Worksheets("BDD").Cells(Ligne, "L") = "Oui" Then
        CheckBox2.Value = True
        OptionButton3.Value = True
    End If

    If Worksheets("BDD").Cells(Ligne, "L") = "Non" Then
        CheckBox2.Value = True
        OptionButton4.Value = True
    End If
 '#3
    If Worksheets("BDD").Cells(Ligne, "O") = "Oui" Then
        CheckBox3.Value = True
        OptionButton5.Value = True
    End If

    If Worksheets("BDD").Cells(Ligne, "O") = "Non" Then
        CheckBox3.Value = True
        OptionButton6.Value = True
    End If
  '#4
    If Worksheets("BDD").Cells(Ligne, "R") = "Oui" Then
        CheckBox4.Value = True
        OptionButton7.Value = True
    End If

    If Worksheets("BDD").Cells(Ligne, "R") = "Non" Then
        CheckBox4.Value = True
        OptionButton8.Value = True
    End If

End Sub

Le petit hic c'est que j'ai en tout 33 Checkbox et 66 OptionButton, ça me fait donc un pavé..

Je suis certaine que je peux créer une boucle à partir de ça cependant je ne sais absolument pas par où commencer..

Je suis preneuse si quelqu'un à une piste

(Ci-joint mon fichier, pour information c'est l'userform 2)

39test.xlsm (49.30 Ko)

Bonsoir,

Je me suis fait un peu violence pour répondre à ce sujet un peu bâclé à mon gout !

Bon y avait pas grand chose à "valoriser" hein ?

Les Combos et OptionBoutons qui se réfèrent à la même colonne je n'ai pas compris...

Bon de toute façon dans cette situation les OptionButton me semblent pas fréquentables...

Je préconise l'utilisation de Bouton-bascule ou de simples Label cliquables en remplacement.

Néanmoins j'ai essayé de te faire quelque chose de cohérent.

Il y avait un gros problème de numérotation des contrôles : A mon sens les contrôles sur une même ligne doivent porter le même numéro sinon c'est pas gérable....J'ai donc pratiquement tout du renommer...

Enfin... Tu regarderas ce que tu peux en faire ! Je n'ai pas finalisé le bouton d'enregistrement car ce problème de contrôles qui se réfèrent à la même colonne me bloque : Ou c'est la même colonne et il n'y a pas besoin de plusieurs contrôles ou s'il y a plusieurs contrôles il faudra expliquer à quoi se réfère chacun...

Bonne soirée...

61agroumathou-vg.xlsm (44.93 Ko)

Bonsoir,

Merci de vous être fait violence ahah, c'est vrai que j'ai créé ce formulaire avec mes connaissances très limités en VBA alors ça ne doit pas être beau à voir.

Juste pour préciser un petit peu, l'objectif de cet userform est de permettre à des communes d'identifier quels déchets elles ont sur leurs sites (si elles ont = coche checkbox) et s'ils sont valorisés à l'heure actuel ou non (intérêt de la combobox). C'est une grille de diagnostic à usage externe.

Je vous remercie pour ce code, je vais essayer de m'en inspirer (je vais déjà progresser en essayent de le comprendre haha)

Bonne soirée,

Bonjour,

j'ai réussi à faire pour 2 boutons option dans le bouton command1 de l'usf mais c'est galère de chez galère

'Réglage OptionButton
   ' Frame1.Controls
    For Each OptionButton In Frame1.Controls
          If OptionButton1.Value = True Then
             Worksheets("BDD").Cells(Ligne, "I") = "Oui"
          ElseIf OptionButton2.Value = False Then
              Worksheets("BDD").Cells(Ligne, "I") = "Non"
                Else
              Worksheets("BDD").Cells(Ligne, "I") = ""
              OptionButton1.Value = False
              OptionButton2.Value = False
         End If
    Next
        ' Frame2.Controls
' etc ' etc.' etc ' etc.' etc ' etc.' etc ' etc.' etc ' etc.' etc ' etc.
    

EDIT: bonjour Galopin

crdlt,

André

ztest1

[André] : Salut ! Oui, ça me parait un bricolage peu fonctionnel.

[agroumathou] :

Oui mais... Si le CheckBox est coché les OptionButton sont cochés aussi : On peut admettre qu'on peut les décocher si les déchets ne sont pas valorisés, (c'est ce que je fais avec mes Labels cliquables) mais comme c'est la même colonne que les CheckBox on ne peut pas enregistrer sinon ça revient à dire qu'on décoche aussi le CheckBox.

Bref, il y a beaucoup de chose à revoir (probablement 33 colonnes de plus : une pour chaque Label cliquable)

De plus il va falloir utiliser les modules de classe qui ne sont guère du niveau débutant... Sinon, pour la boucle de mise à jour, ça va être Walou !

On pourrait plus ou moins envisager une solution du type boucle au moment du UsfShow, mais après vous ne pourriez pas gérer tous les évènements liés à la modification de chaque contrôle et la ce passerait inévitablement par 132 évènements Click (ou Change) pour gérer les modifs de l'utilisateur.

Et je passe sous silence sans doute bon nombre d'inconvénients liés aus OptionButton et aux Frame...

Nota :

J'ai supprimé les 2 première lignes de la BDD (Quand des lignes sont inutiles YAPA de raison de les conserver...

Par contre YAPA d'index dans ta BD : ça c'est un mauvais point (YAPA de bonne BD sans un bon index en première colonne) mais je l'ai pas rajouté. J'ai bien senti que tu n'étais pas très sensible au charme de ce type de construction...

Je n'ai pas été très généreux en commentaires. Dans l'ensemble c'est du code de base. (Sauf pour le module de classe ou c'est plutôt un problème de compréhension du concept que de traduction)

Mais je ne suis pas avare d'explications..YAKA demander...

A+

Rechercher des sujets similaires à "creer boucle mise jour checkbox combobox"