DATAGRID + CHECKBOX

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 - 1 avril 2008 à 16:12
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013 - 7 janv. 2013 à 15:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46256-datagrid-checkbox

nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
7 janv. 2013 à 15:50
Bonjour,
petite question
ce if fait quoi exactement
If Not ChkboxArray(0).Container Is dgTest.Container Then
CalcContainerOffset obj, OffsetX, OffsetY
End If
On Error Resume Next
quand j'implemente cet exemple dans mon form, il entre pas dans le if et saute directement vers
Resume ExitPoint
Solomein Messages postés 30 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 2 août 2010
24 févr. 2010 à 12:39
Merci beaucoup pour ce code!!! Je voulais savoir au passage si il était possible d'afficher le texte correspondant aux cases cochées (dans le datagrid) à l'intérieur de plusieurs textbox qui apparaitraient dans un autre form?
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
17 avril 2008 à 15:37
j'avais mis cette ligne en commentaire parce que je ne modifie pas la hauteur de mes lignes donc mes trucs etaient deja centrer...
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
14 avril 2008 à 01:13
Salut Chrysostome,
Si si, la table est mise à jour grace à :
Private Sub cbTest_Click(index As Integer)
Dim fr As Long
On Error Resume Next
fr = dgTest.FirstRow
With adoTemp.Recordset
.Filter = "LineID='" & index + fr & "'"
.Fields("Include").Value = cbTest(index).Value
.UpdateBatch
.Filter = "LineID<>''"
.Resync
End With
dgTest.FirstRow = fr
'Fin du code que vous devez adapter.
End Sub

@Zen69
Pour le centrage j' ai réactivé le reste de la ligne que tu as mis en commentaire(je ne sais pas pourquoi , dailleur)
OffsetY = OffsetY + (.RowHeight - ChkboxArray(0).Height) / 2

et ça marche !
Chrysostome Messages postés 121 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 14 octobre 2016
13 avril 2008 à 12:44
Salut!
Juste une question:
Ça sert à quoi, si on n'arrive pas à mettre à jour la base?
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 avril 2008 à 16:30
Bonjour,
Pour l' apparence Flat, effectivement ça marche mais j' ai du rééxécuter le programme pour que le changement prend effet.
A la première, ça me donne parfois (et pour quelques uns seulement) -1 ou 0 à la place du CheckBox.

Pour le bout de code en plus, je l' ai supprimé.
'x For i = .VisibleRows To ChkboxArray.UBound
'x '???
'x Next

Quand est-il alors du centrage du CheckBox quand la hauteur de la ligne est redimentionnée ?

A+
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
4 avril 2008 à 15:18
Pour ce qui est de ton apparance flat... chez moi ca marche #1 ... je comprends pas...
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
3 avril 2008 à 20:13
Ensuite , je ne sais pas à quoi sert
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next

Ce bout de code sert à capter la premiere ligne visible en haut de datagrid dans le cas ou le curseur du scroll n'est pas a la premiere... si tu enleve ce code tu risque de mettre a jour la mauvaise ligne en cochant/décochant le checkbox, cepandant en effet j'avais commencer un bout de code que je n'ai pas terminé. Je l'enleverai quand je vais apporté la correction de mon dernier commentaire.
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
3 avril 2008 à 20:09
pour le loop ... c'est mon erreur désolé... pour ce qui est du flat je ne te suis pas mais bon j'apporterai au moins la correction du loop manquant...
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 avril 2008 à 23:28
Ah ! une dernière chose.
Si je change la propriété Apparence du CheckBox en Flat,
celui-ci n' apparait pas dans toutes les lignes.A la place j' ai soit 0 soit -1 selon la valeur du champ.
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 avril 2008 à 23:23
Bonsoir,
Apparament ça fonctionne.
Il fallait juste ajouter un Loop dans
Do While Not (obj.Container Is obj.Parent)
Set obj = obj.Container
If Not (obj Is Nothing) Then
OffsetX = OffsetX + obj.Left
OffsetY = OffsetY + obj.Top
If obj.BorderStyle = 1 Then '' fixed single
If obj.Appearance = 1 Then '' 3d
OffsetX = OffsetX + 30
OffsetY = OffsetY + 30
Else
OffsetX = OffsetX + 15
OffsetY = OffsetY + 15
End If
End If
End If
If (TypeOf obj Is Form) Or (TypeOf obj Is MDIForm) Then Exit Do

lOOP '>>ICI

End Function

Ensuite , je ne sais pas à quoi sert
For i = ChkboxArray.UBound + 1 To .VisibleRows - 1
Load ChkboxArray(i)
ChkboxArray(i).Width = 190
ChkboxArray(i).Height = 190
Next
For i = .VisibleRows To ChkboxArray.UBound
'???
Next

'Sûrement un oubli.Mais un oubli de quoi ?

Ensuite , le RowHeight n' est pas pris en compte.
J' ai redimentionné la hauteur des lignes, le CheckBox reste suspendu en haut.

Mais dans l' ensemble, c' est bien.
Je ne met pas de note pour l' instant.

A+
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
1 avril 2008 à 16:12
Si votre grille de données ne se remplie pas, veuillez modifié le path de la db access dans le adoTemp.

J'attends vos commentaires.
Rejoignez-nous