XL 2010 Sélection avec Checkbox

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

  • testselction.xlsm
    23.2 KB · Affichages: 10

Dranreb

XLDnaute Barbatruc
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
 

jmfmarques

XLDnaute Accro
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:

Staple1600

XLDnaute Barbatruc
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)
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat