Checkbox

Signaler
Messages postés
3
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
16 mai 2006
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour,
nouveau venu dans la programmation j'aurais besoin d'un peu d'aide.
Oh rassurez vous 3 fois rien.
Je suis prof et je voudrais créer un classeur avec des checkbox qui me permettront de pouvoir calculer une notes.
Pour le moment j'arrive a affecter une note si la checkbox est cocher ou pas avec ces lignes de commandes:

Private Sub CheckBox1_Click()
If CheckBox1 = False Then
Range("h5").Value = 0
Else
Range("h5").Value = 1
End If
End Sub
Ce qui je n'arrive pas à faire c'est automatiser la valeur du "Range" en fonction de la position de la checkbox.
Si je veux rajouter une colonne je dois modifier manuellement les valeurs des "Range" se trouvant apres.
De plus comment faire pour qu'une fois la ligne de mon eleve codée je puisse recopier le code dans les lignes suivantes de maniere automatique (sans modifier manuellement la valeur Range) ?
Merci pour votre aide

7 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bonjour,

Ce qu'il nous faudrait c'est un exemple (où sont placés ces données dans les cellules) et comment cela pourrait évolué (si des données supp sont rentrées, sont-elles en ligne ou en colonne)

Mortalino
0
Messages postés
50
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
15 mai 2006

Salut

peut etre qu'il faidrait penser en cellules afin de pouvoir mettre des indices:



range("h5") c'est pareil que

cells(5,"h")



dans ce cas on peut incrémenter



for i= 1 to 5

If CheckBox1 = False Then

cells( 5, i).value = 0

else

cells( 5, i).value = 1

next i



si je peux aider
0
Messages postés
3
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
16 mai 2006

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> Re-bonjour,
desole pour le retard dans la réponse:

Voici le programme se trouvant dans la checkbox en B4
Private Sub CheckBox1_Click()
If CheckBox1 = False Then
Range("b4").Value = 0 (valeur des points si la reponse est fausse)
Else
Range("b4").Value = 2 (valeur des points si la reponse est juste)
End If
End Sub
Si l'eleve a juste alors la checkbox est cochée et sa note augmente de 2 points
Au contraire si c'est faux ca note reste a 0
Mon probleme est que:
Si j'insere une colonne entre A et B le programme ci dessus n'est plus valable puisqu'il ne prend en compte que la valeur de la checkbox en B4 et qu'elle se trouvera en C4.
Donc j'aimerais un programme ou l'instruction qui me permettrai de prendre en compte la position de la checkbox et non une valeur que je lui aurai donner.
Autrement dit si je prend ma checkbox et que je la trimballe jusqu'a la colonne Z4 je voudrais que le prog prenne la nouvelle position automatiquement sans intervention de ma part.
J'espere que ce suplement d'info pourra vous servir
Merci

</v:shapetype>
0
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Désolé mais je ne vois pas l'image.
Je pense que pour résoudre le problème il faudrait que tu nommes la cellule de destination.

Si actuellement la cellule c'est B4, en haut à gauche, à l'intersection des en-têtes de Lignes et de Colonnes, tu as "B4" d'indiqué.
Il suffit de le remplacer par un nom et d'appuyer sur "Entrée" (ex: NoteEleve)
Puis, pour tout code lié à la cellule "B4", au lieu de dire
Range("b4").Value, il faudra mettre Range("NoteEleve").Value.

Si tu insères des colonnes, il n'y aura plus de problèmes.

@ ++
Mortalino
0
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Suite à ton MP :

Si tu as 30 élèves, au lieu de renommer les cellules "NoteEleve", il faut mettre NoteEleve1 au lieu de B4, NoteEleve2 au lieu de B5 etc...

Après tu peux gérer tes cellules en boucle comme une cellule normale

For i = 1 to 30
Range("NoteEleve" & i).Select
Next i

Pour cet exemple, B4 va se sélectionner, puis B5 etc...

Maintenant n'hésite pas à expliquer avec un max de renseignements ce que tu veux faire exactement, on devrait te trouver un code qui va bien.

++
Mortalino
0
Messages postés
3
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
16 mai 2006

re bonjour et desole de mettre autant de temps ;o)
Je vais reprendre pas a pas ma demarche:
j'ai un tableau dans lequel je veux installer des checkbox (l'endroit importe peu). Ces checkbox auront pour tache de participer a la notation d'un eleve en fonction d'un bareme que j'aurais etabli et qui serais implemanté dans le prog de la checkbox.
Pour creer le prog je double click sur la checkbox et la son num apparait comme pour le programme suivant:
Private Sub CheckBox1_Click()
If CheckBox1 = False Then
Range("h5").Value = 0
Else
Range("h5").Value = 1
End If
End Sub

Ce que j'aimerais faire c'est pouvoir ecrire un prog qui me permette
1-de ne pas tenir compte de l'emplacement de la checkbox (une sorte de commande qui prend en compte l'endroit ou se trouve la checkbox programmée)
2-de ne pas tenir compte du range de la checkbox autrement dit qui prend en compte automatiquement la position de la case dans laquelle se trouve la checkbox.
3-qui soit copiable a l'ensemble des checkbox de mon tableau.

J'ai essaye autre chose aussi. Creer une boucle qui fait varier le nom de la checkbox : CheckBox1 puis 2 etc... mais aussi le range de maniere a ce que pour chaque colonne je n'ai besoin que de taper une seule fois le prog. Malheuresement je n'ai pas reussis a cause d'une erreur de synthaxe.

Voila j'espere ne pas avoir saoule avec toutes mes explications
0
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut, là c'est moi qui suis désolé pour le retard.

En fait je pense que le plus simple serait de créer un UserForm (avec la propriété ShowModal = False) cela te permettra de naviguer sur la feuille avec le UserForm affiché.

Dans le UserForm, tu places ton CheckBox.
Ensuite, au lieu de dire Range("h5").Value, vu que la cellule peut varier, avant de cliquer sur le CheckBix, sélectionne la cellule où tu souhaites faire le traitement de données.

Puis :
Private Sub CheckBox1_Click()
If CheckBox1 = False Then
ActiveCell.Value = 0
Else
ActiveCell.Value = 1
End If
End Sub

@ ++
Mortalino
0