XL 2010 Sélection avec Checkbox

  • Initiateur de la discussion Initiateur de la discussion thunder23
  • 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 !

thunder23

XLDnaute Occasionnel
Bonsoir le forum,

Je viens vers vous car je souhaiterais qu'en sélectionnant une ou plusieurs CheckBox dans un UserForm je puisse insérer du texte (une croix) dans une ou plusieurs cellule.
Je sais comment faire pour sélectionner qu'une seule à la fois mais pas du tout dans cette condition.
Petit exemple de fichier pour mieux comprendre

Merci d'avance 😉
 

Pièces jointes

Bonsoir.
VB:
Option Explicit
Private Sub UserForm_Initialize()
   Dim T(), C As Long
   T = ActiveSheet.[A16:L16].Value
   For C = 1 To UBound(T, 2)
      Me("CheckBox" & C).Value = Left$(T(1, C), 2) = "× "
      Next C
   End Sub
Private Sub CommandButton1_Click()
   Dim T(), C As Long
   T = ActiveSheet.[A16:L16].Value
   For C = 1 To UBound(T, 2)
      T(1, C) = IIf(Me("CheckBox" & C).Value, "× ", "") & Replace$(T(1, C), "× ", "")
      Next C
   ActiveSheet.[A16:L16].Value = T
   Me.Hide
   End Sub
 
Bonjour
Le code montré par Dranreb, que je salue, me permet de "voir" sans ouvrir le classeur joint (ce que je fais jamais).
Voici (autre manière) ce que j'aurais écrit :

VB:
Private Sub UserForm_Activate()
toto "in"
End Sub
Private Sub CommandButton1_Click()
toto "out"
End Sub

Private Sub toto(mode As String)
   Dim toto As Range
   Set toto = Range("A16:L16")
   Application.ScreenUpdating = False
   Select Case mode
     Case "in"
       For k = 1 To 12
        Controls("checkbox" & k).Value = Left(toto(k).Value, 1) = "X"
       Next
     Case "out"
       For k = 1 To 12
         If Controls("checkbox" & k).Value = True Then
            If Left(toto(k).Value, 1) <> "X" Then toto(k).Value = "X " & toto(k).Value
         Else
           toto(k).Value = Replace(toto(k).Value, "X ", "")
         End If
       Next
       Unload Me
     End Select
     Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Bonjour le fil, thunder23, Dranreb, jmfmarques

Jamais deux sans trois 😉
VB:
Option Explicit
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To 12
Me("CheckBox" & i) = InStr(Cells(16, i), "x ") > 0
Next
End Sub
Private Sub CommandButton1_Click()
Dim i&
For i = 1 To 12
Select Case Me("CheckBox" & i)
Case True
Cells(16, i) = Format("1/" & Me("CheckBox" & i).Tag, """x ""mmmm")
Case False
Cells(16, i) = Format("1/" & Me("CheckBox" & i).Tag, "mmmm")
End Select
Next
Me.Hide
End Sub
Pré-requis: "tagguer" les CheckBox de 1 à 12
(cd fenêtre Propriétés quand un CheckBox est sélectionné sur l'userform)
 
- 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

Discussions similaires

Réponses
14
Affichages
332
Réponses
3
Affichages
177
Réponses
6
Affichages
434
Retour