CheckBox archiver plage particulière

Fermé
copy/paste Messages postés 4 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009 - 21 juil. 2009 à 14:02
copy/paste Messages postés 4 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009 - 21 juil. 2009 à 21:38
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.

4 réponses

m@rina Messages postés 20866 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 18 septembre 2024 11 325
21 juil. 2009 à 15:57
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
copy/paste Messages postés 4 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009
21 juil. 2009 à 16:33
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
m@rina Messages postés 20866 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 18 septembre 2024 11 325
21 juil. 2009 à 17:06
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
copy/paste Messages postés 4 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 23 juillet 2009
21 juil. 2009 à 21:38
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