CheckBox archiver plage particulière

Bonjour,

Vous avez droit à un message d'un débutant de vba (expérience 3 jours LOL) :

J'ai créer un Useform avec plus d'un centaine de CheckBox. Voici ce que je veux faire : a chaque checkbox coché, mettre la valeur "1" dans une cellule. A ce niveau la ce n'est pas un pb car si ca marche pour 1, ca marchera pour les autres.

Pour éviter de mettre un code pour chaque checkbox (ca va etre tres long sinon lol), y a t-il un code qui groupe les checkbox et reference chaque checkbox à une cellule relative à partir d'une plage défini. (C14:Z44) comme un loop par ex (sur userform ? sur checkbox?)

Private Sub CommandButton1_Click()

'Figer l'affichage
Application.ScreenUpdating = False

SheetActivate.Select
Range("C14").seleect

If CheckBox1.Value = True Then
C14 = "1"
Else
C14 = "-"
End If

Me.CheckBox1.Value = ""
End Sub

Merci d'avance pour vos réponses.
Configuration: Windows Vista Internet Explorer 7.0

4 réponses

  1. Modérateur
    Bonjour,

    Supposant que tes cellules commencent à A1 :

    For nombre = 1 To 100
    If Controls("checkbox" & nombre).Value = True Then
    Range("A" & nombre).Value = 1
    End If
    Next
    End Sub


    m@rina
    0
    1. Salut,

      1 : Merci pour ta réponse super rapide M@rina.

      Cependant, le code ne fonctionne toujours pas (lol surement du a mon niveau) quand je l'adapte à mon cas. Voici quelques précisions par rapport à mon Code:

      Private Sub CommandButton1_Click()

      Application.ScreenUpdating = False

      ActiveSheet.Select

      Range("C14:C17").Select

      For nombre = 1 To 3
      If Controls("checkbox" & 3).Value = True Then
      Range("C14:C17" & 3).Value = "1"
      End If
      Next
      End Sub

      Je définis une plage de cellule je veux que les checkbox cochés soient enregistrés...Mais ca ne marche pas...

      Merci.
      0
      1. Modérateur
        Re...

        Si tu changes tout le code que je t'envoie, ça ne sert à rien !

        Range("C14:C17" & 3).
        => ça ne veut rien dire

        If Controls("checkbox" & 3).Value = True Then 

        ça parle de la Checkbox3 uniquement...

        Si j'ai mis une variable en boucle, c'est pour l'utiliser... Si tu remets à chaque fois le numéro 3, ça ne bouclera pas sur toutes tes checkboxes !

        et
        ActiveSheet.Select 
        Range("C14:C17").Select 

        ça ne sert à rien

        Si tu as besoin de préciser la feuille, tu peux la nommer (comme je l'ai fait dans la macro ci-dessous)

        Dans mon exemple la variable nombre remplace le numéro de la ligne...

        Si ça démarre à la ligne 14, tu auras :

        Private Sub CommandButton1_Click() 
        For nombre = 1 To 3 
        If Controls("checkbox" & nombre).Value = True Then
        Sheets("ma feuille").Range("A" & 13 + nombre).Value = 1
        End If 
        Next 
        End Sub


        m@rina

        0
        1. Hii,

          Merci encore pour le code il fonctionne parfaitement.

          Seulement, il me reste deux questions :

          1) La plage doit elle être défini avant ou dans le code ?

          2) L'enregistrement des "checkbox Value" se fait sur un changement de ligne. Or, ce que je cherche à faire, c'est enregistrer sur un changement colonne.

          ...
          0