Checkbox tableau vba excel

Résolu
guetteur -  
 amigo -
Bonjour,

Je vous demande voter aide afin de pouvoir dans un tableau le nom et la valeur de chaque checkbox. Le code est sous VBA car j'utilise excel.

Je ne sais pas du tout comment je peux sélectionner l'ensemble de mes checkbox à savoir près de 300.

Tout l'aide que vous pourrez m'apporter sera la bienvenue. Merci d'avance.
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. amigo
     
    bonjour,

    je crois avoir trouvé

    CtlChkBox.Name retourne le nom du controle
    CtlChkBox.Object retourne la valeur True si coché, sinon False

    exemple:

    Private Sub CommandButton1_Click()
    Dim CtlChkBox As OLEObject

    For Each CtlChkBox In ActiveSheet.OLEObjects
    If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
    MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
    End If
    Next CtlChkBox

    End Sub

    Salut
    0
    1. guetteur
       
      Merci je vais essayer
      0
  2. guetteur
     
    Vous êtes énorme Merci beaucoup j'ai une message Box qui apparait en m'indiquant le résultat de chaque checkbox.

    Maintenant partie plus délicate comprende le code.
    0
  3. amigo
     
    Il faut maintenant récuperer le nom du checkbox dans une variable et la valeur dans une autre variable

    a la place de
    MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object

    ecrire
    NomChkBox = CtlChkBox.Name
    ValChkBox = CtlChkBox.Object

    et faire quelque chose en fonction du nom et/ou de la valeur.
    if NomChkBox="CheckBox1" then ...

    ou
    if ValChkBox = True then ...
    0
  4. guetteur
     
    moi ce que je suis en train de faire c'est les mettres dans un tableau :

    Dim CtlChkBox As OLEObject
    Dim tabchk(2, 100)
    Dim tabchk2(2, 100)
    Dim tabchk3(2, 100)
    Dim i As Integer
    i = 0

    For Each CtlChkBox In ActiveSheet.OLEObjects

    If TypeOf CtlChkBox.Object Is MSForms.CheckBox Then
    i = i + 1
    MsgBox CtlChkBox.Name & " = " & CtlChkBox.Object
    If CtlChkBox.Object < 101 Then
    tabchk(1, i) = CtlChkBox.Name
    tabchk(2, i) = CtlChkBox.Object
    ElseIf CtlChkBox.Object > 100 And CtlChkBox.Object < 201 Then
    tabchk2(1, i) = CtlChkBox.Name
    tabchk2(2, i) = CtlChkBox.Object
    ElseIf CtlChkBox.Object > 200 And CtlChkBox.Object < 301 Then
    tabchk3(1, i) = CtlChkBox.Name
    tabchk3(2, i) = CtlChkBox.Object

    End If

    Next CtlChkBox
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. guetteur
     
    pour indication est ce que tu aurais le début d'une explication pour me dire pourquoi il ne commence pas par me donner la checkbox1
    0
  7. amigo
     
    Re,

    Le pense que le balayage des controles se fait dans l'ordre de la création, mais je ne suis pas sur. En tout cas c'est ce que j'avais chez moi. Si tu as supprimé un controle pour le créer ensuite avec le meme nom, l'ordre a changé, ce qui expliquerait que la CheckBox1 ne soit pas listé en premier.
    0