Lier checkbox et combobox

Bonjour à tous.

Je viens ce jour car j'ai un problème que je n'arrive pas à résoudre. J'ai un userform comprenant des ckeckbox et des combobox. Chaque checkbox à une combobox "en face" d'elle. Mon problème est le suivant, je n'arrive pas à faire en sorte, pour la sauvegarde dans la BD, que la valeur de la combobox soit en fonction de la checkbox cochée. J'espère avoir été clair, je vous joint un petit fichier au besoin.

17excelpratique.xlsm (55.32 Ko)

Merci d'avance pour votre aide

Bonjour,

Déjà vous devriez renommer vos checkbox pour avoir quelque chose de progressif. Là vous être à 552, ...ect

Ce qu'il faudrait savoir c'est de quelles checkbox vous parlez

Exemple : Si vous cochez 3 checkbox dans le Frame délai de traitement, le résultat des combo va où dans la BDD ?

Autre point : vous utilisez des Rowssource pour charger les combo.... on répète donc à nouveau (je suis fatigué .... ) qu'il faut éviter cette instruction et lui préférer la méthode Additem ou list

Bonjour,

Merci déjà de votre retour.

C'est un fichier simplifié, du coup les checkbox il y en a plein d'autres normalement. Du coup considérons qu'elles commencent en numéro 1, ou je refais mon fichier exemple ? Pareil pour les modules qui ne sont pas intégrés, les additem en partie ne sont pas intégrées non plus. Le résultat des combobox devraient se reporter en colonne H de la base de données.

Bien à vous

Le résultat des combobox devraient se reporter en colonne H de la base de données.

1. Donc 1 ligne pour chaque checkbox cochée ?
2. Cela concerne toutes les Combobox "Motif" ?

Aussi un truc, à l'ouverture de l'usf vous avez l'instruction toto Me. Je ne vois pas l'utilité

Il faut que je l'enlève, on avait différente taille d'écran dans l'entreprise, ça n'a plus d'utilité en effet maintenant. Merci de l'avoir relevé. Et oui, une ligne pour chaque checkbox cochée se créé et en effet cela concerne toutes les combobox "motif"

Je renomme les checkbox dans votre fichier ou vous refaites un nouveau à votre goût ?

Au fait dans vos codes je vois Perimètre, c'est quoi çà ?

Une combobox que j'ai enlevé pour le fichier exemple. ET oui si vous voulez les renommer, pas de soucis :D Merci de votre aide en tout cas

Je viens de tester votre fichier, je ne vois pas de soucis à ce que vous voulez faire

Cochez les deux premières checkbox Motif, puis valider, cela mets bien les données dans la feuille

Oui pour les checkbox, c'est la combobox qui est plus problématique. Si je coche la première checkbox, je souhaiterai que la combobox "en face" soit reportée également dans la BD. Et c'est la où je bloque, arriver à définir la combobox "en face" correspondante pour l'intégration dans la BD

En voyant votre feuille il y a une colonne perimètre, puis que vous avez supprimé votre combobox périmètre cela sert à quoi.

Comment voulez vous avoir une solution si votre fichier n'est pas correct.

Autre chose : si on coche toutes les cases à cocher dans l'usf par exemple, vous devez avoir combien de lignes dans votre feuille

Alors, pour le périmètre, j'ai remplacé le remplissage de cette colonne par le mot "périmètre" dans le code. Le périmètre a des noms bien particuliers, des noms d'assurances habitation, voilà pourquoi il n'apparaît pas là, pour ne pas avoir d'infos confidentielles dans le fichier.

Dans le cas précis, autant de lignes que de cases à cocher, soit 14 lignes.

Bonjour,

Le code est presque prêt (enfin je pense ) J'ai encore deux questions toutefois :

- dans le code Valider vous avez une série de ligne pour le case où If chk = False. A priori, je ne vois pas l'intérêt. Est-ce vous qui avez placé cela lors de votre recherche de solution ?
- dans le frame Traçabilité, vous avez aussi un combo CommentaireKO. Est-ce que cela doit suivre la même règle (donc checkbox cochée) que pour les checkbox dans le frame "traitement du dossier" ?

Crdlt

Bonjour,

Désolé de la réponse tardive. Donc pour ce qui est du code sous le bouton valider, en effet il y a eu plusieurs test. C'est aussi une alternative que j'ai entré afin d'indiquer si un dossier est conforme et donc sans case de cocher.

