20 Checkbox et recuperer les infos

ConsultantJP

XLDnaute Occasionnel
Bonjour à tous, et désolé pour mon titre bidon.

J'ai 20 checkbox, et j'ai limité le cochage à seulement 4.

Je souhaiterai en faite recuperer les captions des 4 checkbox cochés.

Type : Resultat1 , Resultat2, Resultat3,Resultant4 ayant pour valeur les captions des chkbox cochés.

J'espere avoir été clair car je suis un peu dans la paté ce matin :p

Merci à tous !
 

Pierrot93

XLDnaute Barbatruc
Re : 20 Checkbox et recuperer les infos

Bonjour,

Sans plus de précision.... regarde le code ci-dessous, pour des contrôles placés sur un USF, à utilisé dans le module de ce même USF :

Code:
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If TypeName(Ctrl) = "CheckBox" Then
        If Ctrl.Value = True Then Range("a65536").End(xlUp).Offset(1, 0).Value = Ctrl.Caption
    End If
Next Ctrl

bon après midi
@+
 

ConsultantJP

XLDnaute Occasionnel
Re : 20 Checkbox et recuperer les infos

Bonjour Pierrot, je me suis sans doute mal expliqué.

J'ai un USF qui possede 20 checkbox.

J'ai bloqué le fait que plus de 4 checkbox soit cochés simultanement.

A la validation, je souhaiterai envoyer les infos vers une base access , ainsi pour envoyer les infos j'ai besoin d'avoir en memoire les captions des 4 checbox cochés.

ais été pluis clair ?

merci
 

Pierrot93

XLDnaute Barbatruc
Re : 20 Checkbox et recuperer les infos

Re

modifie peut être comme suit alors, sur les premières lignes d'un module standard, une variable "public" :

Code:
Option Explicit
Public t() As String

dans le module de ton USF :

Code:
Dim Ctrl As Control, i As Byte
For Each Ctrl In Me.Controls
    If TypeName(Ctrl) = "CheckBox" Then
        If Ctrl.Value = True Then
            ReDim Preserve t(0 To i)
            t(i) = Ctrl.Caption
            i = i + 1
        End If
    End If
Next Ctrl

tes "caption" sont dispo dans un tableau virtuel que tu peux ensuite utiliser dans ton code d'exportation vers access...

bonne soirée
@+
 

ConsultantJP

XLDnaute Occasionnel
Re : 20 Checkbox et recuperer les infos

Bonjour Pierrot,

Malheursement le code ne fonctionne pas , bug au niveau de cette ligne : ReDim Preserve t(0 To i)

J'ai l'erreur variable non défini avec ma variable T est bien defini en public comme tu m'a dit....
 

ConsultantJP

XLDnaute Occasionnel
Re : 20 Checkbox et recuperer les infos

Re bonjour,

J'ai fait la modif en envelant T en variable public mais en la mettant directement en variable dans le code et ça fonctionne nickel. Je n'ai pas besoin de la laisser en variable public.

Un grand merci pour ton aide.

Juste une derniere choise en faite j'ai mis des msgbox pour vérifer le fonctionnement;

MsgBox t(1)
MsgBox t(2)
MsgBox t(3)
MsgBox t(4)

Etant donnée que je n'ai coché que 3 cases forcement ça bug sur la 4eme, comment puis gérer cela ? j'ai fait une tentative iserror(T(4)) mais cela n'a pas marcher
 

Lii

XLDnaute Impliqué
Re : 20 Checkbox et recuperer les infos

Salut,

autre code (indépendamment du nombre de cases cochées*):
Code:
Private Sub CommandButton1_Click()
  Dim I As Byte, Rep As String
  For I = 1 To 20
      If Me.Controls("Checkbox" & I) Then
          Coche(I) = Me.Controls("Checkbox" & I).Caption
          Rep = Rep & Coche(I) & Chr(10) 'pour affichage MsgBox
      End If
  Next
  MsgBox Rep 'pour contrôle
End Sub
avec la déclaration Public Coche(20) dans un Module.
Avec la proposition de Pierrot93 ;), essaie
Code:
Private Sub CommandButton1_Click()
Dim Ctrl As Control, i As Byte, Rep as String
For Each Ctrl In Me.Controls
    If TypeName(Ctrl) = "CheckBox" Then
        If Ctrl.Value = True Then
            [B]i = i + 1[/B]
            ReDim Preserve T(i)
            T(i) = Ctrl.Caption
            Rep = Rep & T(i) & Chr(10) 'pour affichage MsgBox
        End If
    End If
Next Ctrl
MsgBox Rep 'pour contrôle
End Sub
.
avec la déclaration "Public T() as String" dans un Module.
Comment fais-tu pour fixer la limite de 4 ?
 

Pièces jointes

  • USFCasesCochées2.zip
    12.2 KB · Affichages: 47

ConsultantJP

XLDnaute Occasionnel
Re : 20 Checkbox et recuperer les infos

Bonjour Lii et merci pour ta réponse, je vais essayer ton code.

Pour limiter le nombre de checkbox coché j'ai utilisé cette methode pour chq case.

Code:
Private Sub CheckBox6_Click()

    Select Case CheckBox6.Value
    Case "Vrai"
        nberreur = nberreur + 1
    
    Case Else
        nberreur = nberreur - 1
    
    End Select
        
   If nberreur = 5 Then
   CheckBox6 = False
   
        MsgBox "Vous ne pouvez pas avoir plus de 4 motifs"
End If
End Sub

avec une variable public pour nberreur...

cela fonctionne très bien !!
 

Discussions similaires

Statistiques des forums

Discussions
312 152
Messages
2 085 797
Membres
102 978
dernier inscrit
bkarbet