CheckBox archiver plage particulière

copy/paste Messages postés 5 Statut Membre -  
copy/paste Messages postés 5 Statut Membre -
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. m@rina Messages postés 27633 Date d'inscription   Statut Modérateur Dernière intervention   11 565
     
    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
  2. copy/paste Messages postés 5 Statut Membre
     
    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
  3. m@rina Messages postés 27633 Date d'inscription   Statut Modérateur Dernière intervention   11 565
     
    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
  4. copy/paste Messages postés 5 Statut Membre
     
    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