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.

4 réponses

m@rina Messages postés 25787 Date d'inscription   Statut Contributeur Dernière intervention   11 507
 
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 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
m@rina Messages postés 25787 Date d'inscription   Statut Contributeur Dernière intervention   11 507
 
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 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