Assigner et mémoriser caption de checkbox à une cellule

Bonjour à tous et bonne année à tout le monde !

Après recherche sur le forum je ne trouve pas encore une fois de solution à mon soucis:

J'ai crée sur mon fichier excel un userform avec plusieurs checkbox qui une fois cochées doivent renseigner la case W de ma ligne selectionnée ET garder toute cette selection en mémoire pour la ligne, et se mettre a jour a chaque fois que j'en décoche une ou en rajoute une.

Quelle est la formule pour assigner le champ "caption" de mes checkbox à cette cellule? Et qu'il le garde en mémoire?

Private Sub CommandButton1_Click()
    Dim Ctrl As Control
For Each Ctrl In P1009.Controls
    If TypeOf Ctrl Is MSForms.CheckBox Then
        If Ctrl.Object.Value = True Then
        Range("W" & ActiveCell.Row).Value = Ctrl.Object.Caption

        End If
    End If
Next Ctrl

Unload Me
End Sub

Les données s'affichent bien dans ma case W mais pas de mémoire, à chaque fois il faut tout reselectionner

Chaque ligne aura un userform spécifique en fonction des champs remplis précédement (8) ce qui risque d'ammener d'autres questions...

Merci beaucoup d'avance à ceux qui pourront m'aider.

Bonjour Mikakawel

Tu peux peut-être mettre le contenu de ta case W en mémoire en déclarant une variable "Public" dans laquelle tu mets ton contenu ??

Mais je ne suis pas sûre d'avoir bien compris ton problème

A+

En fait j'ai même un second soucis, seul un case coché s'affiche dans ma cellule W...alors que j'en ai coché plusieurs.

En gros je souhaite remplir chaque case W de plusieurs lignes en y copiant le "caption" de toutes les checkbox que je sélectionne en lanceant mon user form et que ce choix reste en mémoire, car je serais amené a faire évoluer la liste en en ajoutant ou en enlevant au fil du temps. Mais chaque ligne aura un "panel" de choix différent.

Edit : en y relfechissant je pense imaginer une solution : il faut que mon userform s'alimente de ce qui a été saisi précédement dans la cellule, donc en gros a chaque ouverture il lit les données se trouvant deja dans la cellule et si elles correspondent a des "checkbox" qu'il à il les passe en true. C'est la cellule elle même qui fera office de mémoire, mon raisonnement est il juste? Néanmoins je ne sais toujours pas comment lui donner vie en VBA.

Re

Peux-tu joindre ton fichier ou un extrait pour nous aider à t'aider ????

A+

Bonjour et vraiment merci de ton aide.

J'ai créer une fichier qui reprend le principe mais en mode très alléger car je suis déjà sur une usine a Gaz.

Pour faire simple j'ai créer ce que je savais faire:

En fonction du type de produit le userform (propre a chaque produit) voulu s'affiche, le seul problème à régler est qu'il faudrait que dans la case commentaire je puisse afficher plusieurs caption des checkbox cochées (en ce moment seule la dernière de la liste s'affiche), que lorsque j'ouvre a nouveau le userform pour chaque ligne le userform affiche ce qui était coché précédemment (pour la ligne en question) et qu'un puisse en recocher d'autre ou décocher et que chaque case commentaire se mette à jour en le fermant.

Il s'agit d'un tableau de suivi de production de ligne aéronautique, il faut savoir a différents moments de la journée ou en sont les produits, le tableau est mis a jour par les opérateurs. J'espère que je n'ai pas été trop confus dans mes explications.

27exemplechbx.xlsm (27.36 Ko)

Bonjour,

Dim lgn As Long

Private Sub CommandButton1_Click()
    Dim Ctrl As Control, Com$
    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)
    ActiveSheet.Range("F" & lgn) = Com
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim Com, i%, Ctrl As Control
    lgn = ActiveCell.Row
    Com = Split(", " & ActiveSheet.Range("F" & 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
End Sub

Les commentaires sont séparés par ", " (virgule suivie de espace).

J'ai amélioré au passage ta procédure de lancement des Userforms (à voir).

Cordialement.

Et bien un énorme merci encore une fois, car tu n'en es pas à la première fois ou tu m'aide. C'est parfait merci infiniment.

Je ne connaissais pas la deuxième partie du code qui permet d'initialiser le userform, c'est pour ça que je tournais en rond...un grand grand merci ! Je vais adapter tout ça et essayer ces nouvelles commandes apprises grâce à toi.

Bonjour à tous, je n'ouvre pas de sujet supplémentaire, je suis en train d'ajouter une option a ce code déja bien chargé (je suis toujours sur le meme projet depuis le début...) quelle serait le code à écrire pour qu'une action se déroule si aucune checkbox n'est cochée??

Private Sub CommandButton1_Click()
    Dim Ctrl As Control, Com$
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.CheckBox Then
            If Ctrl.Value = True Then Com = Com & ", " & Ctrl.Caption
        End If
        If Ctrl.Value = False Then ' action a mettre en place
    Next Ctrl
    Com = Replace(Com, ", ", "", 1, 1)
    ActiveSheet.Range("W" & lgn) = Com

Ca ne fonctionne pas, incompatibilité de type...

Bonjour,

Ta ligne ajoutée est en dehors du test qui détermine si le contrôle est une CheckBox, donc dès que tu tombes sur un autre type de contrôle tu risques effectivement d'avoir une incompatibilité...

Mais par ailleurs tu disais plus haut vouloir mettre en place une action si aucune CheckBox n'est cochée.

Or, tu ne peux le savoir en testant chaque CheckBox... mais tu le sauras en testant si Com = "", car dans ce cas c'est qu'aucune CheckBox n'a été cochée.

Cordialement.

Rechercher des sujets similaires à "assigner memoriser caption checkbox"