Pour le commentaire non pas de même règle lié à une checkbox, il sera obligatoire à chaque dossier controlé.

Merci encore pour votre aide

Bonjour,

Merci du retour. Voici les codes à placer dans l'USF picking

1. Validation : Remplacer le code existant par celui ci -dessous

Private Sub valider_picking_Click()
Dim vartab(0, 20) As Variant
Dim cvide As Integer
Dim ctrl As Control
Dim NBRDOSS As Boolean
Dim cle As String, valeurKO As String, chkNom As String

Dim datet As Date
datet = Format(Now, "dd/mm/yyyy")
Dim hpick As Date
hpick = Format(Now, "hh:nn:ss")

If Me.MultiPage1.Pages(0).Enabled = True Then

    If Me.Ass_produit = "" Or Me.Ass_com = "" Or Me.ass_preco = "" Then
        MsgBox "Merci de compléter la conclusion, le type de produit, la conclusion ainsi que les préconisations"
        Exit Sub
    End If

    Application.ScreenUpdating = False
    cvide = ThisWorkbook.Sheets("bdd_picking").Cells(Rows.Count, 1).End(xlUp).Row + 1

    For Each ctrl In Picking.MultiPage1.Pages(0).Controls

        If TypeOf ctrl Is MSForms.CheckBox Then

            If ctrl = True Then
                cle = cvide - 1

                vartab(0, 0) = cle
                vartab(0, 1) = Me.nom_manager.Text
                vartab(0, 2) = Me.nom_collaborateur.Text
                vartab(0, 3) = Me.num_sinistre.Value
                vartab(0, 4) = "perimetre"
                vartab(0, 5) = ctrl.Tag
                vartab(0, 6) = ctrl.Caption

                chkNom = ctrl.Name
                Traitement chkNom, valeurKO
                vartab(0, 7) = valeurKO

                vartab(0, 8) = Me.Conclusions.Text
                vartab(0, 9) = Me.Ass_com.Text ' a adapter
                vartab(0, 10) = Me.ass_preco.Text ' a adapter
                vartab(0, 11) = datet
                vartab(0, 12) = Environ("Username")
                vartab(0, 13) = "grand compte"
                vartab(0, 14) = "1"
                vartab(0, 15) = "type sinistre"
                vartab(0, 16) = Me.num_sinistre & "-" & hpick
                If vartab(0, 16) = Sheets("bdd_picking").Cells(cvide - 1, 17).Value Then
                    NBRDOSS = 0
                Else: NBRDOSS = 1
                End If

                vartab(0, 17) = NBRDOSS
                vartab(0, 18) = Me.Ass_produit.Text

                ThisWorkbook.Sheets("bdd_picking").Cells(cvide, 1).Resize(1, 19) = vartab

                cvide = cvide + 1
            End If

        End If
    Next ctrl

End If
Unload Me
Application.ScreenUpdating = True
End Sub

2. Ajouter le code Traitement (en dessous du code valider ou ailleurs mais dans l'USF)

Private Sub Traitement(chkNom As String, valeurKO As String)
    Select Case Mid(chkNom, 9)
        Case Is = 4: valeurKO = RechUKO.Value
        Case Is = 5: valeurKO = ContdevisKO
        Case Is = 6: valeurKO = ReceptKO
        Case Is = 7: valeurKO = TraitKO
        Case Is = 8: valeurKO = CTKO
        Case Is = 9: valeurKO = PVKO
        Case Is = 10: valeurKO = InfoKo
        Case Is = 11: valeurKO = PECKO
    End Select
End Sub

Si ok-->

Cordialement

Merci beaucoup Dan, le code fonctionne parfaitement. La solution de la fonction MID, combiné au select case, je n'y avais pas pensé du tout.

Un super boulot, merci vraiment pour la solution.

Bien cordialement

Ok parfait

J'ai rajouté une ligne dans le code Valider --> Dim NBRDOSS As Boolean
Rajoutez là si vous ne l'avez pas.
Vous devriez d'ailleurs ajouter l'instruction Option Explicit juste avant tous vos codes dans l'usf. Cela vous renverra une info que la variable n'est pas définie.
J'ai vu que la variable WS n'est pas définie dans deux procédure

Crdlt

Merci pour le conseil, l'ajout de variable et l'ajout de la ligne, je vais m'en occuper de suite :D

Rechercher des sujets similaires à "lier checkbox combobox"