XL 2010 Joindre Caption Case à cocher

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cathodique

XLDnaute Barbatruc
Bonjour,

Mes remerciements anticipés pour votre aide.

Là, je m'embrouille avec moi-même. Je sais que c'est simple mais ça bloque dans ma petite cervelle.

Je voudrais avoir une fonction qui joint les captions de cases à cocher si leur value est vrai, avec comme séparateur "/".
VB:
Dim ctrl As Object
For Each ctrl In FrmCat.Controls
      If TypeOf ctrl Is MSForms.CheckBox Then
         If ctrl.Value = True Then
          ' ici que bloque'
          'comme récupèrer dans une variable les captions séparés avec "/"'
         End If
      End If
   Next ctrl
Pour info, toutes les checkboxs sont dans une frame (frame1).

J'ai voulu utiliser la fonction JOIN mais je n'y arrive pas.

Encore merci.

ps: mes excuses anticipées si je ne réponds pas rapidement (indépendant de ma volonté).
 
Dernière édition:
Solution
Une fonction qui serait utilisable pour différents Frame à spécifier en paramètre :
VB:
Private Function CkxFrame(ByVal Frm As MSForms.Frame) As String
   Dim Ctrl As MSForms.Control, N As Integer, T() As String
   ReDim T(1 To Frm.Controls.Count)
   For Each Ctrl In Frm.Controls
      If TypeOf Ctrl Is MSForms.CheckBox Then
         If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
         End If
      Next Ctrl
   If N < 1 Then Exit Function
   ReDim Preserve T(1 To N)
   CkxFrame = Join(T, "/")
   End Function
Bonjour.
VB:
Dim Ctrl As MSForms.Control, N As Integer, T() As String
ReDim T(1 To FrmCat.Controls.Count)
For Each Ctrl In FrmCat.Controls
   If TypeOf Ctrl Is MSForms.CheckBox Then
      If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
      End If
   Next Ctrl
ReDim Preserve T(1 To N)
Résultat = VBA.Join(T, "/")
 
Bonjour.
VB:
Dim Ctrl As MSForms.Control, N As Integer, T() As String
ReDim T(1 To FrmCat.Controls.Count)
For Each Ctrl In FrmCat.Controls
   If TypeOf Ctrl Is MSForms.CheckBox Then
      If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
      End If
   Next Ctrl
ReDim Preserve T(1 To N)
Résultat = VBA.Join(T, "/")
Bonsoir @Dranreb 😉,

Le résultat est exactement ce que j'attendais.
J'ai utilisé une sub en déclarant Résultat en variable global.
Chose que je ne maîtrise pas bien et comment en faire une fonction.
VB:
Dim Résultat

Sub Categorie()
Dim Ctrl As MSForms.Control, N As Integer, T() As String
ReDim T(1 To FrmCat.Controls.Count)
For Each Ctrl In FrmCat.Controls
   If TypeOf Ctrl Is MSForms.CheckBox Then
      If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
      End If
   Next Ctrl
ReDim Preserve T(1 To N)
Résultat = VBA.Join(T, "/")
End Sub

Merci beaucoup.

Bonne soirée.
 
Une fonction qui serait utilisable pour différents Frame à spécifier en paramètre :
VB:
Private Function CkxFrame(ByVal Frm As MSForms.Frame) As String
   Dim Ctrl As MSForms.Control, N As Integer, T() As String
   ReDim T(1 To Frm.Controls.Count)
   For Each Ctrl In Frm.Controls
      If TypeOf Ctrl Is MSForms.CheckBox Then
         If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
         End If
      Next Ctrl
   If N < 1 Then Exit Function
   ReDim Preserve T(1 To N)
   CkxFrame = Join(T, "/")
   End Function
 
Une fonction qui serait utilisable pour différents Frame à spécifier en paramètre :
VB:
Private Function CkxFrame(ByVal Frm As MSForms.Frame) As String
   Dim Ctrl As MSForms.Control, N As Integer, T() As String
   ReDim T(1 To Frm.Controls.Count)
   For Each Ctrl In Frm.Controls
      If TypeOf Ctrl Is MSForms.CheckBox Then
         If Ctrl.Value Then N = N + 1: T(N) = Ctrl.Caption
         End If
      Next Ctrl
   ReDim Preserve T(1 To N)
   CkxFrame = Join(T, "/")
   End Function
Merci beaucoup. Oui une fonction réutilisable. C'est parfait pour moi.

Bonne soirée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour